TCP拥塞控制过程

在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种情况就叫拥塞。拥塞控制就是为了防止过多的数据注入到网络中。拥塞控制采用了四个算法:慢开始、拥塞避免、快重传和快恢复

传输过程中发送方维护一个叫做拥塞窗口的状态变量(cwnd),其值取决于网络拥塞程度,并动态变化。发送方将拥塞窗口作为发送窗口,即swnd=cwnd。传输时还有个慢开始门限ssthresh状态变量。
当cwnd<ssthresh时,使用慢开始,
当cwnd>ssthresh时,停止使用慢开始改用拥塞避免,
当cwnd=ssthresh,既可以使用慢开始也可以使用拥塞避免算法。

拥塞控制的全流程:
在这里插入图片描述

慢开始:

1)连接建好的开始先初始化发送方cwnd = 1,swnd=cwnd=1,表明可以传一个MSS(最大报文段长度)大小的数据。
2)每当收到接收方对新的数据报文段(重复的不算)的一个ACK,cwnd++;
3)每当过了一个RTT(数据报往返时间),cwnd = cwnd*2; 呈指数让升
4)当cwnd >= ssthresh时,就会进入“拥塞避免算法”
流程:
在这里插入图片描述

拥塞避免:

当cwnd = ssthresh时,进入拥塞避免算法。每个传输轮次(RTT)cwnd只能线性加一,而不是像慢开始一样指数增长。
当网络发生拥塞时,把ssthresh值更新为拥塞前ssthresh的一半cwnd重新设置为1,然后再执行慢开始算法

快重传:

快重传要求接收方在收到一个失序的报文段后就立即发出重复确认,而不是等到自己发送数据时捎带确认。
如果发送机接收到三个重复确认,它会立即重传丢失的数据段,而不是等该报文段的超时重传计时器超时再重传。
在这里插入图片描述

快恢复:

发送方一旦收到3个重复确认,就知道丢失了个别的报文段。于是不启动慢开始,而是执行快恢复算法
发送方将慢开始门限ssthresh值和拥塞窗口cwnd调整为当前窗口cwnd的一半,开始执行拥塞避免算法。也有的实现是将cwnd设置成ssthresh+3*MSS(3的意思是确认有3个数据包被收到了)

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值