TCP:禁用纯 ACK?

TCP:禁用纯 ACK?

我有一个场景,我希望禁用纯 ACK(没有数据的 TCP ACK),但我找不到如何做到这一点。是否有一个选项可以设置,以便 ACK 始终搭载在下一个数据包上(我可以确定它会到来)?

我尝试通过ip routecommando 为特定网络范围和设备禁用 quickACK,但似乎没有任何效果。作为补充信息,我在这台机器上运行的是 4.4 内核。如果您需要更多信息,请询问,我会提供。

答案1

接收方必须在特定时间内确认数据包,否则发送方会认为数据包丢失并重新传输。如果接收方无论如何都会发送数据,则 ACK 会添加到这些数据中。如果没有发送数据,则需要发送纯 ACK,以便及时通知发送方已收到数据包。

答案2

事实证明,向我提供这些纯 ACK 的应用程序使用了设置了 TCP_NODELAY 选项的套接字,因此每个数据包都会尽快得到答复,而无需等待其他数据。

相关内容