【问题标题】:TCP - difference between Congestion window and Receive windowTCP - 拥塞窗口和接收窗口之间的区别
【发布时间】:2012-07-18 07:58:04
【问题描述】:

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

据我了解,接收器窗口是接收器可以获取数据包的缓冲区。 Congestion 窗口也是如此,它告诉我们 Receiver 的能力范围,并根据丢失的数据包等进行更改。

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

【问题讨论】:

  • 我认为这更适合另一个 SE 站点,因为这不是编程问题或与开发人员工具有关。

标签: tcp ip


【解决方案1】:

简单回答:接收窗口由接收方管理,接收方将窗口大小发送给发送方。窗口大小宣布接收缓冲区中仍然空闲的字节数,即发送方无需接收方确认仍可发送的字节数。

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

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

【讨论】:

  • 知道,发送方在任何时间点都会选择 min{congestion-window,receiver-window} 来保持滑动窗口大小。这是允许传输的字节数。
【解决方案2】:

最初,CongWindow 设置为等于一个数据包。然后它将第一个数据包发送到网络并等待确认。如果这个数据包的确认在定时器用完之前到达,发送方将 CongWindow 增加一个数据包并发出两个数据包。一旦所有这些数据包在超时前得到确认,CongWindow 就会增加 2 — 每个已确认的段一个。现在 CongWindow 的大小是 4 个数据包,因此发送方发送了 4 个数据包。只要 CongWindow 的大小低于阈值并且在相应的超时到期之前收到确认,这种指数增长就会继续。一个重要的区别是 CongWindow 的大小会发生变化,但接收窗口的大小始终是恒定的。

【讨论】:

  • 每次在套接字接收缓冲区中添加或删除数据时,接收窗口大小都会发生变化。
猜你喜欢
  • 1970-01-01
  • 2013-10-25
  • 2013-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-24
  • 1970-01-01
相关资源
最近更新 更多