TCP拥塞控制方法

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

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

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

可以把拥塞的条件表示为如下简单的关系式:


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

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

1,慢开始和拥塞避免

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

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

慢开始门限:慢开始和拥塞避免的分界线,当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版)


你可能感兴趣的:(网络协议,算法)