Python

數據包碎片混亂

  • December 22, 2016

我在 Python 中使用 dpkt,試圖解碼 PPPoE——程序執行良好,直到我注意到封裝 IP 數據包中的偏移量始終為 0,即使數據包明顯碎片化。

擷取

可以看出,伺服器正在發送 1492 字節的數據包(我想是因為 PPPoE 封裝),最後一個數據包是 1365。但是偏移量始終為 0 - 它不應該增加嗎?

當然我懷疑我的程序,但我用 Wireshark 檢查了相同的傳輸並得到了相同的結果。

我是否以錯誤的方式解釋了這一點?

不,那些不是碎片。您看到來自伺服器的 1492 字節數據包和返回伺服器的 40 字節數據包(TCP ACK?)。因為它們不是片段,所以偏移量確實總是 0。

Wireshark 會告訴你數據包是否是碎片。如果您顯示來自 Wireshark 的更多詳細資訊,我們可以為您提供有關每個數據包中確切內容的更多資訊。

我建議安裝 tracepath(不是 traceroute)並使用它來檢查所有躍點上的 MTU。如果您不想要分段數據包,請將伺服器上的 MTU 設置為低于躍點路徑上的最低 MTU。

引用自:https://serverfault.com/questions/822344