TCP的拥塞控制算法:慢启动、拥塞避免、快重传、快恢复

这篇具有很好参考价值的文章主要介绍了TCP的拥塞控制算法:慢启动、拥塞避免、快重传、快恢复。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

TCP的拥塞控制

一、前言:什么是拥塞?什么是拥塞控制?
  • 拥塞:随着网络中的主机增加其发送速率并使网络变得十分拥挤,此时会经常发生丢包现象,导致网络的传输效率急剧降低。分组的超时重传通常被作为网络拥塞的标志

  • 如果不对网络拥塞进行控制,整个网络的吞吐量将随着输入负荷的增大而下降,降低网络的传输效率,如下图:

    tcp慢启动,计算机网络,tcp/ip,网络,网络协议,拥塞控制算法,拥塞避免

二、TCP的4种拥塞控制算法(慢开始拥塞避免快重传快恢复)
  • 为了便于讨论做一下假设
    1. 数据是单方向传送的,另一个方向只传输确认
    2. 接收方的总是有足够大的缓冲区,因此发送方的发送窗口仅由网络的拥塞程度决定,事实上发送窗口的大小由拥塞窗口和接收方的接收窗口大小共同控制,也即发送窗口 = min[接收窗口, 拥塞窗口];
    3. 最大报文段MSS的个数作为讨论单位,而不是以字节为单位
  • 发送方维护一个叫做拥塞窗口cwnd(congestion window)的状态变量,其值取决于网络的拥塞状况,动态变化
    • 拥塞窗户的维护原则:只要网络没有出现拥塞,cwnd就增大一些;但只要网络出现拥塞,拥塞窗口就减小一些
    • 以分组发生超时重传作为发生网络拥塞的依据
  • TCP还维护一个慢开始门限ssthresh状态变量
    • 当cwnd < ssthresh时,使用慢开始算法
    • 当cwnd > ssthresh时,使用拥塞避免算法
    • 当cwnd = ssthresh时,既可以使用慢开始算法,也可以使用拥塞避免算法
  • 当发生数据正常丢包,但又不是网络拥塞时,使用快重传算法和快恢复算法
    • 如何判断是发生了正常丢包而不是网络拥塞呢?
    • 当发送方连续接收到3次重复确认时,说明这网络不拥塞,只是正常丢包了
① 慢启动(慢开始)
  • 传输轮次:指把发送窗口内可以发送的数据全部发送并接收到最后一个TCP报文的确认报文这样一个来回

tcp慢启动,计算机网络,tcp/ip,网络,网络协议,拥塞控制算法,拥塞避免

  • 通常在一条TCP连接开始时,cwnd被设置为1个MSS(最大报文段),也即cwnd=1
  • 该阶段,每当TCP发送方将发送窗口的数据发送完,并顺利接收到所有的确认后,就会将拥塞窗口大小翻倍,也即慢启动阶段,cwnd以指数形式增长,如上图所示;注意这里忽略了接收窗口的影响,上文也提到了。
  • 拥塞窗口会一直增长直到到达慢开始门限ssthresh,开始执行拥塞避免算法
② 拥塞避免
  • 该阶段的拥塞窗口变为线性增长,每次cwnd+1,也即每次增加一个MSS

tcp慢启动,计算机网络,tcp/ip,网络,网络协议,拥塞控制算法,拥塞避免

  • 随着拥塞窗口的增加,发送速率不断提高,当TCP遇到分组超时重传时,即认为发生了网络拥塞
    1. 此时将更新ssthresh的值为当前拥塞窗口一半,上图中是更新为24的一半即12
    2. 更新cwnd的值为1
    3. 然后继续执行慢启动拥塞避免,如上图所示
  • 如果TCP发送方接收到连续的3个重复确认,则认为是正常的网络包丢失,而不是网络拥塞造成的(这正是快重传算法的功劳)
    1. 重传丢失的分组
    2. 执行快恢复算法
③ 快重传
  • 所谓的快重传算法,就是让发送方尽快重传,而不是等待超时重传计时器超时再重传
    • 要求接收方不要等待自己发送数据时才捎带确认,而是要立即发送确认
    • 即使是失序的报文段,也要立即发送对已收到的报文段的重复确认
    • 发送方一旦收到3个连续的重复确认,就将相应的报文段立即重传,而不是等待该报文的重传计时器超时再重传
  • 如下图所示:

tcp慢启动,计算机网络,tcp/ip,网络,网络协议,拥塞控制算法,拥塞避免

④ 快恢复
  • 如果发送方收到了3个重复确认,就执行快恢复算法
    • 慢开始门限sstresh拥塞窗口cwnd都设置为当前拥塞窗口的一半,然后执行拥塞避免算法
三、一个糅合了4种拥塞控制算法的例子

tcp慢启动,计算机网络,tcp/ip,网络,网络协议,拥塞控制算法,拥塞避免

tcp慢启动,计算机网络,tcp/ip,网络,网络协议,拥塞控制算法,拥塞避免

  1. 最初cwnd=1ssthresh=16,执行慢开始算法,cwnd大小指数增长
  2. cwnd到达慢开始门限ssthresh后,转而执行拥塞避免算法,cwnd线性加一增长
  3. 随着发送速率的增加,若发生超时重传,则将慢开始门限ssthresh减小为当前拥塞窗口的一半、再将拥塞窗口cwnd设置为1,然后执行慢开始-拥塞避免,重复1、2
  4. 若发送方收到3个重复确认,则表示分组丢失,发送方立刻重传相应分组;然后执行快恢复算法
  5. 慢开始门限ssthresh拥塞窗口cwnd重新设置为当前拥塞窗口的一半,然后执行拥塞避免算法

