当我遇到接收窗口的概念时,我正在尝试学习TCP流控制的工作原理。
我的问题是,为什么TCP接收窗口可以扩展?实现一个小的接收窗口大小有什么好处吗?
因为据我所知,接收窗口大小越大,吞吐量越高。虽然接收窗口越小,吞吐量越低,因为TCP在发送更多数据之前总是会等到分配的缓冲区未满。因此,始终使接收窗口始终具有最大传输速率是不是有意义?
答案 0 :(得分:3)
我的问题是,为什么TCP接收窗口可以缩放?
那里有两个问题。窗口缩放是将比例乘以2的幂的能力,因此窗口大小> 64K。然而,你的问题的其余部分表明你真的在问为什么可以调整大小答案是什么?所以应用程序可以选择自己的接收窗口大小'。
实现小的接收窗口大小有什么好处吗?
不是。
因为据我所知,接收窗口大小越大,吞吐量就越高。
正确,直到带宽延迟产品。除此之外,增加它没有效果。
虽然接收窗口越小,吞吐量越低,因为在发送更多数据之前,TCP总是会等到分配的缓冲区未满。那么,始终让接收窗口最大化以获得最大传输速率是不是有意义呢?
是的,最多是带宽延迟产品(见上文)。
小的接收窗口可确保在检测到丢包时(在高冲突网络上频繁发生),
不,它没有。模拟显示,如果丢包率超过几个百分点,则TCP变得无法使用。
发件人不需要重新发送大量数据包。
它不是那样发生的。除了较低的内存占用率外,小窗口尺寸没有任何优势。
答案 1 :(得分:1)
经过大量阅读,我想我可能只是找到了答案。
吞吐量不仅仅是接收窗口的功能。小型和大型接收窗都有其自身的好处和危害。
小型接收窗口可确保在检测到丢包时(在高冲突网络中频繁发生),发送方无需重新发送大量数据包。
大型接收窗口可确保发送方在大多数时间内不会空闲,因为它等待接收方确认已收到数据包。
接收窗口需要调整以获得任何给定网络的最佳吞吐量。