TCP的流量控制的实现

滑动窗口的介绍

  滑动窗口是tcp协议中的一个重要概念,滑动窗口是字节为单位,而tcp头部的序列化和确认号也是以字节为单位的,滑动窗口里是含有可以传输的字节的数量(可以传输不是已经传输),而滑动窗口的大小是由接受数据的那一方来进行控制(通过发送报文的形式,tcp头部有一个字段就是滑动窗口的大小),这也是tcp流量控制的基础。

tcp的流量控制

  流量控制就是通过双方对滑动窗口的调整来对传输的字节数量进行控制,防止接收方的缓冲区满了以后,发送端还一直给他发送报文

流量控制:TCP使用滑动窗口机制来实现流量控制,通过接收方在TCP报文段的首部中告知发送方自己的可接收数据量,即剩余的缓冲区大小。发送方根据接收方提供的窗口大小来决定发送数据的量,保证接收方能及时处理和接收数据。

下面我们来举个例子

这里我们开始时的滑动窗口大小是四百,但是现在发送了前三百字节,还剩一百字节没有发送,而发送的三百字节里面,前面的两百字节已经得到了确认,而后面的一百字节在发送途中丢失,在后来接收端将滑动窗口缩小为300字节

那么我们可以看到,滑动窗口就将后面没有确认的那一百字节开始算,知道达到三百字节的宽度,所以我们可以发现,滑动窗口里面存放的是允许被发送的字节,而真正发送成功的字节是通过来自接收端的确认,然后滑动窗口就可以往前进,再继续持续发送消息,当我们将滑动窗口内的字节发送成功以后,如果没有收到接收方发来的确认信息,我们是不能再发送消息的,因为此时滑动窗口内可以发送的字节已经发送完毕,而有没有确认里面的那些字节是已经发送成功可以抛弃的。

后来服务端对501号字节进行确认,就说明500之前的所有数据都发送完毕并且接收成功,但是这个时候滑动窗口被置为0了,就说明滑动窗口内部无法装载任何字节,所以说此时也没有任何字节是可以被发送的。

 后面是滑动窗口持续为0时的解决办法

总结

流量控制机制的益处

  1. 防止过载:流量控制可以防止发送方发送数据的速度超过接收方处理数据的能力,从而避免接收方的缓冲区溢出。

  2. 提高资源利用率:通过允许接收方根据其当前的处理能力和可用资源来调整窗口大小,流量控制有助于更有效地利用网络资源。

  3. 避免数据丢失:如果接收方无法及时处理数据,流量控制可以减少因缓冲区溢出导致的数据丢失。

  4. 适应不同网络条件:流量控制机制可以根据网络的当前状况(如带宽、延迟和拥塞)动态调整数据传输速率,以适应不同的网络环境。

  5. 提高传输效率:通过允许发送方在等待确认之前发送多个数据包,流量控制可以减少等待时间,提高数据传输的效率。

  6. 增强可靠性:流量控制是TCP可靠传输机制的一部分,它确保数据按顺序到达,并且所有数据都得到确认,从而增强了整个通信过程的可靠性。

流量控制是TCP协议中确保数据可靠、有序传输的关键机制,它通过动态调整数据传输速率来适应网络条件和接收方的处理能力。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【0x001D】HCI_Read_Remote_Version_Information命令详解

