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

【计算机网络入门】TCP拥塞控制

目录

1. TCP拥塞控制和TCP流量控制的区别

2. 检测到拥塞该怎么办

2.1 如何判断网络拥塞?

3. 慢开始算法 + 拥塞避免算法

4.快重传事件->快恢复算法

5. 总结


1. TCP拥塞控制和TCP流量控制的区别

TCP流量控制是控制端对端的数据发送量。是局部的概念。

TCP拥塞控制是控制整个网络中每台主机的数据发送量。是整体的概念。

2. 检测到拥塞该怎么办

接收窗口代表数据的接收方接收数据的能力;拥塞窗口代表当前网络传输数据的能力。

如果发送了网络拥塞,应该减小拥塞窗口,也就间接减小了发送窗口。每一台主机就会减少数据的发送量,网络拥塞的情况就会有所缓解。 

2.1 如何判断网络拥塞?

①每个报文段发送以后都能得到ACK确认,不拥塞。

②发出的报文段未能按时收到ACK从而超时重传,严重拥塞。

③收到冗余的ACK,引发快重传,有点拥塞。

(假设接收窗口足够大)

3. 慢开始算法 + 拥塞避免算法

严重拥塞的时候,迅速降低拥塞窗口  + 网络不拥塞的时候,调大拥塞窗口

解释

        刚开始发送数据的时候设置拥塞窗口为1,拥塞阈值为16;此时发送一个报文段立即接受ACK,每收到一个ACK就让拥塞窗口的值+1,所以第二次发送两个报文段收到两个ACK那么拥塞窗口的值+2,以此类推,每次拥塞窗口的值会翻倍;知道阈值窗口达到设定的拥塞阈值16。

        达到拥塞阈值之后,在一个RTT内无论有多少个ACK一律全部把拥塞窗口的值+1。当返回16个ACK的时候,拥塞窗口的值+1。

        假如拥塞窗口到了24的时候出现了超时重传,此时网络处于严重拥塞,我们这个时候立即启用慢开始算法,把拥塞窗口降低到1,此时拥塞阈值的值会变成超时重传之前的拥塞窗口的一半也就是12;后面就继续翻倍,当拥塞窗口为8的时候,发送了8个报文段应该收到8个ACK,但是不能超过新的拥塞阈值12,所以只能加4到达阈值,到达阈值之后算法从慢开始变成了拥塞避免算法,后续不论收到多少ACK每次拥塞窗口只加1

4.快重传事件->快恢复算法

有点拥塞的时候,适当减少拥塞窗口。

我们查看上图,在RTT=12的时候此时发生了超时重传,说明网络拥塞特别严重,需要立即启用慢开始算法,把拥塞窗口的值变为1,拥塞阈值变成之前拥塞窗口的一半。但是如果只是收到了冗余ACK发生了快重传,说明网络此时稍微有点拥塞,采用快恢复算法把当前拥塞窗口变为原来的一半即可;拥塞阈值也变成拥塞窗口的一半,这样一来拥塞窗口和拥塞阈值是相等的,就可以使用拥塞避免算法:即无论收到多少个ACK,拥塞窗口只+1。

5. 总结

        一开始我们使用慢开始算法,使得拥塞窗口成倍数增加,当达到拥塞窗口=拥塞阈值的时候,我们需要切换算法为拥塞避免算法。我们需要进行分辨接下来的事件:

事件1:发生超时重传,说明网络非常拥塞,直接启用慢开始算法,把拥塞窗口重新变为1,拥塞阈值变为原来拥塞窗口的一半。

事件2:发生快重传事件,也就是收到多个重复ack,立即重传;说明网络有点拥塞,此时把拥塞窗口调整为原来的一半,拥塞阈值调整到原来拥塞窗口的一半,这样一来拥塞阈值和拥塞窗口相等,就可以开始拥塞避免算法了。

相关文章:

【计算机网络入门】TCP拥塞控制

目录 1. TCP拥塞控制和TCP流量控制的区别 2. 检测到拥塞该怎么办 2.1 如何判断网络拥塞? 3. 慢开始算法 拥塞避免算法 4.快重传事件->快恢复算法 5. 总结 1. TCP拥塞控制和TCP流量控制的区别 TCP流量控制是控制端对端的数据发送量。是局部的概念。 TCP拥…...

无人机遥控器无线传输技术解析!

一、主流无线传输方式 无线电遥控系统(2.4GHz/5.8GHz频段) 频段特性:2.4GHz频段穿透力强、覆盖距离远(可达2公里以上),适合控制信号传输;5.8GHz频段带宽更高,适用于高清视频流&…...

修改hosts文件,修改安全属性,建立自己的DNS

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…...

MySQL零基础教程16—表连接进阶

