【网络】详解TCP协议的流量控制和拥塞控制

【网络】详解TCP协议的流量控制和拥塞控制

  • 一. 流量控制
    • 模型
    • 窗口探测
  • 二. 拥塞控制
    • 模型
  • 总结

一. 流量控制

流量控制主要考虑的是接收方的处理速度。

接收端处理数据的速度是有限的.。如果发送端发的太快, 导致接收端的缓冲区被打满, 这个时候如果发送端继续发送, 就会造成丢包, 继⽽引起丢包重传等等⼀系列连锁反应。
TCP⽀持根据接收端的处理能力, 来决定发送端的发送速度. 这个机制就叫做流量控制(Flow Control)。

模型

在这里插入图片描述
实现这样的机制主要依赖于TCP报头中的16位窗口大小以及选项中的窗口扩展因子,该机制通过控制滑动窗口的大小来控制流量。

那将窗口设置为多大合适呢?
答案是设置为接收缓冲区剩余空间的大小

所以如何实现这个机制呢?就是在返回的ACK报文中将窗口大小设置为接收缓冲区剩余空间的大小。

窗口探测

如果返回的ACK中显示窗口大小为0了,那就说明对方的接收缓冲区已经满了,就应暂停发送数据。

那问题是:如果不发送新的数据,那就无法拿到新的ACK,就无法更新窗口大小,那这个该如何应对呢?

出现这种情况后,发送方会周期性的发送“窗口探测”包,不携带载荷,仅仅是让对方返回ACK报文,以获取新的窗口大小,如果窗口大小不是0,就可以继续发数据了。

二. 拥塞控制

拥塞控制主要考虑的是网络是否畅通。

我们知道,真实的网络十分复杂,也极有可能出现各种故障。如果出现故障(比如说网络堵塞),那发送速度就应该减缓,那发送方如何知道网络出现堵塞了呢?主要是通过“实验”的方式,如果按照某个窗口大小发送数据,出现丢包,就要减缓发送速度;如果没有丢包,就要增大发送速度

模型

