拥塞窗口cwnd
- 发送方维持一个叫做拥塞窗口cwnd (congestion window)的状态变量。
- 拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于拥塞窗口。(如果再考虑到接收方的接收能力,那么发送窗口还可能小于拥塞窗口。)
- 发送方控制拥塞窗口的原则是:只要网络没有出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去。但只要网络出现拥塞,拥塞窗口就减小一些,以减少注入到网络中的分组数。
- 只要发送方没有按时收到应当到达的确认报文,就可以猜想网络可能出现了拥塞
拥塞窗口cwnd的大小相关算法
慢启动
- 慢启动应用于连接刚刚建立,开始传输数据时。
以一个很小的报文段数量开始发送数据,每收到一个报文段的确认,则cwnd数量翻倍++。(乘2方式增加) - 为了防止拥塞窗口cwnd增长过大引起网络拥塞,还需要设置一个慢开始门限 ssthresh状态变量。慢开始门限ssthresh的用法如下:
当cwnd < ssthresh时,使用上述的慢开始算法。
当cwnd>ssthresh时,停止使用慢开始算法而改用拥塞避免算法。
当cwnd=ssthresh时,既可使用慢开始算法,也可使用拥塞避免算法。 - 慢启动门限,如果慢启动过程发