计算机网络——TCP的拥塞控制

文章目录

    • 1.拥塞控制概述
    • 2.慢开始和拥塞避免算法
    • 3.快重传算法和快恢复算法


1.拥塞控制概述

    在某段时间,如果对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏,这种情况就叫做拥塞
    如果出现拥塞而不进行控制,整个网络的吞吐量将随输入载荷的增大而下降
计算机网络——TCP的拥塞控制_第1张图片

2.慢开始和拥塞避免算法

    在介绍拥塞控制算法前,先假定如下条件:
计算机网络——TCP的拥塞控制_第2张图片
    发送方需要维护一个叫做拥塞窗口cwnd的状态变量,其值取决于网络的拥塞程度,并且动态变化。

  • 拥塞窗口cwnd的维护原则:只要网络没有出现拥塞,拥塞窗口就再增大一些;但只要出现拥塞,窗口就减少一些。
  • 判断出现网络拥塞的依据:没有按时收到应当到达的确认报文(即发生超时重传)。

    发送方将拥塞窗口作为发送窗口,即swnd=cwnd。

    维护一个慢开始门限ssthresh状态变量。

  • 当cwnd
  • 当cwnd>ssthresh时,停止使用慢开始算法而改用拥塞避免算法。
    计算机网络——TCP的拥塞控制_第3张图片
        TCP通信双方建立逻辑联系时,将拥塞窗口值设置为1,门限值设置为16。每当发送方发送成功一条爆温,并收到接收方的确认报文后,传输轮次就加1,并调整拥塞窗口值,使之指数增加。经过4个传输轮次后,cwnd的值经历了1-2-4-8-16的变化,达到了ssthresh的大小,接下来就要转而执行拥塞避免算法
    计算机网络——TCP的拥塞控制_第4张图片
        此后没经过一个轮次,cwnd的值默认加1,直到网络出现了拥塞,即重传计时器超时了。这时,根据目前的cwnd的值,零ssthresh变为原来的一半,并重新开始执行慢开始算法。
    计算机网络——TCP的拥塞控制_第5张图片
        当重新执行慢开始算法时,cwnd的值继续按指数规律增长,当达到ssthresh大小时,继续执行拥塞避免算法,cwnd的值按轮次线性增加。

3.快重传算法和快恢复算法

    有时,网络中的个别报文段出现了丢失,但实际上网络并没有发生拥塞,如果此时错误认为发生了拥塞,执行拥塞避免算法,就会降低传递效率。
    为此引入快重传算法,可以尽快地让发送方知道发生了个别报文段的丢失。接收方在收到发送方发送的数据后,要立刻进行确认,即使收到了失序的报文段也需要进行确认,而发送方一旦收到3个连续的重复确认,就要立即重传,而不是等待超时计时器超时。
计算机网络——TCP的拥塞控制_第6张图片
    如上图所示,发送方在发送报文段M1后,即在发送M2后收到了来自接收方对M1的确认。而M3在传输过程中出现了丢失,此后发送方继续发送后续报文段。而发送方每收到一个失序报文段(M4,M5,M6),就发送重复确认报文给发送方。在收到连续3条重复确认M2后,发送方就立即重传M3,不再等待超时计时器的重传时间。而接收方收到M3后,发送对前6段报文的累计确认。
    而快恢复算法就是在发送方收到3个重复的确认报文后,将ssthresh的值更新为原来的一半,并且更新cwnd的值为ssthresh的值,这样就避免了再次执行慢开始算法。整体的控制情况如下图所示:
计算机网络——TCP的拥塞控制_第7张图片

你可能感兴趣的:(计算机网络,网络,网络协议,拥塞控制,拥塞避免,快重传)