ICMP协议通过IP协议发送的,IP协议是一种无连接的,不可靠的数据包协议,属于网络层协议。
ICMP作为IP的上层协议在工作,如下图可以看出来
默认ping 发4个请求报文,接收到4个应答报文,总共8条
ICMP报文结构:
前14个字节为以太网帧头
后20个字节为IP帧头
然后就是ICMP信息头,再后面就是ICMP数据
如下图所示
ICMP信息头和ICMP数据如下:
请求包:
响应包:
关于 Time to live(生存时间):
标识IP数据包还能生存多久,根据操作系统不同,TTL默认值不同,每次经过一个三层设备如路由器,TTL就会减一,当TTL为0的时候,还是没有传送到目的主机,那么就自动丢弃该数据包。
如ping ubuntu系统,结果如下:
默认情况下:
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
tracert原理:
对于第一个路由,IP协议的TTL字段属性设置为1,到第一个路由-1=0就回来了,因此获取到了第一跳路由信息。
对于第二个路由,TTL = 2,到第二个路由器TTL减到0,转发信息回主机获取。
对于第三个路由,TTL = 3,以此类推。