Skip to content

以 PING 为例,利用 Wireshark 深入理解网络层、数据链路层的工作原理

博客园链接

Wireshark

Wireshark(前称 Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark 使用 WinPCAP 作为接口,直接与网卡进行数据报文交换

官网:https://www.wireshark.org/

下载并安装完成后,打开显示如下界面

1

IP datagram IP 数据报

图解:

2

3

Ethernet V2 frame 以太网 V2 的 MAC 帧格式

Preamble Start of frame delimiter MAC destination MAC source Ethertype Payload Frame check sequence (32‑bit CRC)
7 octets 1 octet 6 octets 6 octets 2 octets 46‑1500 octets 4 octets

中文对照解释

4

注意:Wireshark 抓不到以太网 V2 的 MAC 帧格式中,帧尾 4 字节的 FCS 校验序列,以及帧首 8 字节的前同步码+帧开始定界符

PING

Ping 是工作在 TCP/IP 网络体系结构中应用层的一个服务命令, 主要是向特定的目的主机发送 ICMP(Internet Control Message Protocol 因特网报文控制协议)Echo 请求报文,测试目的站是否可达及了解其有关状态

ping 的用法

5

Wireshark 抓包结果与分析

打开 Wireshark,选择需要抓取的网络,选择开始捕获 Start capture

6

7

现在局域网中有两台电脑,分别是本机和一台手机,在本机打开 cmd

输入ipconfig /all,本机 IP 地址和网卡的 MAC 地址

8

得到本机的 IP 地址:192.168.110.246,MAC 地址:F8-63-3F-90-A1-1E

打开手机,查看手机的 IP 地址和 MAC 地址

9 得到手机的IP地址:192.168.108.95,MAC地址:C2-F7-3D-3E-CB-67

输入ping 192.168.108.95 -t,-t 的意思是直到手动停止之前一直 ping 下去

10

在 Wireshark 中找到捕获的对应 ip 的包

11

双击其中的一条 request 请求,可以看到整个 Packet 格式如下

12

下面我们来分析这段数据,对应之前所说的以太网 V2 的 MAC 帧格式和 IP 数据报

c2 f7 3d 3e cb 67 f8 63 3f 90 a1 1e 08 00 45 00
00 3c a3 7d 00 00 80 01 3a 9d c0 a8 6e f6 c0 a8
6c 5f 08 00 44 bf 00 01 08 9c 61 62 63 64 65 66
67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76
77 61 62 63 64 65 66 67 68 69

Wireshark 抓不到以太网 V2 的 MAC 帧格式中,帧尾 4 字节的 FCS 校验序列,以及帧首 8 字节的前同步码+帧开始定界符

首先分析 MAC 帧

  • 开始的 6 个字节 C2-F7-3D-3E-CB-67,是目的地址,即手机
  • 随后的 6 个字节 F8-63-3F-90-A1-1E,是源地址,即本机
  • 随后的 2 个字节 08 00H,是类型,IPv4 对应的值即 0x0800

接着分析 IP 数据报的首部,固定部分共 20 字节

  • 第 1 个字节为 45H,前 4 位表示版本二进制 0100,即 IP Version4,后 4 位表示首部长度 0101 即十进制 5,而 IP 数据报以 4 个字节为单位,4*5=20,即首部为 20 字节
  • 第 2 个字节为区分服务,00H
  • 第 3、4 个字节为总长度,00 3cH,即 60 个字节

  • 第 5、6 个字节为标识,a3 7dH

  • 第 7、8 个字节的前 3 位为标志位,后 13 位为片偏移,00 00H
  • 第 9 个字节表示生存时间 TTL,80H,单位为跳数,即 128 跳,TTL 的最大值为 2^8-1=255
  • 第 10 个字节为协议,01H 表示 ICMP 协议,具体对照表可见 wikipedia,https://en.wikipedia.org/wiki/List_of_IP_protocol_numbers
  • 第 11、12 个字节为首部校验和,3a 9dH
  • 第 13、14、15、16 个字节为源地址,c0 a8 6e f6H,对应的十进制数为 192.168.110.246,即本机 IP 地址
  • 第 17、18、19、20 个字节为目的地址,c0 a8 6c 5f,对应的十进制数位 192.168.108.95,即手机的 IP 地址

剩下的所有字节都是数据部分,以 ICMP 协议的格式呈现

通过展开 Wireshark 解析的每一项可以很清晰地看出 Packet 的组成

13

使用 Wireshark 可以帮助我们更深入地理解网络层、数据链路层的工作原理

Comments