wireshark抓包分析ping数据包

时间:2024-03-15 22:37:40

目录

 

1.抓取数据包

2.ping request数据包解析

2.1 ICMP

2.2 传输层

2.3 以太帧

2.3 数据链路层

3. ping reply数据包解析


1.抓取数据包

先用管理员权限打开WireShark应用,并在条件过滤栏输入“icmp”。打开cmd,输入:ping www.baidu.com。

这样我们在命令行中,得到如下的一个显示结果:

wireshark抓包分析ping数据包

wireshark中显示如下的一个结果:

wireshark抓包分析ping数据包

我们以35/36帧为例,来进行数据包的解析。比较这两帧的时间差,可以看到时间差为18.993ms,这个值跟cmd中显示的时间差19ms是可以对应起来的。

2.ping request数据包解析

我们按照TCP/IP四层模型自上而下的方式来分析ping request数据包,因为该数据就是从应用层开始,逐层添加报头来完成的数据包封包的。对端设备接收到后,又一层一层去掉报头,来获取里面的数据。这好像一个包包子和剥洋葱的过程,O(∩_∩)O哈哈~

2.1 ICMP

应用层是直接使用的icmp封包格式,如下图所示。可以看到整个数据包为40个字节。

wireshark抓包分析ping数据包

icmp数据包的结构如下。

wireshark抓包分析ping数据包

各字段的解释如下:

字段

解释

类型

占据一个字节,标识ICMP报文的类型。ICMP报文类型可以分为两大类,分别是取值在1~127之间的差错报文,另一类是取值大于128的信息报文

代码

占据一个字节,与类型字段一起共同标识ICMP报文的详细类型

校验和

是将整个ICMP数据包(包括数据部分)以16位为一个单位采用CRC校验,然后按位取反后的值

下面罗列一些常见的ICMP报文类型:

类型(十进制)

解释

0

回显应答

3

目标不可达,代码字段值为0标识网络不可达,代码字段值为1标识主机不可达,代码字段值为2标识协议不可达

4

源点抑制,通知主机减少数据包流量

5

重定向或改变路由

8

回显请求

9

路由器公告

10

路由器请求

11

超时,代码字段值为0标识传输超时,代码字段值为1标识分段重组超时

17

地址子网请求

18

地址子网应答

可以看到利用wireshark抓取的icmp如下,跟上面的icmp数据包可以对应起来。

wireshark抓包分析ping数据包

2.2 传输层

传输层是增加的IP报文头部,如下图所示,工20个字节。

wireshark抓包分析ping数据包

我们先看一下IP数据包的格式,它包括IP手部和数据部分,数据部分在本例中就是ICMP数据包。

wireshark抓包分析ping数据包

IP头部各字段的解释:

字段

解释

版本

占据4位,IP协议的版本,IPV4的版本为4

首部长度

占据4位,标识IP首部的长度,值范围为20~60

区分服务

占据一个字节

总长度

占据两个字节,标识的是首部和数据的总大小

标识

占据两个字节,当数据报由于长度超过网络的MTU而必须分 片时,这个标识字段的值就被复制到所有的数据报片的标识字段中,等到重组的时候,相同标识符的值的数据报就会被重新组装成一个数据报

标志

占据3位,一般有用的是前面两位,最低为叫做MF,MF=1表示后面还有若干个数据报,MF=0表示后面没有数据报了;中间为DF,DF表示是否可以进行分片,DF=1表示不能进行分片

片偏移

占13位,片偏移就是,在原来的数据报分片以后,该片在原分组中的相对位置,片偏移中的基本单位是8字节,所以,也就是说,只要是分片,每个分片的长度都是8字节的整数倍,最后一个分片不够八字节的一样是填充

生存时间

占据1个字节,标识该数据包最多可以经过多少个路由器

协议

占据1个字节,标识该数据报使用的是什么协议

首部校验和

占据2个字节,只对首部进行校验,因为数据部分由上层来完成校验

源地址

占据4个字节,源IP地址

目的地址

占据4个字节,目的IP地址

从上面的表格可以看出,上面的字段长度加起来正好是20个字节,也就是IP头部的最小长度大小。

如果有其他数据需要放到IP头部,则可以放到可选字段,填充字段是为了保证IP头部满足4字节整数倍的要求增加的字段。

我们再结合wireshark抓取的数据做一下分析:

wireshark抓包分析ping数据包

2.3 以太帧

我们选中以太帧报文(红色方框圈中的地方),则下面有14个字节被选中了(绿色方框圈中的地方)。可以看到圈中的数据分别是:目的地址的mac地址,源地址的mac地址,还有一个值为0x8000的数据。

wireshark抓包分析ping数据包

我们先看一下以太帧的数据报格式:

wireshark抓包分析ping数据包

字段

解释

目的地址

占据6个字节,标识目标设备(路由器)的mac地址

源地址

占据6个字节,标识源设备的mac地址

类型

占据2个字节,标识上层协议的类型,常见的:0x8000标识IPV4,0x806标识ARP,0x0835标识RARP

 

这个0x8000表示的就是上层协议类型为ipv4

wireshark抓包分析ping数据包

2.3 数据链路层

双击第35帧数据包,可以得到如下的显示结果。点击数据链路层报文(红色方框标注的地方),可以看到整个74字节的报文内容(绿色方框圈起来的地方)就被选中了,这说明ping request数据链路层报文一共有74个字节。

wireshark抓包分析ping数据包

双击该行,可以展开看到里面更详细的内容:

wireshark抓包分析ping数据包

3. ping reply数据包解析

reply数据包跟request包没有大的区别,在这里就不用再次分析了。

如有错误,请帮忙留言指出,感谢~