ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ICMP介绍以及traceroute和ping的实现原理

2021-03-17 23:32:52  阅读:292  来源: 互联网

标签:traceroute 主机 报文 TTL ping IP ICMP 路由器


ICMP介绍

ICMP(Internet Control Message Protocol)用于主机或者路由器报告差错情况和提供有关异常的情况报告,和IP协议同时处于网络层,但是ICMP会使用IP,最终由IP来传输其信息(everything is over ip)

常规ICMP报文格式截图:

主要分为两大类:差错报告报文和询问报文。

ICMP报文类型 类型对应的值 ICMP报文的类型
差错报告报文 3 终点不可达:路由器或者主机发现信息不可达时
11 时间超时(TTL):当路由器收到TTL为1,然后-1后是0,则丢弃数据的同时向源主机发送
12 参数问题
5 改变路由:默认路由器发现有跟好的路由线路
询问报文 8或者0 回送请求或回答
13或者14 时间戳请求或回答

ICMP的差错报告报文中,会把收到的需要进行差错报告的IP的数据提取出来作为ICMP报文的数据部分。

可以看到icmp内部包含了一个完整的IP数据包。

典型的ICMP的应用是trace route 和ping应用,这两个应用直接通过ICMP从而跳过了传输层协议(TCP or UDP)。

ICMP看上去像高层协议,实际上不是,是IP层的协议。

trace route应用

有地方介绍是源主机向目的主机发送不可达的udp报文,然后路由器通过TTL变为0后返回给源主机ICMP报文,但是实际抓包发现trace route给目的主机发送的也是icmp报文。

源主机向目标主机发送ICMP报文:

第一次发送时IP的TTL设置为1,第一个路由器收到后,把TTL减1,丢弃该数据,并且向源主机发送一个超时的ICMP报文(code为11),这样源主机就得到了第二个路由器的IP地址。

第二次发送时IP的TTL设置为2。得到第二个路由器的IP地址。

。。。

一直发送后直到如果收到一个常规的ICMP回答(code为0),则认为找到了最后一个路由器。(如果某次ICMP请求在固定时间内没有返回,则显示超时,继续下一条的路由查找【上图中标红的case】)。

最终的IMCP回答报文,标志着traceroute结束

应答报文截图。

ping应用

ping使用icmp的回送请求和回送应答报文。

抓包

可以看到分别发送了4次request,同时得到了4次reply,和cmd console中展示的效果一致。

回送请求报文示例,type为8。

回送应答示例,type为0,同时返回了耗时15ms,和cmd console里面展示的温和。

标签:traceroute,主机,报文,TTL,ping,IP,ICMP,路由器
来源: https://www.cnblogs.com/Brake/p/14546893.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有