TCP的拥塞控制

一、什么是拥塞控制?

过多的数据注入网络,网络中的路由器或链路会过载。就会出现拥塞!端点并不了解拥塞发生的细节,对通信连接的端点来说,拥塞往往表现为通信时延的增加!
拥塞控制是一个全局性的过程,涉及到所有的主机,所有的路由器,以及与降低网络传输性能有关的所有因素。

二、拥塞控制的4种算法

一、慢开始

使用慢开始算法后,先令拥塞窗口cwnd=1,每经过一个传输轮次(即往返时延RTT),拥塞窗口cwnd就会加倍,即cwnd的大小指数式增长。这样,慢开始一直把拥塞窗口cwnd增大到一个规定的慢开始门限ssthresh,然后改用拥塞避免算法。
在这里插入图片描述

二、避免拥塞

发送端的拥塞窗口cwnd每经过一个往返时延RTT就增加1,而不是加倍,使cwnd按线性规律缓慢增长(即加法增大)
根据cwnd的大小执行不同的算法,可归纳如下:
·当cwnd<ssthresh时,使用慢开始算法。
·当cwnd>ssthresh时,停止使用慢开始算法而改用拥塞避免算法。
·当cwnd=ssthresh时,既可使用慢开始算法,又可使用拥塞避免算法(通常做法)
网络拥塞的处理
网络出现拥塞时,无论是在慢开始阶段还是拥塞避免阶段,只要发送方判断网络出现拥塞(未按时收到确认,重传计时器超时),就要把慢开始的门限ssthresh设置为出现拥塞时的发送方的cwnd值的一半(但不能小于2).然后把拥塞窗口cwnd重新设置为1,执行慢开始算法。
为什么要这么操作呢?
这样做的目的是迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够时间把队列中积压的分组处理完。

在这里插入图片描述
1.初始时,拥塞窗口置为1,即cwnd=1,慢开始门限置为16,即ssthresh=16。
2.慢开始阶段,cwnd的初值为1,以后发送方每收到一个确认ACK,cwnd值加1,也即经过每个传输轮次(RTT),cwnd呈指数规律增长。当拥塞窗口cwnd增长到慢开始门限ssthresh时(即当cwnd=16时),就改用拥塞避免算法,cwnd按线性规律加性增长。
3.假定cwnd=24时网络发生拥塞,更新ssthresh的值为12(即变为超时时cwnd值24的一半),cwnd重置1,并执行慢开始算法,cwnd=12时,改为拥塞避免算法。

三.快重传

快重传和快恢复算法是对慢开始和拥塞避免算法的改进。
快重传:
快重传使用了冗余ACK来检测丢包的发生,当发送方连续收到3个重复的ACK报文时,直接重传对方尚未收到的报文段,而不必等待那个报文段设置的重传计时器超时
在这里插入图片描述
例如:
发送数据包M1~M5,丢失M3。接收方接连收到不连续的数据包M2,M4,就已经发现了丢失了M3,可采用快重传的方式。在这里插入图片描述

四、快恢复

快恢复
发送端连续收到三个冗余ACK(即重复确认)时,执行“乘法减小”算法,把慢开始门限ssthresh设置为出现拥塞时发送方cwnd的一半。与慢开始(慢开始算法将拥塞窗口cwnd设置为1)不同之处是,他把cwnd的值设置为慢开始门限三试听和热水改变后的数值,然后开始执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢的线性增大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值