天天看點

關于wireshark中“TCP segment of a reassembled PDU”

這篇應該是網上解釋wireshark info欄中"TCP segment of a reassembled PDU"比較合理的一篇,以下是正文。

為什麼大家看到這個以後總是會往MSS,TSO上聯系呢?也許第一個解釋這個的人是個高手,而且以MSS/MTU/TSO的觀點解釋了這個問題,還有一種可能就是TSO等技術讓人覺得太牛逼,畢竟是底層硬體機制吧,抓包機制又是作用于網卡層面的,是以很自然會覺得TSO會有關聯。

        事實上,這個跟TSO沒有關系!跟MSS有一定的關系但不是全部因果關系,在闡述“TCP segment of a reassembled PDU”之前,先把TSO理清再說。當有人問題“這個包會不會被TSO分段”這類問題時,隻要看該TCP資料包的長度,拿它跟MTU比較,如果資料長度更長,則就是TSO。

        那麼,“TCP segment of a reassembled PDU”究竟是什麼呢?答案是,這要向上看,這個跟應用層有關,而與底層關系不大!我用Wireshark的抓包例子來解釋這個問題。首先看一個抓包,我們以網絡測試工具baidu為例,抓取一個通路其伺服器​​https://14.215.177.38/​​的一個HTTPS連接配接的包:

關于wireshark中“TCP segment of a reassembled PDU”

網上很多人在解釋這個“TCP segment of a reassembled PDU”的時候(基本都是轉載),都說什麼“ACK了同一筆資料就會是reassembled PDU”,“同一個GET請求的response”雲雲...但是很顯然,上述我抓包的截圖中,402到405号包都有ACK了同一個序列号,但是為什麼隻有一個“TCP segment of a reassembled PDU”呢??在沒有辨別reassembled PDU的資料包中,另外辨別了TLSv1.2的協定原語。此時,我來做一個動作,按下“Ctrl-Shift-E”組合鍵,事實上就是點選“分析”菜單,進入“已啟用的協定”界面:

關于wireshark中“TCP segment of a reassembled PDU”

反選SSL協定,不再識别SSL協定之後,我們再看402到405号資料包:

關于wireshark中“TCP segment of a reassembled PDU”

沒有了“TCP segment of a reassembled PDU”這些,除了沒有這些“修飾語”之外,其它的協定層面的資料完全和之前識别SSL協定的時候相符合。我們的結論是,關掉了對SSL協定的識别,就沒有了reassembled PDU的修飾,這恰恰是因為SSL協定讓Wireshark知道403号包是一個reassembled PDU!如果你不知道這是個SSL協定,你就無法判斷出這是不是一個reassembled PDU!