传输层 TCP 拥塞控制(2):拥塞避免

本文详细介绍了TCP的拥塞控制策略,包括慢启动算法和拥塞避免机制。慢启动算法起初以指数方式增长拥塞窗口,而当达到慢启动阈值ssthresh后,转为线性增加。一旦发生丢包,ssthresh会减半,cwnd重置为较小值,重新开始慢启动。拥塞避免阶段则避免了快速的指数增长,有效减少了数据包丢失。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前介绍的慢启动算法是以指数级别增加拥塞控制

拥塞避免


慢启动阈值 ssthresh(slow start threshold):
            • 达到 ssthresh 后,以线性方式增加 cwnd
                       • cwnd += SMSS*SMSS/cwnd

如果没有拥塞避免的算法的时候,我们的慢启动是以如图所示,以指数级,所以下一次在飞行中的报文大概在50多的数字上面,大概在40的时候就开始出现丢包了,所以如果没有拥塞避免的话会发生大量的包都被丢失掉。

拥塞避免怎么解决这个问题呢?它定义了慢启动阈值,当拥塞窗口达到了阈值之后,就不以指数的方式,就改为线性的方式,然后在发生丢包的时候需要将之前的阈值重新设定,设置为原来拥塞窗口的一半,拥塞窗口再降低为比较小的数字,再次启用慢启动,到了相应的阈值之后,再改为拥塞避免算法,所以达到阈值之后就进入到拥塞避免阶段。

慢启动与拥塞控制


最初以以4个MSS作为最初的拥塞窗口,以2倍的速度改为4 8 16,到16这收到ack之后就会升到32 64,到波峰的时候还没有达到最初的慢启动阈值的时候就开始出现丢包了,此时我们的拥塞窗口是64,所以新的慢启动阈值变为64的一半32,然后重新从4个mss作为初始的拥塞窗口,再进入慢启动,这里到32的时候进入拥塞避免,再次发生丢包的时候又重新进入了慢启动,拥塞避免。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值