TCP_拥塞控制

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

引言

24年春节马上就要到了,作为开车党,最大的期盼就是顺利回家过年不要堵车。梦想是美好的,但现实是骨感的,拥堵的道路让人苦不堪言。
在网络世界中,类似于堵车的问题也存在,而TCP(Transmission Control Protocol)的拥塞控制机制就是为了解决这一问题而设计的。
TCP_拥塞控制,网络,术(知识点),tcp/ip,拥塞控制,慢启动,拥塞避免,快速恢复

为什么需要拥塞控制

前面介绍TCP滑动窗口的博文中,我们已经了解到TCP有两种流控机制,即接收方的滑动窗口和发送方的拥塞窗口。接收方的流控机制主要是为了防止接收方无法处理过多的数据而导致溢出,而拥塞控制则是为了避免网络中的拥塞,确保数据能够流畅传输。

类比高速堵车的案例,不同路段的通行能力不同,当车流量超过某一路段的容量时,就会发生“堵车”现象,需要交警来管控疏导。TCP的拥塞控制机制,是发送方主动感知、适配链路状态而采取的速度控制策略,在防止网络拥塞的前提下来最大程度的利用带宽。发送方是如何感知到“堵车”的,它又怎样来进行限流?

链路拥塞的感知方法

TCP拥塞控制主要依赖于两种链路拥塞的感知方法:网络辅助的拥塞控制和端到端的拥塞控制。

网络辅助的拥塞控制依赖于网络层提供的拥塞信息,而端到端的拥塞控制则通过报文段的丢失来感知链路的拥塞情况。

TCP采用端到端的拥塞控制,因为IP层不提供拥塞控制反馈。
TCP_拥塞控制,网络,术(知识点),tcp/ip,拥塞控制,慢启动,拥塞避免,快速恢复

TCP的拥塞控制机制

TCP的拥塞控制主要依赖于发送方维护的拥塞窗口(congestion window,缩写为cwnd)。cwnd控制着流量的发送速率,即数据发送到网络中的速率。与之相对应的是接收方的窗口大小(rwnd),由接收方通告。

发送方可发送的在途流量(未收到ACK)<= min {cwnd,rwnd}

TCP拥塞控制遵循三个指导性原则:

  • 一个丢失的报文段意味着拥塞,此时应当降低发送速率;一个超时事件或者四个确认(一个初始ACK和其后的三个冗余ACK),是一种隐含的丢包指示;
  • 一个确认报文段指示网络正在向接收方交付发送方的报文段,因此,当对先前未确认报文段的确认达到时,能够增加发送方的速率;
  • 带宽探测。给定ACK指示链路无拥塞,丢包说明有拥塞,TCP通过调节发送速率来探测带宽。当收到ACK时增加发送速率,直至出现丢包,降低速率。然后开始新的一轮探测,逐渐趋近于带宽上限。

接下来介绍tcp的拥塞控制算法,包括三个主要部分:慢启动,拥塞避免,快速恢复;其中慢启动和拥塞避免是TCP的强制部分,两者的区别在于收到的ACK时拥塞窗口的增速不一样,快速恢复是推荐部分。

慢启动

慢启动特点是发送速率慢,当增速(加速度)快,以指数增长;
TCP连接刚建立的时候,不了解实际的带宽情况,需要能快速的探测拥塞点,提高带宽利用率。
每收到一个确认时,拥塞窗口增加一个MSS,即每经过一个RTT周期,cwnd的大小翻倍。

假设MSS=1024、RTT=100ms、初始cwnd为1个MSS,最开始的发送速率约为80kps;但经过一秒后,cwnd会扩大到1024(假设尚未到拥塞点),速率提高到80Mbps。
TCP_拥塞控制,网络,术(知识点),tcp/ip,拥塞控制,慢启动,拥塞避免,快速恢复

慢启动阶段可能在以下情况结束:

  • 超时丢包:TCP记录慢启动阈值(ssthresh),将其设置为当前拥塞窗口大小的一半,然后将cwnd重置为1,重新开始慢启动的过程。

  • cwnd>=ssthresh:继续翻倍增加大小可能导致二次拥塞,结束慢启动进入拥塞避免。

  • 三个冗余的ACK:进入快速恢复状态。
    TCP_拥塞控制,网络,术(知识点),tcp/ip,拥塞控制,慢启动,拥塞避免,快速恢复

拥塞避免

拥塞避免阶段的特点发送速率快,但增速慢,以线性增长。在接近拥塞点时,缓慢增加发送速率,每个RTT只将cwnd的值增加一个MSS。处理超时丢包和三个冗余的ACK的行为与慢启动阶段相似。

快速恢复

在收到三个冗余的ACK时,发送方进入快速恢复状态,对丢失的报文进行重传。快速恢复中,对于引起TCP进入快速恢复状态的缺失报文段,对收到的每个冗余的ACK,cwnd的值增加一个MSS。最终,当对丢失报文段的一个ACK到达时,TCP在降低cwnd后进入拥塞避免状态。如果出现超时事件,处理行为和慢启动阶段超时丢包事件处理行为一样。

对丢失的报文进行重传时会涉及到重传策略,是回退N步(GNB)还是选择重传(SR)(这两种重传策略介绍,可参见前面博文TCP_可靠数据传输原理),reno算法使用选择性重传。

快速恢复是TCP的推荐策略,早期版本的TCP Tahoe,不管是超时丢包还是冗余ACK丢包事件,均直接进入慢启动阶段。reno对丢失报文的处理更加智能。

下图中,可以看到冗余ACK出现时,这两个算法拥塞窗口的变化差异。最开始慢启动阈值为8,第8个传输回合收到三个冗余ACK,然后慢启动阈值变为6。
TCP_拥塞控制,网络,术(知识点),tcp/ip,拥塞控制,慢启动,拥塞避免,快速恢复

