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

95-拥塞控制

拥塞控制

  • 1.什么是拥塞控制
  • 2.拥塞控制的方法
    • (1)慢启动和拥塞避免
    • (2)快速重传和快速恢复

1.什么是拥塞控制

在计算机网络中的链路容量(即带宽)、交换结点中的缓存和处理机等,都是网络的资源。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种情况就叫做拥塞。
所谓拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制是一个全局性的过程,涉及到所有主机,所有路由器,以及与降低网络传输性能有关的所有因素。
在这里插入图片描述

2.拥塞控制的方法

(1)慢启动和拥塞避免

TCP 连接建立好之后,CWND 将被设置成初始值IW (Initial Window),其大小为2~4个SMSS。但新的 Linux 内核提高了该初始值,以减小传输滞后。此时发送端最多能发送 W字节的数据。此后发送端每收到接收端的一个确认,其 CWND 就按照式(3-1)增加:
CWND+=min (N,SMSS) _______________(3-3)
其中N是此次确认中包含的之前未被确认的字节数。这样一来,CWND 将按照指数形式扩大,这就是所谓的慢启动
慢启动必然使得 CWND 很快膨胀(可见慢启动其实不慢)并最终导致网络拥塞。因此 TCP 拥塞控制中定义了另一个重要的状态变量:慢启动门限slow start threshold size,ssthresh)。当CWND 的大小超过该值时,TCP 拥塞控制将进入拥塞避免阶段。
在这里插入图片描述

(2)快速重传和快速恢复

在很多情况下,发送端都可能接收到重复的确认报文段,比如 TCP 报文段丢失,或者接收端收到乱序 TCP 报文段并重排之等。拥塞控制算法需要判断当收到重复的确认报文段时,网络是否真的发生了拥塞,或者说 TCP 报文段是否真的丢失了。具体做法是:发送端如果连续收到 3 个重复的确认报文段,就认为是拥塞发生了。然后它启用快速重传和快速恢复算法来处理拥塞,过程如下:
1)当收到第 3 个重复的确认报文段时,按照式(3-3)计 ssthresh,然后立即重传丢失的报文段,并按照式(3-4)设置 CWND。
CWND=ssthresh+3*SMSS(3-42)每次收到1个重复的确认时,设置 CWND=CWND+SMSS。此时发送端可以发送新的 TCP 报文段(如果新的 CWND 允许的话)。
3)当收到新数据的确认时,设置CWNDssthresh (ssthresh 是新的慢启动门限值,由第一计算得到)。
快速重传和快速恢复完成之后,拥塞控制将恢复到拥塞避免阶段,这一点由第 3 步操作可得知。

快速恢复
快速恢复
快速重传
快速重传

http://www.lryc.cn/news/59632.html

相关文章:

  • Linux常见操作命令【二】
  • Linux驱动中断和定时器
  • 表达式和函数
  • C#基础复习
  • Windows服务器使用代码SSH免密登录并执行脚本
  • (Deep Learning)交叉验证(Cross Validation)
  • 通俗举例讲解动态链接】静态链接
  • K8S部署常见问题归纳
  • Redis高可用
  • Hyperledger Fabric 2.2版本环境搭建
  • macOS Monterey 12.6.5 (21G531) Boot ISO 原版可引导镜像
  • 【软件设计师13】数据库设计
  • SpringMVC的全注解开发
  • C# | 导出DataGridView中的数据到Excel、CSV、TXT
  • 新规拉开中国生成式AI“百团大战”序幕?
  • 日撸 Java 三百行day31
  • 在线绘制思维导图
  • 月薪20k的性能测试必备技能:发现性能瓶颈掌握性能调优
  • 3、Web前端学习规划:CSS - 学习规划系列文章
  • 城市轨道交通列车时刻表优化问题【最优题解】
  • 常年不卷,按时下班,工作能力强,同事求助知无不言,不扯皮,不拉帮结派,这样的职场清流竟然被裁掉了!...
  • 基于改进多目标灰狼优化算法的考虑V2G技术的风、光、荷、储微网多目标日前优化调度研究(Matlab代码实现)
  • Python 函数、文件与模块
  • 在Spring Boot微服务使用RedisTemplate操作Redis
  • 4月软件测试面试太难,吃透这份软件测试面试笔记后,成功跳槽涨薪30K
  • 人人拥有ChatGPT的时代来临了,这次微软很大方!
  • 【C++11】自动类型推导(Type Inference)
  • 拐点!智能座舱破局2023
  • SAP开发环境ABAP的搭建(客户端和服务器),Developer Key和AccessKey的绕过方法
  • VSCode的C/C++编译调试环境搭建(亲测有效)