当网络中传输数据过多而超过网络容量时,数据传输延时将大增,这就导致拥塞(Congestion)发生。拥塞发生后,一方面数据延迟严重,另外路由器由于超载而丢弃数据,这些都会使发送端重传更多报文,更多报文进入网络又加剧网络拥塞状况。如该状况持续下去,将发生所谓拥塞崩溃(Congestion collapse)现象,导致整个网络不能正常工作。
为了防止拥塞崩溃,TCP采用了限制发送端发送数据的多少及速率的方法。TCP定义另一个窗口——拥塞窗口(Congestion window),和上节提到通告窗口一起决定发送窗口大小。其关系式如下式所示:
允许的发送窗口=MIN(接收端的窗口通告,拥塞窗口)
这两个窗口表示不同的含义。通告窗口是接收端空闲缓冲区的大小,表示接收方接收数据的能力;拥塞窗口是发送端对网络运行状况的预测。如网络比较忙,则拥塞窗口减小,否则增大。TCP假设数据丢失都是由于网络发生了拥塞,所以发送端通过观察发生超时和接收到重复的确认信息的情况来判断网络是否发生拥塞。(www.xing528.com)
如发送端认为网络发生拥塞,将采用快速递减(Multiplicative decrease)方法避免拥塞。快速递减避免拥塞策略:一旦发现报文丢失,拥塞窗口大小减少为原来的一半;对于将要发送的报文,将其定时器的溢出时间增加一倍。这样既快速减少了发送端的数据量,也降低了数据的发送速率,从而达到快速减轻网络负载的目的。
当网络从拥塞恢复过来,发送端将采用慢启动(Slow start)算法逐步恢复数据传送。慢启动算法:当建立一新连接或拥塞恢复后要加快数据的传送速率时,将拥塞窗口初始化为一个报文段,此后,每收到一个确认(ACK)拥塞窗口增加一个报文段。此恢复过程中,TCP还有一个限制:当拥塞窗口增长到发生拥塞的一半时,拥塞窗口增长将减速,即只有发送窗口中所有的报文都得到证实后拥塞窗口才增加一个报文段。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。