发送具有重叠数据的连续 tcp 数据包是否有效?

网络工程 tcp
2022-03-07 21:49:15

假设:

  • 客户端的 TCP 窗口大小:2000 字节
  • 客户端的 MSS(最大段大小):1500 字节

现在服务器要向客户端发送 3000 个字节B1..B3000服务器发送:

  • 数据包 1:包含B1..B1500字节SeqNo: 1,,,Length: 1500
  • 数据包 2:包含B501..B2000字节SeqNo: 501,,,Length: 1500

所以实际上:

Data       B1....B501....B1500....B2000....B3000
Packet-1   B1....B501....B1500
Packet-2         B501....B1500....B2000

它是否有效并被 TCP 协议允许?

1个回答

最初的数据包可能是分段的,只有第一个分段被确认。

由于(从您现在已删除的问题中)通信是针对“其 TCP 堆栈功能不足以组装数据包的小型设备”,您应该手动检查路径上的最低 MTU 是多少,或者减少发送主机的 MTU,或者执行 MSS 钳制,以便 TCP 连接使用实际的 MSS。