我正在查看某人提供的 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: ... ]
这很好,但我不明白为什么第 3 个段的大小超过了此 TCP 连接的 MSS,该 MSS 是在 SYN/SYN+ACK 时协商的 1460 字节。
答案1
后来我自己也找到了原因:这是因为大型接收卸载解释如下http://rtoodtoo.net/generic_segmentation_offload_and_wireshark/. 主机的网络接口卡或内核收集多个 TCP 段并将其合并为一个大段,然后传递给用户空间。
因此,当 wireshark 将流量记录为超出允许的 MTU 和 MSS 的单个 TCP 段/IP 数据包时,它就会出现这种情况。