我正在阅读Stevens 1993,在TCP批量数据一章中,显示了"ACK每一个其他部分“的策略,但在那之后,他给出了如下数字:
(不好意思,这张照片质量很差,我不知道如何上传高分辨率图片)

段8 ACKed 4段,与"ACK每一个其他段“不冲突吗?和我确信这与OS无关,因为作者在两个示例中使用了相同的机器。
我还查了RFC 1122,这也表明
.....in是一个全尺寸段的流,至少每秒钟都有一个ACK .
发布于 2017-05-13 06:49:20
Linux将每隔一个完整的部分进行ACK,实际上是MSS值数据的两倍,并且在这样做之前主要等待MAX_DELAY。它是在2012年被配置的:https://lwn.net/Articles/502585/
可以使用TCP_QUICKACK套接字选项关闭延迟ACK。(下一届ACK)
看起来大多数Windows版本ACK的频率较低,不确定这是否是可控制的。
在插图中,我怀疑他是在假设一个缓慢的发送者,而不是其他人都应该这样做,因为接收方处理传入请求的速度太慢,以至于接收者只是在看到其他未完成的数据来确认这些数据(或者他没有注意到这些细节)。它肯定只承认4*mss,这恰好是RWin。
发布于 2016-09-21 10:42:47
您可以为每个PSH/ACK发送一个ACK。我想,如果您想使用大容量数据,重点是只使用ACK每个窗口(这是向前滑动窗口所必需的)。
发布于 2016-09-21 11:34:36
史蒂文提到,"ACK每隔一段“是非常常见的。这不是必须的。引用你提到的同一章中的他的话:
使用TCP的滑动窗口协议,接收方不必确认接收到的每个数据包都是。使用TCP,ACKs是累积的--它们承认接收方通过确认的序列号减去1正确地接收了所有字节。
https://stackoverflow.com/questions/39614056
复制相似问题