当前位置:   article > 正文

TCP协议的拥塞控制_tcp协议中采用了哪些拥塞控制策略?慢开始算法是如何工作的?

tcp协议中采用了哪些拥塞控制策略?慢开始算法是如何工作的?

拥塞

拥塞是指对网络中某一资源的需求超过了该资源所能提供的可用的部分,从而会使网络的负载增大,性能降低。TCP协议主要通过四个算法来进行拥塞控制:慢开始、拥塞避免、块重传、快恢复。
实现

拥塞窗口

发送方维护了一个叫做拥塞窗口(cwnd)的状态变量,它的大小取决于网络的拥塞程度,并且在动态的发生变化,它只是一个状态变量,实际决定发送方能发送多少数据的是发送方窗口。

慢开始

TCP 在刚建立连接完成后,首先是有个慢开始的过程,其体现就是一点一点的提高发送数据包的数量,当发送方每收到一个 ACK,拥塞窗口 cwnd 的大小就会加 1。慢开始算法过程中数据大致传输呈指数性增长。
指数性增长就体现在开始增长速率慢,所以叫慢开始。但指数性增长后期增长速率极快,为防止增长过快引起,有一个状态变量慢启动门限 ssthresh (slow start threshold)控制其何时停止慢开始算法。
当 cwnd < ssthresh 时,使用慢启“开始算法”。
当 cwnd >= ssthresh 时,使用“拥塞避免算法”。

拥塞避免

慢开始每个次都将 cwnd 加倍,这样就会让 cwnd增长速度非常快快,从而使得发送方发送的速度增长速度过快,网络拥塞的可能性也就会随之增高。设置一个慢开始门限 ssthresh,当 cwnd >= ssthresh 时,每个轮次只将 cwnd加 1,从而降低拥塞窗口的增长速度。如果出现了超时,就让 ssthresh = cwnd / 2,从这个值开始继续增长;然后开始执行快恢复。

快重传

发送方收到三个相同的 ACK 报文时,会在特定的时间间隔过期之前,重传丢失的报文段。
当发生“快速重传”,TCP 认为这种情况不严重,就会启动快恢复算法,ssthresh 和 cwnd 也会发生变化:
cwnd = cwnd/2 ;
ssthresh = cwnd;
进入“快恢复算法”;

快恢复

经过快重传算法后,cwnd的值已经减半,并且ssthresh的值等于cwnd的值。由于发送方接收到了对方连续三个确认数据包,它认为网络很可能没有发生拥塞,因此现在不执行慢开始算法,拥塞窗口 cwnd 现在不设置为 1 。而是将cwnd当前值减半作为新的慢开始门限 ssthresh 值,并让cwnd的值等于这个新的慢开始门限ssthresh值。随后开始执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢地线性增大,拥塞控制的过程如图:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/594563
推荐阅读
相关标签
  

闽ICP备14008679号