当我遇到接收窗口的概念时,我正在尝试了解 TCP 流控制是如何工作的。
我的问题是,为什么 TCP 接收窗口可以缩放?实现小接收窗口大小有什么好处吗?
因为据我了解,接收窗口大小越大,吞吐量就越高。而接收窗口越小,吞吐量越低,因为 TCP 总是会等到分配的缓冲区未满再发送更多数据。那么,让接收窗口始终处于最大值以获得最大传输速率是否有意义?
当我遇到接收窗口的概念时,我正在尝试了解 TCP 流控制是如何工作的。
我的问题是,为什么 TCP 接收窗口可以缩放?实现小接收窗口大小有什么好处吗?
因为据我了解,接收窗口大小越大,吞吐量就越高。而接收窗口越小,吞吐量越低,因为 TCP 总是会等到分配的缓冲区未满再发送更多数据。那么,让接收窗口始终处于最大值以获得最大传输速率是否有意义?
我的问题是,为什么 TCP 接收窗口可以缩放?
那里有两个问题。窗口缩放是将比例乘以 2 的幂的能力,因此您可以拥有 > 64k 的窗口大小。但是,您问题的其余部分表明您确实在问为什么它是可调整大小的,答案是“因此应用程序可以选择自己的接收窗口大小”。
实现小接收窗口大小有什么好处吗?
并不真地。
因为据我了解,接收窗口大小越大,吞吐量就越高。
正确,直到带宽延迟产品。除此之外,增加它没有任何效果。
而接收窗口越小,吞吐量越低,因为 TCP 总是会等到分配的缓冲区未满再发送更多数据。那么,让接收窗口始终处于最大值以获得最大传输速率是否有意义?
是的,直到带宽延迟产品(见上文)。
一个小的接收窗口确保当检测到数据包丢失(在高冲突网络上经常发生)时,
不,它没有。模拟表明,如果数据包丢失率超过百分之几,TCP 就会变得不可用。
发件人不需要重新发送很多数据包。
它不会那样发生。除了较低的内存占用外,小窗口大小没有任何优势。
经过大量阅读,我想我可能已经找到了答案。
吞吐量不仅仅是接收窗口的函数。小接收窗口和大接收窗口都有各自的好处和坏处。
一个小的接收窗口确保当检测到数据包丢失(在高冲突网络上经常发生)时,发送方不需要重新发送大量数据包。
较大的接收窗口确保发送方在等待接收方确认已收到数据包时大部分时间不会处于空闲状态。
接收窗口需要可调整以获得任何给定网络的最佳吞吐量。