这是学习湖科大计网时我做的学习笔记,老师讲的太好了,建议去看原版,B站就有!!!


如果本文对您有用,可以点赞、收藏本文哦,下次用到时就好找多了
如果能关注作者就太好了,作者将持续学习,持续输出,持续分享!谢谢鼓励!文章来源地址https://www.toymoban.com/news/detail-787360.html

到了这里,关于TCP的拥塞控制算法:慢启动、拥塞避免、快重传、快恢复的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 网络编程(12): TCP重传、滑动窗口、流量控制、拥塞控制

    通过序列号和确认号确保可靠传输,当发送端发送数据给接收到,接收端会返回一个确认号,表示收到消息了 超时重传 :没有在指定时间内收到 ACK 报文 超时重传的两种可能: 数据包丢失 、 确认包丢失 超时重传时间 RTO : RTO 较大:重发就变慢了,丢包之后需要半天才能重

    2024年02月12日
    浏览(52)
  • 网络编程——TCP的特性之自动重传/流量控制/拥塞控制,一篇说清楚

    自动重传请求(Automatic Repeat-reQuest),通过使用确认和超时这两个机制,在不可靠服务的基础上实现可靠的信息传输,其中包括停止等待ARQ协议和连续ARQ协议 1.1 停止等待ARQ 发送窗口大小为1,接收窗口大小也为1 发送方每发送一个数据包,就要等待接收方返回ack包,如果在定

    2024年04月26日
    浏览(48)
  • 八股文——TCP四大机制!小白也能懂!(重传机制、滑动窗口、流量控制、拥塞控制)

    TCP巨复杂!同时在八股计算机网络中也经常被问到,必须会!这篇文章将让小白有个大体框架,知道怎么个事,面试中可以有话说,也能让佬更加巩固知识点。 TCP是一个可靠的传输协议,为了保证它的可靠性,出现七七八八的机制,它可能有数据的破坏、丢包、重复以及分片

    2024年04月25日
    浏览(30)
  • 谈谈 tcp 慢启动与拥塞控制

    慢启动是一种 capacity-search 策略,不限于 tcp,但不说 tcp 慢启动不配标题党,所以就说 tcp 慢启动。 慢启动用指数灌报文的方式快速探测网络容量,所谓 “慢” 是起点慢。值得注意的是,传统慢启动不做 pacing,不做拥塞控制,由于指数灌报文,非常容易拥塞,丢包,指标剧

    2024年02月03日
    浏览(41)
  • 网路原理-传输层UDP,TCP/IP(确认应答,超时重传,连接管理,三次握手,四次挥手,状态转换,流量控制,滑动窗口,拥塞控制,延时应答,捎带应答,异常情况,面向字节流)-网络层(IP协议,地址管理)

    本节重点 • 理解传输层的作⽤,深⼊理解TCP的各项特性和机制 • 对整个TCP/IP协议有系统的理解 • 对TCP/IP协议体系下的其他重要协议和技术有⼀定的了解 我们之前编写完了基本的 java socket ,要知道,我们之前所写的所有代码都在应⽤层,都是为了 完成某项业务,如翻译等。

    2024年04月15日
    浏览(54)
  • 计算机网络【Google的TCP BBR拥塞控制算法深度解析】

    Google的TCP BBR拥塞控制算法深度解析 宏观背景下的BBR 慢启动、拥塞避免、快速重传、快速恢复 : 说实话,这些机制完美适应了1980年代的网络特征, 低带宽 , 浅缓存队列 ,美好持续到了2000年代。 随后互联网大爆发,多媒体应用特别是图片,音视频类的应用促使带宽必须猛

    2024年02月03日
    浏览(44)
  • TCP流量控制+拥塞控制

    目标:流量控制主要解决的是发送方和接收方之间处理能力的不匹配问题。它的目的是确保发送方不会发送数据过快,以至于接收方无法及时接收并处理这些数据,从而避免数据包在网络中堆积和丢失。 实现方式:在TCP协议中,流量控制主要通过使用滑动窗口机制来实现。接

    2024年02月20日
    浏览(37)
  • TCP流量控制和拥塞控制

    当发送方发送速率大于接收方的处理速率时,接收方会把数据包放入缓冲区,当缓冲区满了,就只能将数据包丢弃。为了应对这种情况,流量控制就可以大展身手了 流量控制的作用对象是发送方和接收方 当接收方网络拥塞,未能及时ACK时,导致发送方超时重传大量数据,使

    2024年02月05日
    浏览(51)
  • TCP的拥塞控制_基础知识_四种拥塞控制方法

    在某段时间,若 对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏 ,这种情况就叫作 拥塞 。 计算机网络中的链路容量(带宽)、交换节点中的缓存和处理机等都是网络的资源 若出现拥塞而不进行控制,整个网络的吞吐量将随输入负荷的增大而下

    2024年01月19日
    浏览(44)
  • 如何解决TCP窗口与拥塞? TCP窗口与拥塞控制的解决办法

    计算机网络中的带宽、交换结点中的缓存和处理机等,都是网络的资源。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就会变坏。这种情况就叫做拥塞。拥塞控制就是防止过多的数据注入网络中,这样可以使网络中的路由器或链路不

    2024年02月07日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包