学习:ICMP协议

ICMP协议通过IP协议发送的,IP协议是一种无连接的,不可靠的数据包协议,属于网络层协议。

ICMP作为IP的上层协议在工作,如下图可以看出来

默认ping 发4个请求报文,接收到4个应答报文,总共8条

ICMP报文结构:

前14个字节为以太网帧头

后20个字节为IP帧头

然后就是ICMP信息头,再后面就是ICMP数据

如下图所示

学习:ICMP协议_第1张图片

ICMP信息头和ICMP数据如下:

请求包:

学习:ICMP协议_第2张图片

响应包:

学习:ICMP协议_第3张图片

关于 Time to live(生存时间):

标识IP数据包还能生存多久,根据操作系统不同,TTL默认值不同,每次经过一个三层设备如路由器,TTL就会减一,当TTL为0的时候,还是没有传送到目的主机,那么就自动丢弃该数据包。

如ping ubuntu系统,结果如下:

学习:ICMP协议_第4张图片

默认情况下:
Linux系统的TTL值为64或255
Windows NT/2000/XP系统的TTL值为128
Windows 98系统的TTL值为32
UNIX主机的TTL值为255

那么可以初步判断为对方系统linux,并且在网络传输中经过了13个路由,也不一定准确,可能目标是windows经过75个路由,同样是51

tracert跟踪路由命令tracert baidu.com

学习:ICMP协议_第5张图片

tracert原理:

对于第一个路由,IP协议的TTL字段属性设置为1,到第一个路由-1=0就回来了,因此获取到了第一跳路由信息。

对于第二个路由,TTL = 2,到第二个路由器TTL减到0,转发信息回主机获取。

对于第三个路由,TTL = 3,以此类推。

你可能感兴趣的:(学习:ICMP协议)