通过慢启动、拥塞避免和快速恢复这三个阶段,TCP的拥塞控制机制实现了在不同网络环境下的自适应调整,以确保数据的可靠传输并最大化网络利用率。

拥塞控制的关键原则

  • 丢包指示拥塞: 丢失的报文段被视为拥塞的信号,导致发送方降低发送速率。
  • 确认报文段指示网络畅通: 接收到确认报文段时,说明网络正在成功传递数据,发送方可以适度增加发送速率。
  • 带宽探测: TCP通过调节发送速率来主动探测带宽,通过适应性地调整拥塞窗口大小,以达到最优的传输速率。

新的拥塞感知方式

除了基于丢包事件的拥塞感知方式外,还有基于RTT(往返时延)策略的拥塞感知方式。这种策略通过测量数据包的往返时延来推断网络的拥塞程度。
例如,Google推出的BBR算法就是一种基于RTT的拥塞控制算法,它能够在不同网络环境下实现较高的带宽利用率和较低的延迟。

结语

TCP的拥塞控制机制是保证网络传输稳定性和高效性的重要组成部分。通过慢启动、拥塞避免和快速恢复等阶段,TCP能够根据网络环境的变化动态地调整发送速率,避免拥塞的发生,从而确保数据能够顺利地传输。这种自适应调整的特性使得TCP成为网络通信中不可或缺的协议之一。

在网络世界中,就像在开车的路上一样,遇到拥堵时我们需要智能的调整速度和路径以避免更大的问题。TCP的拥塞控制就是网络通信的"交警",在网络的高速公路上引导数据流畅行,确保通信的顺畅和高效。

参考资料

TCP拥塞控制介绍和BBR算法

附*系列文章索引

整理起因
报文分析
报文格式解读
握手+挥手过程状态变化分析
滑动窗口介绍
可靠数据传输原理
拥塞控制
网络异常案例(1、2、3、4、5、6)
结束语文章来源地址https://www.toymoban.com/news/detail-831709.html

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

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

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

相关文章

  • TCP协议的重点知识点

    TCP(传输控制协议)是一种面向连接、可靠的数据传输协议,工作在传输层,提供可靠的字节流服务。它是互联网协议栈中最重要、最复杂的协议之一,也是面试中常被问到的知识点。本文将详细介绍TCP协议的各个重要概念。 TCP主要具有以下基本特性: 面向连接:在传输数据前必须先

    2024年02月11日
    浏览(28)
  • TCP的拥塞控制如何判断当前网络情况

    TCP的拥塞控制就像你在高速公路上开车一样。你通过观察交通情况来判断道路是否拥堵,然后做出相应调整以保持稳定的行驶速度。 在TCP中,发送方将数据发送到网络上。如果网络出现拥堵,数据包可能会丢失或延迟到达。为了判断当前网络情况,TCP使用一些方法: 丢包事

    2024年02月16日
    浏览(26)
  • 网络编程(12): TCP重传、滑动窗口、流量控制、拥塞控制

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

    2024年02月12日
    浏览(44)
  • 计算机网络 | 谈谈TCP的流量控制与拥塞控制

    对于滑动窗口,在上面也提到过了,在流量控制这一块,就要利用到这个滑动窗口的机制去实现两个主机之间的通信 [流量控制的目的]: 让发送方的发送速率不要太快,要让接收方来得及接收 然后来说一下很重要的例子,要注意理解,与后面的三次握手紧密度非常之大 首先

    2024年02月03日
    浏览(27)
  • 计算机网络笔记:TCP的拥塞控制方法

    TCP的拥塞控制算法有四种,分别是慢开始、拥塞避免、快重传和快恢复。 拥塞窗口 : 基本概念 :发送方维持一个叫做拥塞窗口的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且是动态变化着的。发送方让自己的发送窗口等于拥塞窗口。 发送方控制拥塞窗口的原则

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

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

    2024年04月15日
    浏览(42)
  • 【网络】传输层——TCP(滑动窗口&&流量控制&&拥塞控制&&延迟应答&&捎带应答)

    🐱作者:一只大喵咪1201 🐱专栏:《网络》 🔥格言: 你只管努力,剩下的交给时间! 上篇文章对TCP可靠性机制讲解了一部分,这篇文章接着继续讲解。 在上篇文章中,本喵讲解了TCP的确认应答机制: 如上图所示,主机A每发送一个数据段,主机B都要给一个 ACK 确认应答,

    2024年02月12日
    浏览(43)
  • 2023年打脸面试官之TCP知识点全方面梳理--边问边答

    1.TCP 三次握手之为什么要三次呢?事不过三? 过程如下图: 先来解释下上述的各个标志的含义       序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文

    2024年02月09日
    浏览(28)
  • 论TCP协议中的拥塞控制机制与网络稳定性

    TCP协议中的拥塞控制机制与网络稳定性的深度探讨 随着互联网的快速发展,网络流量呈现爆炸式增长,网络拥塞问题逐渐凸显。为了维护网络的稳定运行,TCP协议中引入了拥塞控制机制。这一机制的主要目的是防止过多的数据注入网络,从而避免网络拥塞。然而,尽管拥塞控

    2024年04月22日
    浏览(29)
  • 计算机网络 运输层下 | TCP概述 可靠传输 流量控制 拥塞控制 连接管理

    TCP是面向连接的运输协议 每一条TCP只能有两个端点,点对点 提供可靠的全双工交付 面向字节流,但占用很多资源 不提供广播和多播服务 所以从某种意义来说 UDP是一种更加有效的工作方式 TCP面向流的概念 把字节写入发送缓冲,加上TCP首部构成TCP报文段,从接收缓存读取字

    2024年02月04日
    浏览(35)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包