在这里插入图片描述
拥塞控制如何实验出合适的窗口大小呢?

  1. 慢启动:以一个很小的窗口值开始发送;
  2. 指数增长:如果没有出现丢包,就以指数形式增大窗口大小;
  3. 线性增长:增长到一定速度后,变为线性增长(避免增长过快造成堵塞)
  4. 如果出现丢包,速度减半,线性增长(新版:TCP Reno版本

TCP Tahoe版本中要求速度减小至慢启动,主要是由于当时网络环境并不发达。

总结

流量控制关注于接收方的接收能力,主要通过接收方的接收缓冲区的大小来控制窗口大小;拥塞控制主要关注于网络是否通畅,主要通过实验的方式来得到一个合适的窗口大小。由于木桶效应,实际上应该取两者中相对较小的窗口大小来作为实际的窗口大小。

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

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

相关文章

Composer入门详解

文章目录 Composer入门详解一、引言二、Composer的安装1、Windows平台1.1、步骤 2、Linux平台2.1、步骤 3、Mac OS系统3.1、步骤 三、Composer的使用1、创建composer.json文件1.1、示例 2、安装依赖3、更新依赖4、移除依赖 四、总结 Composer入门详解 一、引言 Composer 是 P…

IP地址如何支持远程办公?

由于当今社会经济的飞速发展,各个方向的业务都不免接触到跨省、跨市以及跨国办公的需要,随之而来的远程操作的不方便,加载缓慢,传输文件时间过长等困难,如何在万里之外实现远程办公呢?我们以以下几点进行阐…

今日sql学习

目录 一,union all 二,GROUP_CONCAT函数 三,字符串函数:RIGHT()函数 四,字符串函数:LENGTH() 函数 / REPLACE()函数 五,条件更新表内的值 六,创建外键 七&…

【GaussDB】产品简介

产品定位 GaussDB 200是一款具备分析及混合负载能力的分布式数据库,支持x86和Kunpeng硬件架构,支持行存储与列存储,提供PB(Petabyte)级数据分析能力、多模分析能力和实时处理能力,用于数据仓库、数据集市、实时分析、实时决策和混…

3DCAT实时云渲染赋能2024广东旅博会智慧文旅元宇宙体验馆上线!

广东国际旅游产业博览会(以下简称“旅博会”)是广东省倾力打造的省级展会品牌,自2009年独立成展至今已成功举办十五届。2024广东旅博会于9月13—15日在广州中国进出口商品交易会展馆A区举办,线上旅博会“智慧文旅元宇宙体验馆”于…

【C++刷题】力扣-#35-搜索插入位置

题目描述 给定一个已排序的数组 nums 和一个目标值 target,你需要找出 target 在数组中的插入位置,以保持数组的有序性。如果 target 已经存在于数组中,则返回它的索引。 示例 示例 1 输入: nums [1,3,5,6], target 5 输出: 2 解释: 值 5…

力扣21~30题

21题(简单): 分析: 按要求照做就好了,这种链表基本操作适合用c写,python用起来真的很奇怪 python代码: # Definition for singly-linked list. # class ListNode: # def __init__(self, v…

awk脚本通过将多行拼接成一行并在 SQL 语句的末尾遇到分号(;)时打印出来

concact_sql.awk 脚本如下 {if ($0 ~ /^SELECT|UPDATE|DELETE|INSERT/) {flag 1buffer ""gsub(/\n/, "", $0)cli $0} else if (flag) {if ($0 ~ /;/) {flag 0print cli buffer $0} else {buffer buffer $0}} else if (flag 0) {print $0} } 这个 aw…

《镂空·幻象---基于新中式古国文化艺术文旅可延续VR个性化体验》| OPENAIGC开发者大赛高校组优秀作品

在第二届拯救者杯OPENAIGC开发者大赛中,涌现出一批技术突出、创意卓越的作品。为了让这些优秀项目被更多人看到,我们特意开设了优秀作品报道专栏,旨在展示其独特之处和开发者的精彩故事。 无论您是技术专家还是爱好者,希望能带给…

前端将JSON或者table直接导出为excel

一、引入Sheetjs或者npm直接下载 <script lang"javascript" src"https://cdn.sheetjs.com/xlsx-0.20.3/package/dist/xlsx.full.min.js"></script> 二、页面中使用 //json导出为excel <button onclick"exportExcel()">导出…

Python+whisper/vosk实现语音识别

目录 一、Whisper 1、Whisper介绍 2、安装Whisper 3、使用Whisper-base模型 4、使用Whisper-large-v3-turbo模型 二、vosk 1、Vosk介绍 2、vosk安装 3、使用vosk 三、总结 一、Whisper 1、Whisper介绍 Whisper 是一个由 OpenAI 开发的人工智能语音识别模型&#xf…

Parallels Desktop意外退出,Parallels Desktop安装软件很卡闪退怎么办?

Parallels Desktop是目前很优秀的虚拟机软件&#xff0c;操作简单&#xff0c;兼容性强而且安装也非常方便&#xff0c;备受苹果用户的喜爱和满意。然而&#xff0c;部分用户在使用Parallels Desktop的时候&#xff0c;会遇到意外退出或终端关机的情况&#xff0c;这不仅会影响…

利用 Llama 3.1模型 + Dify开源LLM应用开发平台,在你的Windows环境中搭建一套AI工作流

文章目录 1. 什么是Ollama&#xff1f;2. 什么是Dify&#xff1f;3. 下载Ollama4. 安装Ollama5. Ollama Model library模型库6. 本地部署Llama 3.1模型7. 安装Docker Desktop8. 使用Docker-Compose部署Dify9. 注册Dify账号10. 集成本地部署的 Llama 3.1模型11. 集成智谱AI大模型…

图像分类-demo(Lenet),tensorflow和Alexnet

目录 demo(Lenet) 代码实现基本步骤&#xff1a; TensorFlow 一、核心概念 二、主要特点 三、简单实现 参数: 模型编译 模型训练 模型评估 Alexnet model.py train.py predict.py demo(Lenet) PyTorch提供了一个名为“torchvision”的附加库&#xff0c;其中包含…

修复PDF打印速度慢

详细问题&#xff1a; 当您尝试将 PDF 文件打印到本地或网络打印机时&#xff0c;打印需要很长时间&#xff0c;因为发送打印作业后&#xff0c;打印机开始打印的速度非常慢&#xff0c;在打印任务中可以看到打印传输的数据在缓慢增长。 从其他程序打印时也不会出现打印速度慢…

单点登录Apereo CAS 7.1安装配置教程

笔者目前正在做一个单点登录的课题,历时较长总算摸到一些门路,其中的辛酸不易按下不表。截至本文发布,CAS的最新版本为7.1。由于涉及到课题内容,而且内容比较新,整理试验不容易,暂时只对VIP开放,后续课题完成后会完全开放,敬请谅解。 CAS项目区别 在CAS的项目选择上,…

Vue3 组件封装

1. 组件特性 在Vue中组件是一个独立的实例&#xff0c;每个组件都有共通点&#xff0c;就是&#xff1a;属性、插槽、事件、方法&#xff1b; 在日常我们使用第三方组件库的时候&#xff0c;组件库的文档都会说明上面四个特性&#xff0c;而组件封装就是围绕这四个特性进行的…

AI大模型 向量Embeddings+向量数据库实现文搜文、图搜图

文搜文、图搜图介绍: 文搜文 &#xff1a;即文本搜索文本&#xff0c;是指通过输入关键词或短语&#xff0c;在大量文本数据中检索出与之相关的内容 。 搜 索引擎&#xff08;百度、谷歌、 360 &#xff09; 、 文档管理系统 、 电商搜索 。 图搜图 &#xff1a;即图像搜…

从零开始搭建一个node.js后端服务项目

目录 一、下载node.js及配置环境 二、搭建node.js项目及安装express框架 三、集成nodemon&#xff0c;实现代码热部署 四、Express 应用程序生成器 一、下载node.js及配置环境 网上很多安装教程&#xff0c;此处就不再赘述了 版本信息 C:\Users\XXX>node -v v20.15.0…

IDEA Sping Boot 多配置文件application Maven动态切换

新建application-dev.yml与application-prod.yml pom.xml文件下添加profiles等 让idea识别出配置文件 <profiles><profile><id>dev</id><properties><!-- 环境标识&#xff0c;需要与配置文件的名称相对应 --><profiles.active>dev&…