在 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 Power - ICMP 隧道

無論如何,ICMP 有效負載不一定只是填充。

相關內容