首页 > 其他分享 >TCP 的拥塞控制

TCP 的拥塞控制

时间:2023-10-22 15:32:47浏览次数:27  
标签:控制 TCP 发送 拥塞 cwnd 水管

一、什么是拥塞控制?不是有了流量控制吗?

前⾯的流量控制是避免发送⽅的数据填满接收⽅的缓存,但是并不知道整个⽹络之中发⽣了什么。

⼀般来说,计算机⽹络都处在⼀个共享的环境。因此也有可能会因为其他主机之间的通信使得⽹络拥堵。

在⽹络出现拥堵时,如果继续发送⼤量数据包,可能会导致数据包时延、丢失等,这时 TCP 就会重传数据,但是⼀重传就会导致⽹络的负担更重,于是会导致更⼤的延迟以及更多的丢包,这个情况就会进⼊恶性循环被不断地放⼤....

所以,TCP 不能忽略整个网络中发⽣的事,它被设计成⼀个⽆私的协议,当⽹络发送拥塞时,TCP 会⾃我牺牲,降低发送的数据流。

于是,就有了拥塞控制,控制的⽬的就是避免发送⽅的数据填满整个⽹络。

就像是一个水管,不能让太多的水(数据流)流入水管,如果超过水管的承受能力,水管会被撑爆(丢包)。

发送方维护一个拥塞窗口 cwnd(congestion window) 的变量,调节所要发送数据的量。

二、什么是拥塞窗⼝?和发送窗⼝有什么关系呢?

拥塞窗⼝ cwnd是发送⽅维护的⼀个的状态变量,它会根据⽹络的拥塞程度动态变化的。

发送窗⼝ swnd 和接收窗⼝ rwnd 是约等于的关系,那么由于加⼊了拥塞窗⼝的概念后,此时发送窗⼝的值是swnd = min(cwnd, rwnd),也就是拥塞窗⼝和接收窗⼝中的最⼩值。

拥塞窗⼝ cwnd 变化的规则:

只要⽹络中没有出现拥塞, cwnd 就会增⼤;

但⽹络中出现了拥塞, cwnd 就减少;

三、拥塞控制有哪些常用算法?

慢启动

拥塞避免

拥塞发生

快速恢复


标签:控制,TCP,发送,拥塞,cwnd,水管
From: https://blog.51cto.com/u_11344924/7977238

相关文章

  • 传输TCP/IP数据
    前言上一章讲到了委托协议栈发送消息我们知道IP地址之后,就可以委托操作系统内部的协栈上向这个目标IP地址,也就是我们要访问的web服务器发送消息了。收发数据的操作大致为以下几点创建套接字(创建套接字阶段)将管道连接到服务器端的套接字上(连接阶段)收发数据(通信阶段)断开管道......
  • Python教程(15)——Python流程控制语句详解
    Python流程控制是Python编程中非常重要的一部分,它用于控制程序的执行流程。Python提供了多种流程控制语句,包括if语句、while循环、for循环、break和continue语句等。这种流程控制在各个语言中都是大同小异的,如果你已经学过其他的语言,那么这章节就可以直接跳过。if语句if语句用于......
  • 03_流程控制语句
    ......
  • Python教程(15)——Python流程控制语句详解
    Python流程控制是Python编程中非常重要的一部分,它用于控制程序的执行流程。Python提供了多种流程控制语句,包括if语句、while循环、for循环、break和continue语句等。这种流程控制在各个语言中都是大同小异的,如果你已经学过其他的语言,那么这章节就可以直接跳过。if语句if语句用......
  • Matlab 模糊控制 车辆泊车 案例分享
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • Java基础的运算符和程序流程控制
    1.运算符计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。我们可以把运算符分成以下几组:算术运算符赋值运算符关系运算符逻辑运算符三目运算符位运算符1.1算术运算符算术运算符用在数学表达式中,它们的作用和在数......
  • 网络tcp与udp协议
    TCP协议TCP(transportcontrolprotocol,传输控制协议)是面向连接的,面向流的,提供高可靠性服务。收发两端(客户端和服务器端)都要有一一成对的socket,因此,发送端为了将多个发往接收端的包,更有效的发到对方,使用了优化方法(Nagle算法),将多次间隔较小且数据量小的数据,合并成一个大的数据块,然......
  • RocketMQ5.0 搭建 Name Server And Broker+Proxy 同进程部署、搭建RocketMQ控制台图形
    前言RocketMQ5.0中的几个角色NameServer、Broker和Proxy,它们的作用如下:NameServer:NameServer是RocketMQ的名称服务器,负责管理消息队列和消费者组。Broker:Broker是RocketMQ的消息代理服务器,负责接收、处理和存储消息。Proxy:Proxy是RocketMQ的代理服务器,用于扩展消息......
  • 使用Spring Integration接收TCP与UDP请求
    1.简介SpringIntegration是一个开源的项目,它是Spring生态系统的一部分,旨在简化企业集成(EnterpriseIntegration)的开发。它提供了一种构建消息驱动的、松散耦合的、可扩展的企业应用集成解决方案的方式。SpringIntegration基于SpringFramework构建,使开发者能够更容易地......
  • 滑模控制:滑模如何抗干扰
    趋近律在没有干扰的情况下仅是作到达阶段的趋近作用而已,但在存在干扰的情况下,其也充当抗干扰的鲁棒项。对于存在上界d~的干扰d:|d|<=d~,滑模s'=-βsgn(s)-s需要满足β>d~,此时强行将干扰消除,同时也在滑模面附近带来控制器抖振 参考:[滑模控制器](2)滑模控制抗干扰原理......