基于TCP Reno的拥塞控制的基本原理

这篇具有很好参考价值的文章主要介绍了基于TCP Reno的拥塞控制的基本原理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

TCP的一个关键部分就是拥塞控制机制,因为IP层不向端系统提供显式的网络拥塞反馈,因此TCP必须使用端到端拥塞控制而不是使用网络辅助的拥塞控制。TCP Reno 就是广受赞誉的TCP拥塞控制算法,该算法主要由三部分组成:
1.慢启动;2. 拥塞避免;3.快速回复
慢启动和拥塞避免是TCP的强制部分,两者的差异在于对收到的ACK做出反应时增加cwnd长度的方式,我们会发现慢启动比拥塞避免更快地增加cwnd的长度,快速回复为推荐部分,对TCP发送方并非是必需的。

1.慢启动

慢启动是建立TCP连接后,采用的第一个调整发送速率的算法(模式)。在这个阶段,cwnd通常被初始化为1MSS(Maximum Segment Size),用于对TCP发送方而言,可用带宽可能比MSS/RTT大的多,慢启动的目的就是尽快找到上限。
在慢启动阶段,发送方每接收到一个确认报文,就会将cwnd增加1MSS的大小,于是其情况就为:

  • 初始cwnd=1MSS,所以可发送一个TCP最大报文段,成功确认后,cwnd = 2MSS;
  • 此时可发送两个TCP最大报文段,成功接收后,cwnd = 4 MSS;
  • 此时可发送四个TCP最大报文段,成功接收后,cwnd = 8 MSS ……

由于TCP是一次性将窗口内的所有报文发出,所以所有报文都到达并被确认的时间,近似的等于一个RTT。所以在这个阶段,拥塞窗口cwnd的长度将在每过一个RTT后,发送速率翻倍。因此TCP发送速率起始慢,但在慢启动发送速率将以指数级别增长。那在这个过程中何时结束这种指数增长,这又分几种情况:

  • 第一种:若在慢启动的过程中,发生了数据传输超时(timeout),则此时TCP将ssthresh的值设置为cwnd / 2,然后将cwnd重新设置为1MSS,重新开始慢启动过程,这个过程可以理解为试探上限;
  • 第二种:第一步试探出来的上限ssthresh将用在此处。若cwnd的值增加到>= ssthresh时,此时若继续使用慢启动的翻倍增长方式可能过于鲁莽,所以这个时候结束慢启动,改为拥塞避免模式;
  • 第三种:若发送方接收到了某个报文的三次冗余ACK(即触发了快速重传的条件),则进入到快速恢复阶段;同时,ssthresh = cwnd / 2,然后cwnd = ssthresh + 3MSS;

2.拥塞避免

刚进入拥塞避免模式时,cwnd的大小近似的等于上次拥塞时的值的一半,即距离拥塞可能并不遥远。所以,拥塞避免是一个速率缓慢且线性增长的过程,在这个模式下,每经历一个RTT,cwnd的大小增加1MSS。也就是说,假设cwnd包含10个报文的大小,则每接收到一个确认报文,cwnd增加1/10 MSS,因此在收到对所有10个报文段的确认后,拥塞窗口的值将增加一个MSS。那在这个过程中何时结束这种线性增长,这又分几种情况:

  • 第一种:在这个过程中,发生了超时,则表示网络拥塞,这时候,ssthresh被修改为cwnd / 2,然后cwnd被置为1MSS,并进入慢启动阶段;
  • 第二种:若发送方接收到了某个报文的三次冗余ACK(即触发了快速重传的条件),此时也认为发生了拥塞, 则进入到快速恢复阶段;同时,ssthresh = cwnd / 2,然后cwnd = ssthresh + 3MSS;

3. 快速恢复

在快速恢复阶段,每接收到一个冗余的确认报文,cwnd就增加1MSS,其余不变,而当发生以下两种情况时, 将退出快速恢复模式:

  • 第一种:在快速恢复过程中,计时器超时,那么ssthresh被修改为 cwnd / 2,然后cwnd被置为1MSS,并进入慢启动阶段;
  • 第二种:若发送方接收到一条新的确认报文(不是冗余ACKS),则cwnd被置为ssthresh,然后进入到拥塞避免模式;

三种模式相互转换状态图

下面给出一张三种模式互相转换的状态图,途中箭头上的是转换的条件,条件有上下两部分,横线上方的是上面事件引起的转换,而下方是转换时发生的操作。
基于TCP Reno的拥塞控制的基本原理
图为Reno拥塞控制状态机(状态图来源于计算机自顶向下书籍)

