为了检测网络的连通性,我们一般使用ping这个工具。如我们要测试设备是否能访问地址"8.8.8.8",一般的做法是开一个dos窗口,然后执行ping的命令。
从ping的执行结果来查看网络是否通,比如上面截图表示发送了4个报文后收到了4个报文,这样就可以证明当前设备达到“8.8.8.8”这个地址是通的(即使中间丢了部分包也可以说明地址是可达的)。
ping工具使用的其实是icmp的协议的一种,ICMP的全称是Internet Control Message Protocol,即Internet控制报文协议,ICMP可以用来传递网络是否可达,端口是否可达,主机是否可达等各种信息。
ping工具使用的是ICMP协议中type为echo request和echo reply的两种type。
使用wireshark抓包工具可以抓到这两种报文,这两种报文是成对出现的。
econ request的封包细节如下:
其type字段为8,code为0,这个报文中的sequence与echo reply的协议字段要匹配,ping这个tool会检测这个字段是否一样,一样的才表示是对应的reply。
echo reply的封包细节如下。
从ping reply可以看到其sequence字段和request是一样的。
总结,ping这个tool很好用,但其实其使用到的协议也很简单,只使用了ICMP协议的两个type。