Wireshark tcp.len 和 data.len 不匹配

网络工程 通讯协议 线鲨 电容
2021-07-17 06:16:13

tcp.lendata.len过滤器有什么区别我认为这两者都意味着在该段中传输的数据大小(不包括TCP header)。我有一个与问题相关的MTU问题,我正在尝试确定应用层的数据大小是否大于MSS服务器宣布的数据大小

捕获显示一些封装了 1434 字节的 TCP 数据包:

在此处输入图片说明

但是 TCP 层分析显示相同的 TCP 数据包与 len = 1448

在此处输入图片说明

我认为这个 TCP 段封装了 1448 字节。1448B 加上 32B 的 TCP 标头(启用了一些 TCP 选项)加上 20B 的 IP 标头 = 1500 字节,因为它在 IP 层的分析中显示。

所以我有一个与此相关的问题MSS clampingLAN 客户端使用EthernetMTU = 1500 字节连接到路由器,路由器使用PPPoEMTU = 1492 字节连接到 Internet 路由器MSS在每个 TCP 数据包中操作字段,并SYN flag在两个方向启用,这称为MSS clamping这样 LAN 客户端从 Internet 上的服务器接收 MSS = 1452,服务器从 LAN 客户端接收 MSS = 1452。

但是如果服务器宣布 MSS < 1452 会发生什么?LAN 客户端会从服务器收到 MSS = 1452 所以只能PMTUD在这里工作吗?

1个回答

当服务器的 MSS 小于 1452 时,路由器不应接触 MSS。客户端将看到服务器发送的正确值。

tcp.lendata.len如果 Wireshark 不解释 TCP 流中的数据,并且将匹配。如果wireshark 可以理解数据,它可以更新data.len. 他们不必匹配。

例如,在 HTTP 的情况下,data.len可以包含重新组装的 HTTP POST 请求的总长度,该请求分布在多个 TCP 段上。