為什麼Wireshark數據包中長度小於乙太網數據幀的最小長度

前言

最近在看ARP相關內容,但是在Wireshark抓包的時候發現數據包長度是42位元組,記得以前看過乙太網幀的最小長度是64位元組,難道以前學習錯了?而且還有細心的網友提出來了,為什麼是42位元組,今天深入學習了下乙太網的數據結構來探個

Wireshark抓到了長度為42位元組的數據包

從上面的截圖可以看到,我截屏的Wireshark的數據包確實時42位元組。

乙太網的幀結構

我們再來看看關於乙太網數據幀的數據欄位的描述:

也就是說默認的如果長度不足64位元組需要自動填充的。這個才是我們學習的乙太網數據幀的最小長度啊,那麼我之前Wireshark捕獲到的數據包為什麼是42位元組呢?雖然填充位元組不計入數據長度欄位,但是至少Wireshark能捕捉到啊,我一直認為Wireshark的捕捉數據包就是完整的網卡中乙太網欄位的內容呢。

Advertisements

Wireshark的捕獲數據包CPAP

在網上轉了下,原來已經有人提出這個問題了,根本原因在於:Wireshark捕獲的數據包CPAP(Capture Pacter )工作在鏈路層:

而網卡工作在物理層和數據鏈路層的MAC子層,也就是說Wireshark的CPAP是工作在網卡上層,而具體的數據填充是網卡完成的。Wireshark抓到的數據幀還沒有下發到網卡層,因此數據長度可能64位元組。

Advertisements

你可能會喜歡