LAN将2个数据包组装成1个数据包?

LAN将2个数据包组装成1个数据包?

我有两台计算机 A 和 B,它们之间有 TCP 连接。我使用 TCPdump 来捕获数据包。

我注意到当A向B发送大量TCP数据包时,每个IP数据包都是1514字节。

在 B 中,它收到大小为 2962 的 IP 数据包。然后我检查了 IPID。例如,如果 A 发送了 4 个 TCP 数据包,IPID 分别为 1000、1001、1002、1003,每个数据包为 1514 字节。那么 B 只收到 2 个 TCP 数据包,IPID 分别为 1000、1002,每个数据包为 2962 字节。

这是否意味着 LAN 会将 2 个 IP 数据包组装成 1 个 IP 数据包?这是怎么发生的?哪个设备进行组装?

1

答案1

有两种可能的答案:

  • 最有可能的是大量接收卸载(又名接收聚合)其中 NIC 或驱动程序合并数据包,以便减少中断、减少 DMA/复制和减少操作系统开销
  • 中间设备(防火墙、IPS 或代理)不太可能进行代理,并且在最后一跳支持巨型帧

答案是数据包很可能被您的 NIC 合并,这发生在数据传递到堆栈之前,因此 Wireshark 看不到真实的(线路)帧。

点击此处了解有关 LRO 的更多信息:

通用接收卸载(GRO)扩展到其他协议:

相关内容