在 Wireshark 中捕获 ping 命令时显示的“数据”中的字符序列是什么?

在 Wireshark 中捕获 ping 命令时显示的“数据”中的字符序列是什么?

在我捕获的所有 ping 数据中,我的abcdef...“数据”中都有这个序列,它有什么意义吗?还是只是虚拟数据?除了测量往返时间外,它还有其他用途吗?

在此处输入图片描述

答案1

这只是填充数据包,使其达到 64 字节(十六进制 40)的最小以太网帧大小。

由于 ICMP 段小于 64,因此需要填充以满足最小值。只需添加字母表即可,直到达到最小值。

参见维基百科 以太网帧

答案2

有效载荷不一定只是填充。事实上,有效载荷甚至可以在一定程度上用于对操作系统进行指纹识别。在这种情况下,我敢打赌,ping 是从 Windows 机器上运行的,原因有两点:

  1. 有效载荷中缺少时间戳
  2. 标识符为 1

与基于 Mike Muuss 的 ping(FreeBSD、Mac OSX 等)相比,其中:

  1. 有效载荷的前 8 个字节代表时间戳(struct tv32)
  2. 标识符是ping程序本身的进程 ID 的低 16 位。

或者在 Solaris 上,时间戳是一个“struct timeval”,其中秒值可能有一个 64 位秒字段。其他操作系统也可能改变有效负载。

作为参考,你可以阅读关于一个旧的 Wireshark Bug 的评论,即错误 5770

当然,ICMP 有效负载还有其他用途,例如用于 ICMP 隧道。这里有一篇讨论此问题的文章,标题为:Ping 功率 - ICMP 隧道

无论如何,ICMP 有效负载不一定只是填充。

相关内容