ping是ICMP的一种,是用来检查网络是否通畅或者网络连接速度的命令。
报文长度(98bytes)= 以太网头(14bytes)+ IP头(20bytes)+ICMP头(8)+ ICMP数据内容(56字节)
报文格式
ICMP回显请求报文类型是8(ICMP_ECHO),标识符字段是进程的ID,用于接受应答包的处理,序列号是不断加1,ICMP数据内容选项则包含了发送包时系统的时间。
ICMP回显应答报文类型是1(ICMP_ECHOREPLY),标识符字段是发送进程的ID号,ICMP数据内容保存的是发送请求的时间,ping程序收到ICMP的回显应答包时,获取当前系统时间,然后与回显包中数据内容(发送的时间)相减,算出时间差。
下面是一张wireshark抓到的ping请求报文
下面是模拟简单的ping功能的代码,详细的代码可以查看