是否每个 TCP 数据包都有一个 Ack 回复?

网络工程 tcp 网络 协议论
2022-02-19 17:00:55

您在图表的绿色箭头中看到的 TCP 确认,其 ACK 编号由3000(2 1500 bytes) 分隔。

我有一个问题,为什么Ack号被两个包分开?还是只是为了画画方便?每个 TCP 数据包都应该有一个 Ack 回复吗?

1个回答

这是一个称为延迟 ACK的标准 TCP 功能(请参阅RFC 1122 )。规范说您可以在确认数据包之前等待,但是:

  • 您不应等待超过 500 毫秒
  • 如果您收到全尺寸数据包,您应该确认所有其他数据包。

它减少了您需要发送的 ACK 数量。