圖片相關:
為什麼這些段被標記為單獨的資料包(所有 Ack,Seq=509)?為什麼資料包會被分割?
答案1
我認為您指的是 56-78 範圍內的可見影格。
讓我們按這個順序處理事情,
- 關於:「
TCP segment of a reassembled PDU
」
這意味著wireshark(ethereal?)將TCP Segment重新組裝在一起以供您查看。
所以,你可以忽略這個字串,這意味著沒有什麼壞處。
我在下面的第 4 點中詳細闡述了這些框架的含義。 - 關於:具有相同“ ”編號的不同幀
seq
。
幀 58、60、62、64 等顯示相同的序號。
但請注意,這些是不是單一資料包「標記為單獨的資料包」—不拆分。
這些封包僅設定了「ACK
」標誌,您將看到 ACK 編號正在遞增。
這些是當不同的 TCP 段到達時從您的電腦傳送到 HTTP 伺服器的 ACK。 - '
ACK
' 序列從1
in 幀開始,到FIN 幀52
結束。 在此期間,從瀏覽器到 HTTP 伺服器的所有訊框都會重複傳送的最後一個序號(即)-這是正常的 TCP 協定行為。瀏覽器在第一個 HTTP 請求(幀) 之後不再發送任何進一步的資料。 HTTP 伺服器在 幀 中確認了這一點。9646
78
609
52
54
- 我期望幀
54
是(wireshark)重新組裝的伺服器回應,它是由標記為「重新組裝的 PDU 的 TCP 段」的幀形成的。
因此,所有以這種方式標記的後續幀都是從 HTTP 伺服器到客戶端的
(由於您擦洗了「來源」和「目標」列,因此在圖片中看不到該詳細資訊)。
如果您重新檢查原始擷取文件,您應該會發現具有 TCP 來源連接埠 80(對於 HTTP)的訊框 54 到 67 將總計來自 HTTP 伺服器的 9646 位元組回應資料。
您在這裡看到的是來自 HTTP 伺服器的 9KB 回复,作為多個 MTU 限制的 TCP 段到達您的瀏覽器,每個段都被作業系統的 TCP 堆疊確認。
這是高級別的通信序列。
- 您的瀏覽器透過 3 路 TCP 握手開始連線到 HTTP 伺服器。
- 它在此連接上向伺服器發送了一個 HTTP 請求
- 伺服器以 9 KB 的回應對此進行回复,該響應分佈在多個 TCP/IP 封包中,如下所示(TCP 段)
- 當從伺服器接收到每個 TCP 封包時,瀏覽器電腦上的 TCP/IP 堆疊會對其進行確認
- 最後,它關閉了以資料包開頭的連接
FIN
。我預計在第 78 幀(或單一資料包)之後
還有更多FIN
資料包。ACK
RST
您可以在以下位置閱讀有關 Wireshark TCP 重組處理的更多信息Wireshark 維基。
答案2
我看不到圖片,但是較低級別的協定(例如乙太網路)可以根據其 MTU(最大傳輸單元)的大小將較高層級的協定(例如 TCP 封包)分成片段。
答案3
維基百科定義協定資料單元如下 :
在電信中,術語協定資料單元 (PDU) 具有以下含義:
- 作為網路的對等實體之間的單元傳遞的訊息,並且可以包含控制訊息、位址資訊或資料。
- 在分層系統中,在給定層的協定中指定的資料單元,並且由該層的協定控制資訊和可能的使用者資料組成。例如:橋接 PDU 或 iSCSI PDU1
PDU 與前 4 層中的每一層相關。開放系統互連模型(第5層以上稱為數據)。
因此,實際上 PDU 只是一個資料單元,在其自己的上下文中定義。
有時,包裹不會整塊到達。相反,資料包以多個協定資料單元 (PDU) 的形式到達。 WireShark 將嘗試將這些單元重新組裝成單一資料包。這樣的資料包稱為重組的 PDU。
使用重新組裝的 PDU 時,顯示效果將不如常規資料包那麼好。回應的標題位於圖 2.11 的底部窗格中。
這意味著這些是 TCP/IP 訊息的片段,並且通常只有最後一個片段具有有關 TCP/IP 訊息的有意義且完整的資訊。
您可以透過取消選取 TCP 協定首選項中的「允許細分器對 TCP 流進行分段」來停用 TCP 分段的重組。這樣,應用程式 PDU 的所有部分都將單獨顯示。
這是一種確保所有段都包含有意義地顯示 TCP/IP 段所需的所有資訊的方法,而不僅僅是最後一個封包。