TCP拥塞控制

TCP拥塞控制是确保网络稳定的关键。本文介绍了慢开始、拥塞避免、快重传和快恢复四种方法。慢开始通过指数增长的拥塞窗口达到快速启动,而拥塞避免则线性增加窗口大小以避免拥塞。快重传要求接收方及时发送确认,减少超时重传。快恢复则在检测到多个冗余ACK时快速调整门限值并进入拥塞避免阶段,提高传输效率。

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

TCP拥塞控制

如果拥塞不进行控制,实际上网络吞吐量会变为0。网络就会无法正常工作,就像交通一样,如果不交警干预,大规模的堵车就基本无法疏通。

在这里插入图片描述

下面是四种拥塞控制方法;

慢开始:在慢开始之前,我们首先要了解一下拥塞窗口,发送方需要维护一个叫做拥塞窗口cwnd的状态变量,其值取决于网络的拥塞程度,并且会动态变化。他的维护原则是只要网络上没有出现拥塞,拥塞窗口的值就再加大一点,一旦出现拥塞,窗口的值就减小一点。

至于发送方是怎么发现拥塞的呢?发送方一旦没有按时收到应该到达的确认报文,就会超时重传。就是发送方每发送一个报文就会开启一个计时器,一旦计时器时间到,却没有收到确认报文,就会发生超时重传。发生超时重传,发送方就认为当前的网络处于拥塞的状态。

发送方还要维护一个发送窗口的变量swnd其值等于拥塞窗口的值及swnd = cwnd

同时还有一个慢开始门限值ssthresh的状态变量。拥塞窗口小于这个门限值时使用慢开始算法,快速启动,当拥塞窗口大于慢开始门限值时,使用拥塞控制算法,缓慢加速。就也想开车一样,当你前面没车的时候,可以地板油,当你前面都是车的时候,加速也要一点点的加速!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gEN4XJJJ-1647751991271)(C:\Users\LENOVO\AppData\Roaming\Typora\typora-user-images\image-20220320114910595.png)]

接下来我们介绍慢开始算法,先假设拥塞窗口值为1,慢开始门限值为16,开始发送方像接收方一个报文段。收到确认回复后,拥塞窗口变为2的1次方,再发送拥塞窗口这么多报文段,收到回复后,拥塞窗口变为2的2次方,反复如此,当拥塞窗口的值到达16的时候,就要执行拥塞避免算法了。

拥塞避免:在慢启动的时候,拥塞窗口的变化是呈指数增长的,这保证了快速的使吞吐量增大。来到门限值之后我们就随时可能会遇到拥塞的情况,所以我们要慢慢的加速,每次拥塞窗口的值都加1。使拥塞窗口的值呈线性增长。如下图,假如拥塞窗口在24的时候发生了超时重传,发送方就会把拥塞窗口设置为1,慢开始门限值设置为发生拥塞时的拥塞窗口值的一半,如下图也就是24/2 = 12再进入慢开始阶段。这也很好理解,当你面前发生了交通拥堵,别的车都不走了,你也能踩刹车把车停下。随着车流慢慢滑动。

以上是1988年提出的算法

接下来两个是1990年新的拥塞控制改进算法,

有的时候,个别报文段的丢失并不是因为网络拥塞,但这会导致发送方进行超时重传,并重新把拥塞窗口设置为1,这无疑是降低了运输的效率。

快重传:所谓的快重传就是使发送方尽快的重传丢失的数据,而不是等超时计时器超时再进行重传。

img

  • 要求接受方不要等待发送数据时才进行确认,而是要立刻进行确认。
  • 发送方即使受到了重发确认,也继续发送接下来的数据,等到受到三个冗余ACK之后再进行重发。

快恢复:快恢复就是有两种方案,一种是更新门限值变为重传时拥塞窗口值的一半,然后开始拥塞避免算法,还有一种就是把门限值直接加三。

具体应用示例如下图所示:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值