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

TCP拥塞控制机制

TCP拥塞控制机制是TCP协议中至关重要的一部分,用于防止网络出现拥塞,保证网络的高效、稳定运行

拥塞控制的基本概念

  • 拥塞:在计算机网络中,拥塞是指当网络中存在过多的分组时,网络性能下降的现象,如延迟增加、吞吐量降低,甚至导致分组丢失。
  • 拥塞控制目的:TCP拥塞控制通过调节发送方的发送速率,让网络中的数据流量维持在合理范围,避免网络过载,确保网络的高效与稳定。

拥塞控制的主要算法和阶段

慢开始(Slow Start)
  • 原理:TCP连接建立之初,发送方的拥塞窗口(cwnd,用于限制发送方在未收到确认时可发送的数据量)初始值通常较小,一般为1个最大报文段长度(MSS)。每收到一个ACK(确认应答),拥塞窗口就增加1个MSS。这使得发送方的发送速率呈指数级增长。
  • 示例:假设初始拥塞窗口为1个MSS,发送方发送1个MSS的数据后收到ACK,拥塞窗口变为2个MSS,接着可发送2个MSS的数据,收到对应ACK后,拥塞窗口变为4个MSS,以此类推。
  • 作用:快速探测网络的可用带宽,但如果不加以控制,可能会迅速导致网络拥塞。
拥塞避免(Congestion Avoidance)
  • 原理:为避免拥塞窗口增长过快引发网络拥塞,当拥塞窗口增长到慢开始门限(ssthresh)时,慢开始阶段结束,进入拥塞避免阶段。在该阶段,每收到一个ACK,拥塞窗口只增加1/cwnd个MSS,即拥塞窗口线性增长。
  • 示例:若当前拥塞窗口为16个MSS,阈值为16个MSS,进入拥塞避免阶段后,每收到一个ACK,拥塞窗口增加1/16个MSS。
  • 作用:在网络接近拥塞状态时,通过线性增长拥塞窗口,更平缓地利用网络带宽,避免网络拥塞。
快速重传(Fast Retransmit)
  • 原理:当发送方连续收到3个重复的ACK时,表明有一个报文段可能丢失,但网络尚未完全拥塞。此时,发送方无需等待超时重传定时器到期,立即重传丢失的报文段,并将慢开始门限(ssthresh)设置为当前拥塞窗口的一半,同时将拥塞窗口(cwnd)设置为ssthresh的值,然后进入拥塞避免阶段。
  • 示例:发送方发送报文段1、2、3、4、5,接收方成功收到1、3、4、5,但2丢失。接收方会连续发送3个对报文段1的ACK,发送方收到后立即重传报文段2。
  • 作用:快速恢复丢失的报文段,避免不必要的等待,提高传输效率。
快速恢复(Fast Recovery)
  • 原理:快速恢复是快速重传的后续操作。在快速重传之后进入该阶段,发送方将拥塞窗口(cwnd)设置为ssthresh加上3倍的MSS(因为收到3个重复ACK,说明有3个报文段已离开网络),然后每收到一个重复ACK,拥塞窗口增加1个MSS。当收到新的ACK时,将拥塞窗口设置为ssthresh的值,然后进入拥塞避免阶段。
  • 示例:假设当前拥塞窗口为16个MSS,慢开始门限为8个MSS。发送方收到3个重复ACK后,将慢开始门限设为8个MSS,拥塞窗口设为8 + 3 = 11个MSS。之后每收到一个重复ACK,拥塞窗口增加1个MSS。收到新的ACK时,将拥塞窗口设为8个MSS,继续拥塞避免。
  • 作用:在部分报文段丢失但网络仍有一定容量时,尽快恢复正常的发送速率。

拥塞控制流程

  1. 初始阶段:采用慢开始算法,拥塞窗口指数级增长。
  2. 达到阈值:拥塞窗口达到慢开始门限(ssthresh)时,进入拥塞避免阶段,拥塞窗口线性增长。
  3. 发生拥塞:若发生超时重传,表明网络出现严重拥塞,将慢开始门限设置为当前拥塞窗口的一半,拥塞窗口重置为1个MSS,重新开始慢开始过程。
  4. 快速重传和快速恢复:若连续收到3个重复ACK,执行快速重传和快速恢复算法,调整拥塞窗口和慢开始门限,然后进入拥塞避免阶段。

相关文章:

TCP拥塞控制机制

TCP拥塞控制机制是TCP协议中至关重要的一部分,用于防止网络出现拥塞,保证网络的高效、稳定运行 拥塞控制的基本概念 拥塞:在计算机网络中,拥塞是指当网络中存在过多的分组时,网络性能下降的现象,如延迟增…...

自动化UI测试 | 什么是测试驱动开发(TDD)和行为驱动开发(BDD)?有何区别?

