拥塞控制相关总结

拥塞控制概念

网络拥塞:当某个阶段,网络中涌入大量数据包时,可能会导致路由器的转发不及时,大量数据包会陆续填满路由器的缓冲区,缓冲区满了,再涌入数据时就会造成数据的丢失,这时网络发生了拥塞

发送网络拥塞时,如果继续发送大量数据包,可能会导致数据包丢失,这时TCP就会触发重传机制,这样会使网络负担更重,于是会导致更大的延迟以及更多的丢包,这个情况就会进入恶性循环

拥塞控制:当发送方感知到网络发送拥塞时,发送方要减缓向网络中注入数据的速度,来减缓网络拥塞

拥塞窗口cwnd

拥塞窗口cwnd是发送方维护的一个状态变量,他会根据网络的拥塞程度动态变化;

发送窗口值swnd=min(cwnd,rwnd)

变化规律:

1.没有拥塞,增大

2.有拥塞,减小

什么时候判定网络出现拥塞

当发送方在规定时间内没有收到ACK报文,发生了超时重传,就会认为网络出现拥塞

网络延时是由什么造成的?

数据到达路由器时,路由器需要对数据进行拆包解析,决定把数据转发到哪个路由器上

慢启动算法

发送方每收到一个ACK,拥塞窗口cwnd的大小就会加1

慢启动:每经过一个传输轮次RTT,cwnd成指数型增长

1.当cwnd<ssthresh(慢启动门限slow start threshold),启用慢启动算法

2.当cwnd>=ssthresh时,启动拥塞避免算法

拥塞避免算法

  拥塞避免算法:每经过一个传输轮次,cwnd+1;

所以得出,拥塞算法就是将原本慢启动算法的指数增长变成线性增长,使增长速度缓慢;

慢慢增长后,网络就会进入拥塞状态,于是会出现丢包现象,这时就需要对丢包进行重传,于是触发【拥塞发生算法】

拥塞发生

触发条件:当经过慢启动和拥塞避免算法,cwnd慢慢增长,网络就会进入拥塞状态,于是会出现丢包现象,这时就需要对丢包进行重传,于是触发【拥塞发生算法】

1.超时重传触发:

 更新慢启动阈值:ssthresh=1/2*cwnd(当前窗口的一半) ,将当前窗口cwnd=1,然后执行慢启动算法,这样的话我们发送方可以在短时间内大量减小向网络中注入的速度,又可以尽快的将发送速度恢复到一个比较合适的值

2.快重传触发:

 发送快重传时,TCP认为当前网络状态没那么糟,更新慢启动阈值ssthresh=1/2*cwnd,将当前窗口大小设置为慢启动阈值cwnd=ssthresh,然后执行快恢复算法;

快恢复算法: 将当前窗口大小设置为cwnd+3,发送方每收到一个冗余的ACK,cwnd+1.直到收到一个好的ACK,cwnd重新设置为慢启动的门限值,执行拥塞避免算法

快恢复算法

触发机制:快重传与快恢复算法一般同时使用,快恢复算法认为你还能收到3个重复ACK说明网络也不那么糟糕,只丢了一小部分;

在进入快恢复前,拥塞发送算法已更新cwnd和ssthresh:

Cwnd=cwnd的一半,ssthresh=cwnd;

开始启动快恢复算法:

1.Cwnd=ssthresh+3(3指的是有3个数据包被收到了)

2.重传丢失的数据包

3.如果再收到重复的ACK,那么cwnd+1

4.如果收到新数据的ACK后,将cwnd设置回cwnd=ssthresh,因为该ACK确认了新的数据,说明之前没收到ACK回复的数据已收到,该恢复过程可以结束了,可以恢复到之前状态,即再次进入拥塞避免状态

发送方允许发送的字节

流量控制中16位通告窗口大小awnd

发送方允许发送的字节数=min(awnd,cwnd)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/809602.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hexo接入github Discussions评论系统

评论存储仓 可以是你的博客项目的(github)仓库&#xff0c;也可以单独新建一个评论存储仓库。 我的博客项目在gitee上&#xff0c;就以新建存储仓为例&#xff1a; 使用Discussions评论系统必须开通Discussions模块&#xff01; 安装giscus插件 https://github.com/apps/…

如何在香橙派AIpro开发板升级CANN软件包

香橙派AIpro开发板是香橙派联合昇腾精心打造的高性能AI开发板&#xff0c;开发者可以基于昇腾CANN软件栈能力&#xff0c;快速构建AI应用和业务&#xff0c;实现图像、视频等多种数据分析与推理计算。在之前的文章中&#xff0c;我们已经了解了如何搭建开发环境&#xff0c;并基…

通过调用Vcenter-Api获取Vcenter中服务器信息

通过调用Vcenter-Api获取Vcenter中服务器信息 文章目录 通过调用Vcenter-Api获取Vcenter中服务器信息1. 获取Vmware API帮助文档2. 获取访问凭证3. 获取服务器清单4. 获取服务器更多信息5. 获取虚机更多信息6. 获取磁盘信息7. 获取操作系统相关 1. 获取Vmware API帮助文档 htt…

SHAP安装问题

一、安装 pip install shap -i https://pypi.tuna.tsinghua.edu.cn/simple 二、遇到问题 1、提示报错如下&#xff1a; ModuleNotFoundError: No module named numba.core 安装numba&#xff1a; pip install numba -i https://pypi.tuna.tsinghua.edu.cn/simple 提示已经…

