TCP-拥塞窗口和接收窗口之间的差异

TCP-拥塞窗口和接收窗口之间的差异,tcp,ip,Tcp,Ip,我试图理解拥塞窗口和接收窗口之间的区别 据我所知,接收方窗口是一个缓冲区,接收方可以在其中获取数据包。拥塞窗口也是如此,它告诉我们接收者的能力范围,并根据丢失的数据包而变化,等等 那么它们之间的区别是什么呢?简单回答一下:接收窗口由接收者管理,接收者将窗口大小发送给发送者。窗口大小宣布接收器缓冲区中仍然可用的字节数,即发送方在不需要接收器确认的情况下仍然可以发送的字节数 拥塞窗口是一个发送者强制执行的窗口,以避免在网络路径的中间运行一些路由器。发送方在发送每个数据段时会略微增加拥塞窗口,即发送方

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

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


那么它们之间的区别是什么呢?

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

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


有关更多信息,请从这里开始:

最初,CongWindow设置为等于一个数据包。然后,它将第一个数据包发送到网络中,并等待确认。如果此数据包的确认在计时器运行之前到达,则发送方将发送窗口增加一个数据包,并发送两个数据包。一旦所有这些数据包在超时之前都被确认,则每个已确认的数据段的窗口将增加两个。现在窗口的大小是四个数据包,因此,发送方发送四个数据包。只要CongWindow的大小低于阈值,并且在相应的超时过期之前收到确认,这种指数增长就会持续。一个重要的区别是CongWindow的大小会发生变化,但接收窗口的大小始终不变

我认为这更适合另一个SE站点,因为这不是一个编程问题或与开发人员工具相关。知道发送方在任何时间点都会选择min{拥塞窗口,接收方窗口}来保持滑动窗口的大小也会有好处。这是允许传输的字节数。每次向套接字接收缓冲区添加数据或从中删除数据时,接收窗口大小都会更改。