首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TCP并不是ACK的每一个片段

TCP并不是ACK的每一个片段
EN

Stack Overflow用户
提问于 2016-09-21 10:30:43
回答 4查看 1.5K关注 0票数 1

我正在阅读Stevens 1993,在TCP批量数据一章中,显示了"ACK每一个其他部分“的策略,但在那之后,他给出了如下数字:

(不好意思,这张照片质量很差,我不知道如何上传高分辨率图片)

段8 ACKed 4段,与"ACK每一个其他段“不冲突吗?和我确信这与OS无关,因为作者在两个示例中使用了相同的机器。

我还查了RFC 1122,这也表明

.....in是一个全尺寸段的流,至少每秒钟都有一个ACK .

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 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。

票数 0
EN

Stack Overflow用户

发布于 2016-09-21 10:42:47

您可以为每个PSH/ACK发送一个ACK。我想,如果您想使用大容量数据,重点是只使用ACK每个窗口(这是向前滑动窗口所必需的)。

票数 0
EN

Stack Overflow用户

发布于 2016-09-21 11:34:36

史蒂文提到,"ACK每隔一段“是非常常见的。这不是必须的。引用你提到的同一章中的他的话:

使用TCP的滑动窗口协议,接收方不必确认接收到的每个数据包都是。使用TCP,ACKs是累积的--它们承认接收方通过确认的序列号减去1正确地接收了所有字节。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39614056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档