复习表别名 之前已经学习过,查询的时候可以使用as来对检索的列进行重命名,这样可以让sql更加简介,增强易读性(as可以省略) 此外,使用表别名还可以支持在一条select语句中,一个表是被多次使用 …...

【软件系统架构】系列三:数据库系统之三

1.数据故障与备份 1.1 安全措施 措施说明用户标识和鉴定最外层的安全保护措施,可以使用用户帐户、口令及随机数检验等方式存取控制对用户进行授权,包括操作类型(如查找、插入、删除、修改等动作)和数据对象(主要是数…...

lamp平台介绍

一、lamp介绍 网站: 静态 动态 php语言 .php 作用:运行php语言编写动态网站应用 lamp Linux Apache MySQL PHP PHP是作为httpd的一个功能模块存在的 二、部署lamp平台 1、测试httpd是否可正常返回PHP的响应 2、测试PHP代码是否可正常连接数据…...

826考研

初试总分第一的hh佬小红书:https://www.xiaohongshu.com/user/profile/64e106aa000000000100fe33 深研院巨佬经验贴:https://zhuanlan.zhihu.com/p/690464528 本部羊神经验贴:https://zhuanlan.zhihu.com/p/689494655 本部学硕佬经验贴&#…...

局域网自动识别机器名和MAC并生成文件的命令

更新版本:添加了MAC 地址 确定了设备唯一性 V1.1 局域网自动识别机器名和MAC并生成文件的批处理命令 echo off setlocal enabledelayedexpansionREM 设置输出文件 set outputFilenetwork_info.txtREM 清空或创建输出文件 echo Scanning network from 192.168.20.1…...

todo: 使用融云imserve做登录(android)

使用融云做登录注册思路 注册界面需要name, email, password考虑到融云注册用户的post格式 POST http://api.rong-api.com/user/getToken.json?userId1690544550qqcom&nameIronman这里的userId可以使用用户的email,但是要截断和 . 符号,即1690544…...

Mac OS升级后变慢了,如何恢复老系统?

我的一台Mac Air闲置很久了,原因是某次系统升级后用着会卡,有差不多10年没用了。今天想试着恢复一下出厂系统,目前看这条路可以走通。记录如下: 1、去哪里下载旧版系统? https://support.apple.com/zh-cn/102662 2、…...

cursor使用经验分享(java后端服务开发向)

前言 cursor是一款基于vscode,并集成AI能力的代码编辑器,其功能包括但不限于代码生成及补全、AI对话(能够直接将代码环境作为上下文)、即时应用建议等等,是一款面向未来的代码编辑器。 对于vscode,最先想…...

初次使用 IDE 搭配 Lombok 注解的配置

前言 在 Java 开发的漫漫征程中,我们总会遇到各种提升效率的工具。Lombok 便是其中一款能让代码编写变得更加简洁高效的神奇库。它通过注解的方式,巧妙地在编译阶段为我们生成那些繁琐的样板代码,比如 getter、setter、构造函数等。然而&…...

vue 安装依赖npm install过程中报错npm ERR! cb() never called!

解决办法: 步骤 1:清理 npm 缓存 npm cache clean --force rm -rf node_modules package-lock.json 步骤 2:一个第三方 npm 工具包,功能是 自动重试失败的 npm install 操作,适用于网络不稳定或依赖源不可靠的场景 …...

android接入rocketmq

一 前言 RocketMQ 作为一个功能强大的消息队列系统,不仅支持基本的消息发布与订阅,还提供了顺序消息、延时消息、事务消息等高级功能,适应了复杂的分布式系统需求。其高可用性架构、多副本机制、完善的运维管理工具,以及安全控制…...

libilibi项目优化(1)使用Redis实现缓存

第一版 获取视频信息使用旁路缓存 当视频信息存在缓存中时(命中),直接从缓存中获取。不存在缓存中时,先从数据库中查出对应的信息,写入缓存后再放回数据。 //获取视频详细信息RequestMapping("/getVideoInfo&q…...

The Rust Programming Language 学习 (二)

通用编程概念 变量和可变性 默认情况下变量是不可变的(immutable),不过你也可以选择让变量是可变的(mutable). 变量的遮蔽 你可以声明和前面变量具有相同名称的新变量,说这个是第一个变量被第二个变量遮蔽(shadow&…...

http链接转成https的链接的几种方法

以下是一个将HTTP链接转换为HTTPS的JavaScript函数,处理了多种常见输入情况: function convertToHttps(url) {if (typeof url ! string) return url;// 移除首尾空格并处理空字符串const trimmedUrl url.trim();if (!trimmedUrl) return https://;// 替…...

STM32——串口通信 UART

一、基础配置 Universal Asynchronous Receiver Transmitter 异步,串行,全双工 TTL电平 :高电平1 低电平0 帧格式: 起始位1bit 数据位8bit 校验位1bit 终止位1bit NVIC Settings一栏使能接受中断。 之前有设置LCD,…...

mybatis日期格式与字符串不匹配bug

异常特征:java.lang.IllegalArgumentException: invalid comparison: java.time.LocalDateTime and java.lang.String ### Error updating database. Cause: java.lang.IllegalArgumentException: invalid comparison: java.time.LocalDateTime and java.lang.Str…...

文献分享: ConstBERT固定数目向量编码文档

😂图放这了,大道至简的 idea \text{idea} idea不愧是 ECIR \text{ECIR} ECIR 👉原论文 1. ConstBERT \textbf{1. ConstBERT} 1. ConstBERT的原理 1️⃣模型的改进点:相较于 ColBERT \text{ColBERT} ColBERT为每个 Token \text{Tok…...

学习记录-用例设计编写

黑马测试视频记录 目录 一、 软件测试流程 二、测试用例编写格式 1、等价类法 2、边界值分析法 3、 判定表法 4、场景法​编辑 5、错误推荐法 一、 软件测试流程 二、测试用例编写格式 1、等价类法 2、边界值分析法 3、 判定表法 4、场景法 5、错误推荐法 时间紧任务重…...

学习工具的一天之(burp)

第一呢一定是先下载 【Java环境】:Java Downloads | Oracle 下来是burp的下载 Download Burp Suite Community Edition - PortSwigger 【下载方法二】关注的一个博主 【BurpSuite 安装激活使用详细上手教程 web安全测试工具】https://www.bilibili.com/video/BV…...

el-tree右键节点动态位置展示菜单;el-tree的节点图片动态根据节点属性color改变背景色;加遮罩层(opacity)

一、el-tree右键节点动态位置展示菜单 关键:@node-contextmenu="handleRightClick"与@node-click=“handleNodeClick” <div class="content"><el-tabs class="tabs" @tab-click="handleClick" v-model="Modal"…...

K8s 1.27.1 实战系列(一)准备工作

一、主机规划与硬件要求 1、节点数量 至少需要 3 台服务器(1 台 Master 节点,2 台 Worker 节点)。本地测试可缩容:若仅用于测试,可缩减为 1 个 Master 和 1 个 Worker,但需注意稳定性风险。2、硬件配置 ​Master 节点:建议 2 核 CPU、8GB 内存、80GB 硬盘。​Worker 节…...

说一下SpringBoot3新特新和JDK17新特性

JDK1.8&#xff08;Java8&#xff09;新特性 stream流式编程 流处理 Stream API 提供了对集合数据进行操作的一种高效、简洁的方式。它支持顺序和并行的聚合操作 如&#xff1a;过滤&#xff08;filter&#xff09;、排序&#xff08;sort&#xff09;、映射&#xff08;map&…...

Linux系统服务安全检测手记

一&#xff1a;服务器ip暴露ip和端口的安全问题 服务器IP和端口暴露在外网中确实存在一定的安全风险&#xff0c;以下是几个主要的安全问题及相应的缓解措施&#xff1a; ### 主要安全问题 1. **直接攻击**&#xff1a; - 暴露的IP地址和开放的端口可能成为黑客直接攻击的…...

鸿蒙与DeepSeek深度整合:构建下一代智能操作系统生态

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 https://www.captainbed.cn/north 目录 技术融合背景与价值鸿蒙分布式架构解析DeepSeek技术体系剖析核心整合架构设计智能调度系统实现…...

[创业之路-329]:华为铁三角实施的步骤

一、通用过程 华为铁三角实施的步骤主要包括以下几个关键阶段&#xff1a; 1、明确角色与职责 确定铁三角成员&#xff1a;组建由客户经理&#xff08;AR&#xff09;、解决方案经理&#xff08;SR&#xff09;和交付经理&#xff08;FR&#xff09;组成的铁三角团队。制定岗…...

1.15-16-17-18迭代器与生成器,函数,数据结构,模块

目录 15&#xff0c;Python3 迭代器与生成器15-1 迭代器15-1-1 基础知识15-1-2 迭代器与for循环工作原理 15-2 生成器&#xff08;本质就是迭代器&#xff09;15-2-1 yield 表达式15-2-2 三元表达式15-2-3 列表生成式15-2-4 其他生成器&#xff08;——没有元祖生成式——&…...

java面向对象(详细讲解)

第一章 类和对象 1.面向对象的介绍 1.面向过程&#xff1a;自己的事情自己做&#xff0c;代表语言c语言 2.面向对象&#xff1a;自己的事情别人做&#xff0c;代表语言java 3.为啥要使用面向对象思想编程&#xff1a;很多功能别人给我们实现好了&#xff0c;我们只需要拿过…...