PING是利用ICMP协议的一求一答来完成目的主机可达性探寻的。而ICMP(Internet网控制协议)素来被称为信使协议,来弥补IP协议在设计上的缺陷。ICMP按功能可以分为:差错报告和查询两类。差错报文用来传递报文网络处理过程中目的不可达,超时等信息。而查询报文的典型代表就是今天要说到的PING请求及应答报文。
PING的原理就是源主机向目的主机发送ICMP请求报文,如果目的主机能够接收便会向源主机返回一ICMP应答报文告诉源主机,该主机目的可达,可以发送信息。而如果连续发送若干ICMP请求(例如5个)还收不到ICMP应答而连续收到time out报文,则源主机认为目的地不可达。利用PING还可以根据返回信息判断网络环境,比如是否存在等价路由,可以根据TTL判断两个站之间的距离等,是否存在不可达路由还是该报文需要被重定向等等。所以PING才成为被如此重视的网络测试协议。
经过ARP协议的地址解析之后,我们在发送ICMP请求报文之前查询ARP高级缓存可以根据目的IP查询到对应的MAC地址,这样便可以发送ICMP请求报文了。首先我们先来看看ICMP协议的报文结构及其封装:
![]() |
转载于:https://blog.51cto.com/simonsec/189215