分享

ping是如何实现的?用wireshark分析,瞬间明白!

 新用户4943bDEZ 2023-10-31 发布于湖南
不管是在windows系统中,还是在linux系统中,网络工程师使用最多的命令,恐怕就是ping命令了。准确的说来,ping命令是一个应用程序,而不是一种协议,它基于ICMP互联网报文控制协议,ping的过程就是ICMP协议工作的过程。
ICMP协议是一种面向无连接的网络层协议,用于传递主机、路由器之间的控制信息,这些控制信息主要分为两类,一是差错通知,二是信息查询。ICMP协议主要消息类型包括响应请求、目标不可达、源点抑制、超时报文和时间戳。

下面我们用wireshark来抓取数据包,看下ping的过程。wireshark可以和华为eNSP软件配套使用,具体可以看华为 eNSP V100R003C00 和 eNSP 设备包大全,来这里一键下载!快捷方便,网络仿真不用愁!

在过滤条件里输入“ICMP”,过滤掉其他无关报文,仅显示ICMP报文。

打开win10自带的ISE命令行窗口,ping腾讯的网址。

Ping使用了ICMP的两种报文类型,一种是请求报文,另外一种是响应报文。这里我们可以看到,抓取了8个数据包。与命令行显示的已发送数据包和已接收包是一致的。

从抓包可以看到,ICMP报文包含在IP数据报中,IP报头在ICMP报文的最前面。一个ICMP报文包括IP报头ICMP报头和ICMP报文数据部分IP报头中的协议字段值为1时,说明这是一个ICMP报文。
我们先来看下,1820和1821两个帧,这是第一个ping包。从上文的图中,可以看出这两个帧左边画有往返箭头,证明帧是连续的。如果出现高延时、丢包的情况,两个帧就不会连续。
IP数据包的长度是60个字节,其中IP报头长度是20个字节,那么ICMP报文的长度就是40个字节。TTL64,从上文命令行窗口,显示的TTL53,说明经过了11个路由节点。IP报头还包含了源IP地址和目的IP地址。

再来看下ICMP报文,ICMP报文长度是40个字节,ICMP报头是8个字节,剩余的32个字节是数据部分。请求报文和响应报文,这两个报文的 type 不一样,8 代表请求,0 代表响应,这从报文提示也可以看出。code 都为 0,表示为回显响应;标示符和序列号都是一样的,表示这两个报文是配对的,一发一收。

从响应报文中,还可以看到响应时间是24.631ms。看下命令行窗口,第一个ping包的时间是24ms,这也是一致的,代表从本机到腾讯服务器的时延时24ms。如果响应超时的话,ICMP数据报将会提示无响应的告警。
从ICMP报文抓包,可以很容易得出ICMP报文的格式:

关于ping的其他知识,可以看TTL、Ping包最大字节数、网络时延、抖动、丢包率,看完瞬间变大神!

用wireshark分析协议系列,请看干货:ARP协议详解、Wireshark抓包分析!建议收藏

END

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多