TCP - 拥塞窗口和接收窗口之间的区别

标签 tcp ip

我试图理解拥塞窗口和接收窗口之间的区别。

据我所知,接收窗口是一个缓冲区,接收者可以在其中获取数据包。拥塞窗口也是如此,它告诉我们接收方能力的范围,并根据丢失的数据包等进行更改。

那么它们之间有什么区别呢?

最佳答案

简短回答:接收窗口由接收方管理,接收方将窗口大小发送给发送方。窗口大小宣布接收缓冲区中仍然空闲的字节数,即发送方在不需要接收方确认的情况下仍然可以发送的字节数。

拥塞窗口是发送者强加的窗口,其实现是为了避免网络路径中间的某些路由器超速运行。发送方在发送每个段后,稍微增加拥塞窗口,即发送方将允许自己发送更多未完成的数据。但是如果发送方检测到数据包丢失,它会将窗口减半。这背后的基本原理是发送方假设由于某处缓冲区溢出(这几乎总是正确的)而发生了数据包丢失,因此发送方希望在“传输中”保留较少的数据以避免将来进一步的数据包丢失。

更多信息,从这里开始:http://en.wikipedia.org/wiki/Slow-start

关于TCP - 拥塞窗口和接收窗口之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11555662/

相关文章:

network-programming - 在通过本地主机传输期间,OSI 模型中使用了哪些层?

linux - 超过一定大小 (~1450) 的 TCP 消息获取 "stuck"

linux - 如何将从一个网络接口(interface)收到的数据包重定向到另一个网络接口(interface)?

linux - 阻止 IP 地址连接到 ubuntu 18.04 服务器的最有效方法

python - 连接到您的外部 IP 以模拟互联网

networking - IP地址和端口号的组合叫什么?

java - 数百个 CLOSE_WAIT 连接正在耗尽我的线程池

c# - 为什么 NetworkStream.Read 这么慢?

linux - Ubuntu 是否需要 Docker 机器,如果不是,如何通过 TCP 连接 Ubuntu docker 守护进程?

linux - 国家和外部 IP Bash 脚本