TCP协议的拥塞控制

拥塞:根据字面意思我们可以理解为某段时间内,网络资源的需求超过网络可提供的资源,这时就会产生拥塞;其实就是当网络的吞吐量达到一定的限制之后,就会发送拥塞现象,此时数据包无法到达接收方,因为重传机制会重新向接收端发送一个数据包,这时网络就会异常堵塞,如果不加控制,就会导致网络的吞吐量为0。而拥塞控制就是防止过多的数据包进入网络,使当前网路处于有序的状态(不会堵塞)。

可是我们如何知道网络中发送了拥塞?

只有发送方没有在规定时间内收到ACK应答报文,(也就是发生了超时重传),就会认为网络拥堵。

那么我们如何控制网络拥堵?

这里有四个相关算法:

慢开始

拥塞避免

快重传

快恢复

一个相关概念:

cwnd:拥塞窗口,是发送方维护的状态变量,会根据网络的拥塞程度而改变。

慢开始

慢开始算法我们可以理解为引路石,因为刚开始我们并不知道网络中所能承受多少数据,抛出一个石头,看看有没有坑,言归正传,其实就是刚开始的时候,cwnd=1,发送方只能发送一个报文段,当收到接收方返回来的ACK应答报文时,就会将cwnd加倍,发送方可以发送的报文段数量为上一次发送的2倍。

拥塞避免

这里引入了一个概念:慢开始门限;

由于慢开始时,cwnd是双倍增长的,发送方发送的速度也持续增长,这时难免会出现网络拥塞的情况,这时就需要设置一个慢开始门限ssthresh,当cwnd < ssrhresh时,使用慢启动算法,当cwnd > ssrhresh时,就会使用拥塞避免算法。当进入拥塞避免算法时,cwnd“加法增大”的机制进行增加,每次+1,使拥塞窗口慢慢增大。

当收到对同一个报文的3个重复的ACK确认时,就会认为这个报文的下一个报文丢失,就会进入快重传阶段,这时cwnd = cwnd / 2,同时使得快重传门限值 = 当前的cwnd。

快重传

当收到3个重复的·确认时,就会执行快重传算法

快恢复

快重传和快恢复一般情况下同时使用,当发送端收到3个重复的确认报文时,就会执行快恢复算法(乘法减少)。

发送方认为既然可以将这3个重复的确认发送过来,那就说明网络也并没有那么差劲,因此不会重新执行慢开始算法,而是使得cwnd = cwnd / 2,ssrhresh = cwnd / 2,随后再执行拥塞避免算法,使得拥塞窗口cwnd缓慢增大。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值