ping命令本质

嵌入式产品开发中使用网络功能时常要使用PING命令来测试网络连接是否正常。那么发送PING命令时,电脑发送的到底是什么数据呢?

例如ping 192.168.1.179

电脑会先发送一个ARP数据包

clip_image002

FF FF FF FF FF FF 00 24 1D B8 D8 1D 08 06

是以太网帧的头部,总共14字节,前6个字节为以太网的目的MAC地址,因为开始PING命令时,电脑并不知道IP为179的设备的MAC地址,所以PING命令会先通过广播的方式把ARP请求数据包发送出去,FF FF FF FF FF FF就是广播地址,同一网段上的所有以太网接口都会接收到广播的数据包。00 24 1D B8 D8 1D 08 06是以太网源地址,也就是发送PING命令的电脑的MAC地址。

08 06是帧类型,表示当前是ARP包。

后面的28字节为ARP数据包,各个字段的意思在上图中可以看到。因为电脑现在还不知道179 ip设备的MAC地址,所以接收方以太网地址的数据为00 00 00 00 00.

设备接收到ARP广播包后,把自己的MAC地址返回给电脑。电脑就会把IP地址192.168.1.179和179返回的MAC地址对应起来,放到ARP缓存表。

接下来ping命令不再发送ARP包,而是发送ICMP包。不好截IP141的ARP请求包,IP141的ARP请求包和IP179类似。

下图是电脑发送给IP192.168.1.141的ICMP包。

clip_image004

00 55 E1 21 10 63 00 24 1D B8 D8 1D 08 00

这14个字节是以太网帧的首部,共14字节。

00 55 E1 21 10 63就是IP 141设备的MAC地址。

00 24 1D B8 D8 1D是发送ping命令电脑的MAC地址

08 00表示当前是IP数据包,ICMP协议是IP协议的一种。

ICMP数据包各个字段的定义见上图。

如果电脑停止和IP 192.168.1.141的设备通讯。超过10分钟后,电脑的ARP缓存表会丢掉IP141的MAC地址。此时如果再PING 192.168.1.141,会再发送ARP广播请求命令,得到ip141的MAC地址后,再不断发送ICMP命令。

发表评论

电子邮件地址不会被公开。 必填项已用*标注