TCP拥塞控制过程

TCP拥塞控制过程在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种情况就叫拥塞。拥塞控制就是为了防止过多的数据注入到网络中。拥塞控制采用了四个算法:慢开始、拥塞避免、快重传和快恢复传输过程中发送方维护一个叫做拥塞窗口的状态变量(cwnd),其值取决于网络拥塞程度,并动态变化。发送方将拥塞窗口作为发送窗口,即swnd=cwnd。传输时还有个慢开始门限ssthresh状态变量。当cwnd<ssthresh时,使用慢开始,当cwnd>ssthresh时,停止使用慢开始改

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

传输过程中发送方维护一个叫做拥塞窗口的状态变量(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个数据包被收到了)

今天的文章TCP拥塞控制过程分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/7371.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注