目录 一、命令概述 二、命令格式及参数说明 2.12. HCI_Read_Remote_Version_Information 命令格式 2.2. Connection_Handle 三、生成事件 3.1. HCI_Command_Status 事件 3.2. HCI_Read_Remote_Version_Information_Complete 事件 四、命令执行流程 4.1. 命令发起阶段(…

一篇文章学会HTML

目录 页面结构 网页基本标签 图像标签 超链接标签 文本链接 图像链接 锚链接 功能链接 列表 有序列表 无序列表 自定义列表 表格 跨列/跨行 表头 媒体元素 视频 音频 网站的嵌套 表单 表单元素 文本框 单选框 多选框 按钮 下拉框 文本域和文件域 表…

C语言项目 天天酷跑(上篇)

前言 这里讲述这个天天酷跑是怎么实现的,我会在天天酷跑的下篇添加源代码,这里会讲述天天酷跑这个项目是如何实现的每一个思路,都是作者自己学习于别人的代码而创作的项目和思路,这个代码和网上有些许不一样,因为掺杂了…

如何完全剔除对Eureka的依赖,报错Cannot execute request on any known server

【现象】 程序运行报错如下: com.netflix.discovery.shared.transport.TransportException报错Cannot execute request on any known server 【解决方案】 (1)在Maven工程中的pom去掉Eureka相关的引用(注释以下部分&#xff0…

华为云国内版与国际版的主要区别解析

华为云作为全球领先的云计算服务提供商,提供了国内版和国际版两种服务。虽然它们都旨在为用户提供高效、可靠的云计算解决方案,但在功能、服务、合规性等方面存在一些显著的区别。我们九河云通过本文将详细分析华为云国内版与国际版的主要区别&#xff0…

基于北斗短报文+4G的森林草原火险因子综合监测方案

近年来,全球气候变暖的趋势日益严重,气温升高导致森林火灾的发生频率和严重程度逐年增加,对人类社会和自然生态环境造成了严重的危害。森林火灾的发生受到植被类型、气象条件、扑救方式和监管方式等多种因素的影响。 因此,林业建…

小程序app封装公用顶部筛选区uv-drop-down

参考ui:DropDown 下拉筛选 | 我的资料管理-uv-ui 是全面兼容vue32、nvue、app、h5、小程序等多端的uni-app生态框架 样式示例&#xff1a; 封装公用文件代码 dropDownTemplete <template><!-- 顶部下拉筛选区封装公用组件 --><view><uv-drop-down ref&…

3 JDK 常见的包和BIO,NIO,AIO

JDK常见的包 java.lang:系统基础类 java.io:文件操作相关类&#xff0c;比如文件操作 java.nio:为了完善io包中的功能&#xff0c;提高io性能而写的一个新包 java.net:网络相关的包 java.util:java辅助类&#xff0c;特别是集合类 java.sql:数据库操作类 IO流 按照流的流向分…

Uniapp 手机基座调试App 打包成Apk文件,并上传到应用商店

1.Uniapp手机基座调试App。 1.1 以下是我另一篇文章 讲解 uniapp连接手机基座调试App、 Hbuildx使用SUB运行到手机基座测试_hbuilder基座-CSDN博客 2.打包本地的uniapp项目为apk文件。 打包的方式有很多种&#xff0c;我们可以选择本地打包和远程云端打包两种方式。 我们在打包…

vue调试工具 Vue.jsDevtools

文件下载 Vue.js Devtools 通过网盘分享的文件&#xff1a;ddebf336f8a44293bd4db9d0f287bc1c.crx 链接: https://pan.baidu.com/s/1uS3a49CwW-B000p5GwUQmQ 提取码: ko89 下载完了 &#xff0c;拖入chrome里&#xff0c;打开详情配置. 打开红框中的开关 重启浏览器&#xff…

数智化时代医院临床试验人才培养的创新路径与实践探索

一、引言 1.1 研究背景与意义 在当今数实化与智能化技术飞速发展的时代&#xff0c;医疗行业正经历着深刻的变革&#xff0c;数智化医院已成为未来发展的重要趋势。临床试验作为药物研发、医疗器械验证以及医疗技术创新的关键环节&#xff0c;对于推动医学进步、提高医疗质量…

产品更新 | 一网联千策:华望M-Cowork平台上的SysML模型协同管理

华望产品更新速递 功能介绍 | 协同平台M-Cowork的强大功能 ◆在线SysML建模与预览 ◆版本控制和基线管理 ◆可追溯的审签流程 ◆全面的系统管理 产品亮点 | 进一步了解协同平台M-Cowork ◆M-Cowork的管理功能 ◆M-Cowork的预览功能 ◆M-Cowork的审签流程 前言 在系统工…

纯相位全息图优化算法综述

◀ 背景引入 ▶ 近年来&#xff0c;得益于光学、电子和计算机等各项技术的进步以及新算法的不断提出&#xff0c;计算全息技术飞速发展。由于现有液晶空间光调制器对于纯相位全息图具有更高的调制能力与衍射效率&#xff0c;纯相位全息图优化算法一直以来都是研究热点。目前&…

Unity复刻胡闹厨房复盘 模块一 新输入系统订阅链与重绑定

本文仅作学习交流&#xff0c;不做任何商业用途 郑重感谢siki老师的汉化教程与代码猴的免费教程以及搬运烤肉的小伙伴 版本&#xff1a;Unity6 模板&#xff1a;3D 核心 渲染管线&#xff1a;URP ------------------------------…

CentOS 7 安装、测试和部署FastDFS

目录 FastDFS环境搭建 安装 libfastcommon 库 安装FastDFS 查看编译后的文件 FastDFS配置 FastDFS启动 启动tracker服务 启动storage服务 查看storage是否已经注册到了tracker下 查看存储文件的目录 FastDFS重启 FastDFS关闭 使用fdfs_test进行测试 修改client.co…

通用导出任何对象列表数据的excel工具类

在工作中经常会遇到列表数据的导出&#xff0c;每次需要的时候都要去开发一次&#xff0c;且数据不断在变化&#xff0c;于是就有了下述的工具类&#xff0c;可传入各种实体对象的List&#xff0c;最终以指定格式导出excel&#xff0c;废话不多说&#xff0c;上代码~ 控制层代…

前端:改变鼠标点击物体的颜色

需求&#xff1a; 需要改变图片中某一物体的颜色&#xff0c;该物体是纯色&#xff1b; 鼠标点击哪个物体&#xff0c;哪个物体的颜色变为指定的颜色&#xff0c;利用canvas实现。 演示案例 代码Demo <!DOCTYPE html> <html lang"en"><head>&l…

AI口播数字人系统快速搭建方法来袭!零经验小白也能学会!

随着AI口播数字人的身影在短视频和直播中的出现频率持续升高&#xff0c;越来越多的创业者都察觉到了AI口播数字人系统所蕴含着的巨大潜在用户规模和广阔收益前景&#xff0c;并打听起了AI口播数字人系统怎么搭建相关的各种消息。 毕竟&#xff0c;根据当前的使用情况来看&…

中小学生心理健康测评系统:精准洞察,助力成长!

随着社会的发展&#xff0c;中小学生的心理健康问题日益受到关注。国家出台了一系列政策&#xff0c;强调要加强学生心理健康教育。然而&#xff0c;在实际的校园环境中&#xff0c;中小学生面临着各种各样的心理挑战&#xff0c;课程增多、难度加大&#xff0c;考试频繁&#…

2024年12月英语六级CET6写作与翻译笔记

目录 1 写作 1.1 大学为学生提供了探索各种可能性 1.2 自律在个人成长中的重要性 1.3 切实可行的目标 2 翻译 2.1 洋山港(Yangshan Port) 2.2 中国航天事业 2.3 北斗卫星导航系统 1 写作 1.1 大学为学生提供了探索各种可能性 1.2 自律在个人成长中的重要性 1.3 切实可…