FPGA核心板在声呐系统中的应用

前言 声纳系统使用声脉冲来探测、识别和跟踪水下物体。一个完整的声纳系统是由一个控制和显示部件、一个发射器电路、一个接收器电路和同时能作为发射装置&#xff08;扬声器&#xff09;和探测装置&#xff08;高灵敏度麦克风&#xff09;的传感器组成。 声纳系统图 技术挑战…

python爬虫----BeautifulSoup(第二十天)

&#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; &#x1f388;&#x1f388;所属专栏&#xff1a;python爬虫学习&#x1f388;&#x1f388; ✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天…

Python初级笔记4 排序

冒泡排序 1. 算法步骤 比较相邻的元素。如果第一个比第二个大&#xff0c;就交换他们两个。 对每一对相邻元素作同样的工作&#xff0c;从开始第一对到结尾的最后一对。这步做完后&#xff0c;最后的元素会是最大的数。 针对所有的元素重复以上的步骤&#xff0c;除了最后一个。…

Linux/October

October Enumeration Nmap 扫描发现对外开放了22和80端口&#xff0c;使用nmap详细扫描这两个端口 ┌──(kali㉿kali)-[~/vegetable/HTB/October] └─$ nmap -sC -sV -p 22,80 -oA nmap 10.10.10.16 Starting Nmap 7.…

基于Springboot的笔记记录分享网站(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的笔记记录分享网站&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构…

华为OD技术面试-有序数组第K最小值

背景 2024-03-15华为od 二面&#xff0c;记录结题过程 有序矩阵中第 K 小的元素 - 力扣&#xff08;LeetCode&#xff09; https://leetcode.cn/problems/kth-smallest-element-in-a-sorted-matrix/submissions/512483717/ 题目 给你一个 n x n 矩阵 matrix &#xff0c;其…

基于spring boot的班级综合测评管理系统

基于spring boot的班级综合测评管理系统设计与实现 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开…

总分410+专业130+国防科技大学831信号与系统考研经验国防科大电子信息与通信工程,真题,大纲,参考书。

好几个学弟催着&#xff0c;总结一下我自己的复习经历&#xff0c;希望大家复习少走弯路&#xff0c;投入的复习正比换回分数。我专业课831信号与系统130&#xff08;感觉比估分要低&#xff0c;后面找Jenny老师讨论了自己拿不准的地方也没有错误&#xff0c;心里最近也这经常回…

蓝桥备赛——组合数、其他技巧

对字符串进行permutations排列组合 from itertools import permutations a abc #对字符串进行permutations排列组合 for i in permutations(a,3):x .join(i)print (x,end ) print (\n------------------------------------) permutations后面的参数&#xff0c;第一个表示…

【Python】探索 FunNLP:让自然语言处理更有趣

夜深了 我还为你不能睡 黎明前的心情 最深的灰 左右为难的你 不知怎样去面对 我能做的 只剩沉默 体会 爱情是让人沉溺的海洋 孤单的时候 想要去逃亡 转身的一瞬间 你出现在我身旁 你的眼泪 让我不敢开口讲 &#x1f3b5; 樊凡《我想大声告诉你》 简介&…

有趣的css - 动态雷达扫描

大家好&#xff0c;我是 Just&#xff0c;这里是「设计师工作日常」&#xff0c;今天分享的是使用 css 实现一个动态的雷达扫描&#xff0c;快学起来吧&#xff01; 《有趣的css》系列最新实例通过公众号「设计师工作日常」发布。 目录 整体效果核心代码html 代码css 部分代码…

AI Safety与AI Security:探索共同点和差异(下)

上篇&#xff08;详细&#xff09;中&#xff0c;我们探讨了人工智能生态系统的完整性、保密性、可用性以及关于AI safety的一些热门话题&#xff0c;接下来我们将继续探讨AI Safety究竟是什么&#xff1f;以及AI Safety与AI Security的同、异。 1 AI Safety究竟是什么&#x…

[2024最新]MySQL-mysql 8.0.11安装教程

网上的教程有很多&#xff0c;基本上大同小异。但是安装软件有时就可能因为一个细节安装失败。我也是综合了很多个教程才安装好的&#xff0c;所以本教程可能也不是普遍适合的。 安装环境&#xff1a;win 10 1、下载zip安装包&#xff1a; MySQL8.0 For Windows zip包下载地…

.Net Core/.Net 6/.Net 8,一个简易的消息队列

.Net Core/.Net 6/.Net 8,一个简易的消息队列 身份验证接口身份验证接口实现program.cs通过api调用 做着玩的&#xff0c; 只实现了消息入队出队功能&#xff0c;没有持久化&#xff0c;也没有其它任何高级功能 直接上代码 public class AMQBase//:ISingleton {/// <summary…

ARM v8 Cortex R52内核 06 初始化 Initialization

ARM v8 Cortex R52内核 06 初始化 Initialization 6.1 初始化 Initialization Cortex-R52 处理器提供了一种机制&#xff0c;可以在复位时初始化所有程序员可见的复位&#xff0c;包括没有被架构定义重置值的寄存器。 在Cortex-R52处理器大多数架构寄存器&#xff0c;例如r0…

Python爬虫学习(二):xpath解析html

--xpath教程地址可参照&#xff1a;XPath 教程 被解析的html示例&#xff1a;<html> <body> <div><ul><li class"item-0"><a href"link1.html">first item</a></li><li class"item-1">&l…