TCP的拥塞控制

导读:本篇文章讲解 TCP的拥塞控制,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

概念:

拥塞: 若对网络中某一个资源的需求超过了该资源所能提供的可用部分,网络性能就要降低。
轻度拥塞状态: 网络的吞吐量明显小于理想的吞吐量时
进入拥塞状态: 若出现拥塞而不控制,整个网络的吞吐量将随输入负荷的增大而下降 ↓
死锁: 吞吐量为0时,网络将无法工作
实现方式: 发送方(主动)维护一个cwnd 拥塞窗口,窗口大小随网络的拥塞程度动态变化
在这里插入图片描述

在这里插入图片描述

90年之前,Tahoe版本:慢开始算法+避免拥塞算法

在这里插入图片描述

拥塞控制过程: (拥塞窗口cwnd会随网络拥塞程度,以及拥塞控制算法而动态变化)

  1. 在建立TCP连接时,使用慢开始算法,拥塞窗口cwnd值被设置为1,这里假设慢开始门限值ssthresh=16
  2. cwnd < ssthresh 执行慢开始算法时,发送方每收到一个对新报文段的确认,拥塞窗口cwnd按指数增长,继续开始下一轮的传输
  3. cwrd ≥ ssthresh,改用拥塞避免算法,拥塞窗口cwnd每次线性增加1,限制吞吐量
  4. 报文段丢失,则会超时重传,被判断为可能出现拥塞
    ①慢开始门限ssthresh减半
    ②拥塞窗口cwnd重置为1,重新开始慢开始算法
    (当个别报文段丢失时,该算法可能导致 传输被误认为发生了网络拥塞,因而降低传输效率,因此产生快重传算法 )

90年之后,Reno版本:

快重传算法:

原因: 有时个别报文段丢失,而网络并没有发生拥塞,这将导致发送方超时重传,并误认为发生了网络拥塞,因而降低传输效率
采用快重传算法可以让发送方尽早知道发生了个别报文段的丢失

概念: 快重传就是使发送方尽快重传,而不是等重传计时器超时再重传

实现:

  1. 发送方要立即对报文段进行确认
  2. 收到不按序到达的报文段时,要发出对已收到报文段的重复确认
  3. 一旦接收方收到3个连续的重复确认,在重传计时器超时之前立即重传

快重传控制过程:

  1. 发送方发送1、2号报文段,接收方1、2号报文段进行确认
  2. 发送方发送的3号报文段丢失,然后又发送了4号报文段,
  3. 接收方收到了不按序到达的报文段(4号),立即发回对2号报文段的重复确认,表示接收方应收到3号但没有收到
  4. 发送方继续发送5、6号报文段,接收方收到后发现不是按序到达的报文段,两次发回对2号报文段的重复确认
  5. 发送方收到3次对2号的重复确认,立即重传3号报文段,接收方收到后发回6号的确认报文段,表示6及之前的报文段都接收了,发送方收到后撤回3-6号的重传计时器,这样就不会造成3号的超时重传,就不会误认为拥塞而使cwnd=1及ssthresh减半,从而避免了降低传输效率

注意: 接收方只对按序到达的数据中的最高序号给出确认

快恢复算法:

实现:
一旦发送方收到3个连续的重复确认,就知道是丢失了个别报文段而不是拥塞,就可以执行快恢复算法
①发送方将慢开始门限值ssthresh和拥塞窗口cwnd都调整为当前窗口的一半
②然后执行避免拥塞算法,即cwnd线性增加
由于跳过了慢开始算法直接执行拥塞避免算法,所以叫快恢复

慢开始+拥塞避免+快重传+快恢复效果:
在这里插入图片描述

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

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/89303.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!