TCP拥塞控制方法

在讲TCP控制算时先定义几个概念:算法

网络资源:在计算机网络中的链路容量(即带宽)、交换节点中的缓存和处理机;缓存

拥塞:在某一段时间,若对网络中某一资源的需求超过了该资源所提供的可用部分的现象;网络

能够把拥塞的条件表示为以下简单的关系式:计算机网络


下面讲一下几种控制拥塞的方法:blog

慢开始、拥塞避免、快重传、快恢复资源

1,慢开始和拥塞避免io

拥塞窗口cwnd(congestion window):大小取决于网路的拥塞程度;方法

发送方控制拥塞窗口的规则:只要网络没有出现拥塞现象,就会增长窗口大小,将更多的分组发送出去;只要出现网络拥塞,就会减少窗口,减小注入网络的分组数;im

慢开始门限:慢开始和拥塞避免的分界线,当cwnd小于慢开始门限时采用慢开始算法,大于时使用拥塞避免算法,等于时使用二者之一。总结

传输轮次:把拥塞窗口所容许发送的报文都连续发送出去,并收到了对已发送的最后一个字节的确认。

慢开始算法的思想:从小到大逐渐增长发送窗口。

刚开始时cwnd=1,发送第一个报文M1,接收方收到后确认M1。发送方收到对M1的确认后,将cwnd从1增长到2,而后发送M2,M3报文。接收方收到后发回对M2和M3的确认。发送方每收到一个对新报文的确认(重传不算在内)就使发送方的拥塞窗口加1,所以发送方在收到两个确认后,cwnd从2增长到4,并开始发送M4~M7共四个报文段,所以使用慢开始算法后,每通过一个传输轮次,拥塞窗口cwnd就加倍。当拥塞窗口cwnd大于等于慢开始门限时,将执行拥塞避免算法。

拥塞避免算法:主要是让拥塞窗口cwnd缓慢的增加,即每通过一个传输轮次,拥塞窗口cwnd增长1;

无论在慢开始仍是拥塞避免算法中,只要网络出现拥塞现象,慢开始门限变为出现拥塞现象时拥塞窗口cwnd的一半,cwnd设置为1,开始执行慢开始算法。

2,快重传和快恢恢复

使用慢算法时,若是发送方设置的超时计时器时限已到但尚未收到确认,那么就能够认为网络出现拥塞,此时TCP立刻把拥塞窗口cwnd设置为1,开始执行慢算法,同时把慢开始门限减半。

使用快重传算法的前提:接收方每收到一个失序的报文段后当即发出重复确认而不要等待本身发送数据时才进行捎带确认。

快重传算法是当发送方收到三个重复确认时就会执行“乘法减少”,即把拥塞门限减半,可是此时发送方会认为网络颇有可能没有发生拥塞,因此会把拥塞窗口cwnd设置为慢开始门限,而后开始执行拥塞避免算法。

总结:

慢算法和拥塞避免:cwnd先成倍增长,当cwnd大于等于慢开始门限时,缓慢增长(每次增长1),当网络出现拥塞时,慢开始门限减少为出现拥塞时cwnd的一半,cwnd设置为1开始执行慢开始算法;

快重传和快回复:当连续接收到三个重复确认时,慢开始门限减小为一半,而后将cwnd设置为慢开始门限,而后开始执行拥塞避免算法。


参考:计算机网络(第5版)