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


1.拥塞控制概述

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

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

    在介绍拥塞控制算法前,先假定如下条件:
在这里插入图片描述
    发送方需要维护一个叫做拥塞窗口cwnd的状态变量,其值取决于网络的拥塞程度,并且动态变化。

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

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

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

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

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值