TDD(测试驱动开发)和BDD(行为驱动开发)是两种独特的软件开发技术,它们在测试的内容和方式上有所不同。尽管名称相似,但服务于不同的目的。 什么是TDD? TDD代表测试驱动开发。它是一个过程&…...

DeepSeek 助力 Vue 开发:打造丝滑的进度条

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...

一场始于 Selector Error 的拯救行动:企查查数据采集故障排查记

时间轴呈现事故进程 17:00:开发人员小李正在尝试利用 Python 爬虫从企查查(https://www.qcc.com)抓取公司工商信息。原本一切正常,但突然发现信息采集失败,程序抛出大量选择器错误。17:15:小李发现&#x…...

微信服务号推送消息

这里如果 没有 就需要点新的功能去申请一下 申请成功之后就可以设置模版消息 推送到用户接受的页面是 需要后端调用接口 传递token 发送给客户...

24电子信息类研究生复试面试问题汇总 电子信息类专业知识问题最全!电子信息复试全流程攻略 电子信息考研复试真题汇总

你是不是在为电子信息考研复试焦虑?害怕被老师问到刁钻问题、担心专业面答不上来?别慌!作为复试面试92分逆袭上岸的学姐,今天手把手教你拆解电子信息类复试通关密码!看完这篇,让你面试现场直接开大&#xf…...

嵌入式EasyRTC实时通话支持海思hi3516cv610,编译器arm-v01c02-linux-musleabi-gcc

EasyRTC已经完美支持海思hi3516cv610,编译器arm-v01c02-linux-musleabi-gcc,总体SDK大小控制在680K以内(预计还能压缩100K上下): EasyRTC在hi3516cv610芯片上能双向通话、发送文字以及二进制指令,总体运行…...

如何搭建Wi-Fi CVE漏洞测试环境:详细步骤与设备配置

引言 随着Wi-Fi技术的普及,Wi-Fi网络成为了现代通信的重要组成部分。然而,Wi-Fi网络的安全性始终是一个备受关注的话题。通过漏洞扫描和安全测试,网络管理员可以及早发现并修复Wi-Fi设备中存在的安全隐患。本篇文章将详细介绍如何搭建Wi-Fi …...

sqlalchemy 使用fetchmany 报错 KeyError 或 AttributeError

问题 我遇到的问题是 AttributeError: Could not locate column in row for column xxxx 解决 首先看你定义的模型类是否缺失了相关的字段 Column XXX not found._clould not locate column in row for column-CSDN博客 其次 rows result.fetchmany(1000) for (row,) i…...

计算机视觉中图像的基础认知

一、图像/视频的基本属性 在计算机视觉中,图像和视频的本质是多维数值矩阵。图像或视频数据的一些基本属性。 宽度(W) 和 高度(H) 定义了图像的像素分辨率,单位通常是像素。例如,一张 1920x10…...

Docker Desktop WebAPI《1》

方法1 》》生成 的文档不要动, 》》执行 Container(Dockerfile) 会生成镜像文件和容器 》》生成的镜像和容器 在 Docker Desktop 中可以查看 用VS 的 Container Dockerfile 调试 但把这个调试工工具 停止,WebAPi就不能访问了 …...

ELK安装部署同步mysql数据

ELK 安装部署指南 ELK 是 Elasticsearch、Logstash 和 Kibana 的简称,用于日志收集、存储、分析和可视化。 1. 安装 Elasticsearch Elasticsearch 是一个分布式搜索和分析引擎。 1.1 下载并安装 访问 Elasticsearch 官网 下载最新版本。 解压并安装: tar…...

《OpenCV》——特征提取与匹配方法

特征提取 特征提取是从原始数据中提取出能够代表数据本质特征和关键信息的过程,在很多领域都有广泛应用。原始数据往往包含大量的冗余信息,特征提取的目的是去除这些冗余,提取出最具代表性、最能区分不同类别或模式的特征,从而降…...

Oracle DBA 诊断及统计工具-2

Oracle 数据表空间和索引表空间的资源分配比例总结 在 Oracle 数据库中,数据表空间和索引表空间并没有固定的资源分配比例,其分配需要综合考虑多种因素,以下是详细分析不同场景下的分配建议以及具体的分配思路。 影响分配比例的因素 数据读…...

如何使用DHTMLX Scheduler的拖放功能,在 JS 日程安排日历中创建一组相同的事件

DHTMLX Scheduler 是一个全面的调度解决方案,涵盖了与规划事件相关的广泛需求。假设您在我们的 Scheduler 文档中找不到任何功能,并且希望在我们的 Scheduler 文档中看到您的项目。在这种情况下,很可能可以使用自定义解决方案来实现此类功能。…...

​矩阵元素的“鞍点”​

题意: 一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。 本题要求编写程序,求一个给定的n阶方阵的鞍点。 输入格式: 输入第一行给出一个正整数n(1≤n≤6)。随后n行,每行给出n个整数…...

Qt的isVisible ()函数介绍和判断窗口是否在当前界面显示

1、现象:当Qt的窗口最小化时,isVisible值一定是true,这是正常的。 解释:在Qt中,当你点击窗口的最小化按钮时,Qt内部不会自动调用 hide() 方或 setVisible(false) 来隐藏窗口。相反,它会改变窗口…...

Unity-Mirror网络框架-从入门到精通之LagCompensation示例

文章目录 前言什么是滞后补偿Lag Compensation示例延迟补偿原理ServerCubeClientCubeCapture2DSnapshot3D补充LagCompensation.cs 独立算法滞后补偿器组件注意:算法最小示例前言 在现代游戏开发中,网络功能日益成为提升游戏体验的关键组成部分。本系列文章将为读者提供对Mir…...

Jenkins 通过 Execute Shell 执行 shell 脚本 七

Jenkins 通过 Execute Shell 执行 shell 脚本 七 一、创建 .sh 文件 项目目录下新建 .sh 文件 jenkins-script\shell\ci_android_master.sh添加 Execute Shell 模块 在 Command 中添加 # 获取 .sh 路径 CI_ANDROID_MASTER_PATH"${WORKSPACE}/jenkins-script/shell/…...

PyCharm 批量替换

选择替换的内容 1. 打开全局替换窗口 有两种方式可以打开全局替换窗口: 快捷键方式: 在 Windows 或 Linux 系统下,按下 Ctrl Shift R。在 Mac 系统下,按下 Command Shift R。菜单操作方式:点击菜单栏中的 Edit&…...

Linux-文件基本操作

1.基本概念 文件: 一组相关数据的集合 文件名: 01.sh //文件名 2.linux下的文件类型 b block 块设备文件 eg: 硬盘 c character 字符设备文件 eg: 鼠标,键盘 d directory 目录文件 eg: 文件夹 - regular 常规文件…...

HTTP 请求头、响应头常见字段分析

目录 请求头AcceptAccept-EncodingUser-AgentConnectionCache-ControlHost 响应头Content-EncodingETagContent-TypeVaryx-business-use-case-usageAccess-Control-Allow-Originfacebook-api-versionStrict-Transport-SecurityPragmaCache-ControlExpiresx-fb-request-id 和 x-…...

postman登录cookie设置

1.设置环境变量, 定义变量存放共享的登录信息 如Cookie 2.登录接口编码test脚本获取cookie信息 let jsessionidCookie pm.cookies.get("JSESSIONID");if (jsessionidCookie) {let cookie "JSESSIONID" jsessionidCookie "; Admin-Tok…...

Oracle临时表空间(基础操作)

临时表空间 临时表空间:用来存放用户的临时数据,临时数据在需要时被覆盖,关闭数据库后自动删除,其中不能存放永久性数据。 用户进程和服务器进程是一对一的叫做专用连接。 任何一个用户连到oracle数据库,oracle都会…...

数据结构-基础

1、概念: 程序 数据结构 算法 2、程序的好坏 可读性,稳定性,扩展性,时间复杂度,空间复杂度。 3、数据结构 是指存储、组织数据的方式,以便高效地进行访问和修改。通过选择适当的数据结构, 能…...

2024年博客之星年度评选—主题文章创作评审文章得分公布

博客之星活动地址:https://www.csdn.net/blogstar2024 创作影响力评审入围名单:https://blogdev.blog.csdn.net/article/details/145189549 目录 主题文章创作评审得分排名 主题文章创作说明 主题文章评选说明 创作影响力评审主题文章创作评审目前排名 博…...

【科技时讯】2025年2月13日科技新闻速递

文章目录 2025年2月13日科技新闻速递1. OpenAI宣布GPT系列重大升级计划2. 华为云推出DeepSeek V3/R1满血版模型3. 全球科技行业动态4. 国内科技企业动态5. 数字经济与统计制度革新6. 资本市场与科技股表现7. 科技新闻逻辑关系图 2025年2月13日科技新闻速递 1. OpenAI宣布GPT系…...

AGI的基石:什么是机器学习

什么是机器学习:机器学习是人工智能的子集,深度学习是其重要的组成部分,包括不限于:deep neural networks 、deep belief networks和recurrent neural networks。在深度学习中,有三种基本的神经网络架构:FF…...

SQL布尔盲注+时间盲注

1.布尔盲注 双重for循环 import requestsurl http://127.0.0.1/sqli-labs-master/Less-8/index.phpdef database_name():datebasename for i in range(1, 9): # 假设数据库名称最多8个字符for j in range(32, 128): # ascii 可见字符范围从32到127payload f"?id1 A…...

2024-2025年主流的开源向量数据库推荐

以下是2024-2025年主流的开源向量数据库推荐,涵盖其核心功能和应用场景: 1. Milvus 特点:专为大规模向量搜索设计,支持万亿级向量数据集的毫秒级搜索,适用于图像搜索、聊天机器人、化学结构搜索等场景。采用无状态架…...