整个reno过程见下图:
基于TCP Reno的拥塞控制的基本原理文章来源地址https://www.toymoban.com/news/detail-438495.html

到了这里,关于基于TCP Reno的拥塞控制的基本原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • TCP流量控制与拥塞控制(重要)

     本文参考了一些优秀的书籍-图解TCP/IP,TCP协议卷一,小林coding,还有等等的知乎,百度.   小林coding  小林coding 知乎牛客的文章 : 万字长文 | 23 个问题 TCP 疑难杂症全解析_技术交流_牛客网 本文主要讲解TCP可靠性的机制: 流量控制与拥塞控制 尤其拥塞控制的算法是大公司非常愿

    2023年04月08日
    浏览(37)
  • TCP拥塞控制详解 | 7. 超越TCP

    网络传输问题本质上是对网络资源的共享和复用问题,因此拥塞控制是网络工程领域的核心问题之一,并且随着互联网和数据中心流量的爆炸式增长,相关算法和机制出现了很多创新,本系列是免费电子书《TCP Congestion Control: A Systems Approach》的中文版,完整介绍了拥塞控制的

    2024年02月11日
    浏览(41)
  • TCP重传, 滑动窗口, 流量控制, 拥塞控制

    1. 重传机制 TCP 实现可靠传输的方式之一,是通过 序列号与确认应答 。 在 TCP 中,当发送端的数据到达接收主机时,接收端主机会返回一个确认应答消息,表示已收到消息。 针对数据可能丢失的情况, 用重传机制来解决, 四种常见的重传机制: 超时重传 快速重传 SACK D-SACK 1.

    2024年01月22日
    浏览(47)
  • 运输层:TCP拥塞控制

    笔记来源: 湖科大教书匠:TCP的拥塞控制 声明:该学习笔记来自湖科大教书匠,笔记仅做学习参考 网络资源:在计算机网络中的链路容量(即带宽)、交换结点中的缓存和处理机等 拥塞:在某段时间,若对网络中某一资源的 需求超过 了该资源所能提供的 可用 部分,网络

    2024年02月12日
    浏览(50)
  • TCP拥塞控制

    本作是自己看书总结出来的,如有不正,请各位大佬指点一二 所谓拥塞控制,就是防止过多的数据注入到网络,使得网络中的通信设备和通信线缆不会因为过载而导致网络性能大大下降。 网络中通信设备具有数据处理转发性能、通信链路具有的传输带宽,而其中某台性能差

    2024年02月11日
    浏览(40)
  • TCP_拥塞控制

    24年春节马上就要到了,作为开车党,最大的期盼就是顺利回家过年不要堵车。梦想是美好的,但现实是骨感的,拥堵的道路让人苦不堪言。 在网络世界中,类似于堵车的问题也存在,而TCP(Transmission Control Protocol)的拥塞控制机制就是为了解决这一问题而设计的。 前面介绍

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

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

    2024年04月15日
    浏览(55)
  • TCP/IP(十五)拥塞控制

    一  拥塞控制 ①    拥塞控制 必要性 ②  拥赛窗口 cwnd ③  如何知道当前网络 是否出现 了拥塞呢? ④   拥塞控制有 哪些控制算法 ? ⑤  慢启动 ⑥   那慢启动 涨到什么时候 是个头呢? ⑦   拥塞避免算法 ⑧  拥塞发生   ⑨  快速恢复  

    2024年02月08日
    浏览(40)
  • 《利息理论》指导 TCP 拥塞控制

    欧文费雪《利息原理》第 10 章,第 11 章对利息的几何说明是普适的,任何一个负反馈系统都能引申出新结论。给出原书图示,本文依据于此,详情参考原书: 将 burst 看作借贷是合理的,它包含成本(报文),收益(传输吞吐),时间转移(burst or pacing),以及风险(丢包-耗能 or 丢包

    2024年02月08日
    浏览(38)
  • TCP滑动窗口、流量控制及拥塞控制详解

    TCP虽然是面向字节流的,但是TCP传输的单元确实报文段。一个TCP报文段分为首部和数据部分。TCP首部前20个字节是固定的,后面有4N个字节是可选的。因此,TCP首部最小字节数是20个字节。 下面我们看下一TCP首部中几个重要的字段: 源端口 和 目的端口 各占两个字节 序号 ,占

    2024年02月02日
    浏览(36)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包