
我正在查看某人提供的 Wireshark 記錄,為他們分析一些內容。 Wireshark 可以輕鬆地重新組裝 3 個 TCP 段,所有這些段都傳輸單一 TLS 封包。 TLS 封包無法放入 1460 位元組的 MSS,因此主機從中建立了 3 個 TCP 段,wireshark 已偵測到這一點:
[3 Reassembled TCP Segments (5914 bytes): #8(1440), #10(1440), #12(3034)]
[Frame: 8, payload: 0-1439 (1440 bytes)]
[Frame: 10, payload: 1440-2879 (1440 bytes)]
[Frame: 12, payload: 2880-5913 (3034 bytes)]
[Segment count: 3]
[Reassembled TCP length: 5914]
[Reassembled TCP Data: ... ]
這很棒,但我不明白的是為什麼第三段的大小超過了該 TCP 連接的 MSS,這是在 SYN/SYN+ACK 上以 1460 位元組協商的。
答案1
後來我自己找到了原因:這是由於大量接收卸載正如所解釋的http://rtoodtoo.net/generic_segmentation_offload_and_wireshark/。主機的網路介面卡或核心收集多個 TCP 段並將其合併為一個大段,然後傳遞到使用者空間。
因此,當將流量記錄為超出允許的 MTU 和 MSS 的單一 TCP 段/IP 封包時,它看起來像是 Wireshark。