ICMP协议
ping是基于ICMP协议工作的。ICMP全称Internet Control Message Protocol,就是互联网控制报文协议。
其报文有不同的类型,主要是:查询报文类型,差错报文类型。
查询报文类型:
ping就是查询报文,是一种主动请求,并且获得主动应答的ICMP协议。
对ping的主动请求,进行网络抓包,称为ICMP ECHO REQUEST。同理主动请求的回复,称为ICMP ECHO REPLY。
ping还会记录发送请求的时间,用于计算延迟时间。
差错报文类型:
就是用来检测网络中存在的具体的问题是什么。终点不可达为3,源抑制为4,超时为11,重定向为5。
ping:查询报文类型的使用
ICMP是工作在IP层的协议。其通信过程如下:
如果跨网段的话,还会涉及网关的转发、路由器的转发等等。但是对于ICMP的头来讲,是没什么影响的。会影响的是根据目标IP地址,选择路由的下一跳,还有每经过一个路由器到达一个新的局域网,需要换MAC头里面的MAC地址。
Traceroute:差错报文类型的使用
Traceroute的第一个作用就是故意设置特殊的TTL,来追踪去往目的地时沿途经过的路由器。通过这个过程就能够知道此条路径经过的路由器数目。
Traceroute还有一个作用是故意设置不分片,从而确定路径的MTU。通过这个过程就能够知道此条路径中所能使用的最窄的数据包宽度,从而在通信的时候,控制数据包长度不大于此值。