当前位置: 首页 > news >正文

核心机制:拥塞控制

限制滑动窗口的发送速率

流量控制,已经接受方的处理能力,进行限制

木桶效应  最短的一板

发生方的速率,不光要考虑接收方的速率,还要考虑传输路径,整个过程中所有的中间节点的情况

拥塞控制的核心思路是,"试试看",先按照比较小的速度发送数据,看一下是否丢包

如果丢包,说明中间链路已经有节点顶不住了,减小窗口大小,减小速度

如果不丢包,说明中间链路中的节点处于较好的状态,增大窗口的大小,增加速度

(面多加水,水多加面)

发送方的发送窗口的大小,同时取决于 流量控制 和 拥塞控制(谁小谁说的算)

发送方自己维护一个变量作为拥塞控制窗口

流量控制:接收方通过 ack 告诉对方流量控制窗口

选择两者中的较小值作为发送窗口的大小

拥塞窗口的大小变化过程,也是比较巧妙的设定,不是字节而是"份",一份多少个字节也是不确定的

1)初始状态下,窗口的大小是非常小的,刚开始,网络的畅通情况是未知的

2)慢启动之后如果不丢包,就会按照指数方式进行增长,短时间,快速的把窗口的大小给顶上去(刚开始的时候太小了)

3)指数增长到一定程度的时候(到达阈值),指数增长变成线性增长(主要怕指数增长的一次导致翻得倍数太大,超出上限太多)

4)线性增长到一定程度,终究会触发丢包(网络的承载能力到达上限了)

5.1)出现丢包,窗口的大小会一落千丈,回到最初的慢启动窗口额大小,接下来重复 指数增长/线性增长的过程

5.2)出现丢包,重新计算阈值(丢包窗口大小的 / 2),重阈值开始作为新的拥塞控制的窗口大小,继续线性增长(相比于旧版本,省略了指数增长的过程),使 tcp 的传输效率更加稳定,避免大起大落

相关文章:

  • 使用 LangChain 和 RAG 实现《斗破苍穹》文本问答系
  • Ros(控制机器人运动)
  • c++提升
  • 系统巡检常见工作
  • Python多线程编程:从GIL锁到实战优化
  • UE 5 和simulink联合仿真,如果先在UE5这一端结束Play,过一段时间以后**Unreal Engine 5** 中会出现显存不足错误
  • 深入解析Java17核心新特性(增强NullPointerException、强封装 JDK 内部 API、伪随机数生成器增强)
  • Makefile基础入门:从编译小白到自动化构建达人
  • 沉金PCB电路板制造有哪些操作要点需要注意?
  • 线程的生命周期与数量设置
  • 【TCP/IP和OSI模型以及区别——理论汇总】
  • 【工具使用】STM32CubeMX-FreeRTOS操作系统-任务、延时、定时器篇
  • DINO-R1
  • C语言-指针基础概念
  • leetcode题解236:二叉树的最近公共祖先
  • Elasticsearch中什么是分析器(Analyzer)?它由哪些组件组成?
  • JS利用原型链实现继承
  • 【leetcode】9. 回文数
  • (每日一道算法题)求根节点到叶节点数字之和
  • Java-IO流之字符输出流详解
  • 眉山北京网站建设/个人免费网上注册公司
  • 物流网站开发实训/磁力库
  • 网站开发与设计作业/seo长尾关键词优化
  • 网站信息更新如何做/公司品牌宣传方案
  • 网站建设维护管理办法/软文平台有哪些
  • 企业做营销网站/网络推广策划方案怎么写