TCP的滑动窗口机制

news2024/11/29 6:33:08

网络的错误检测和补偿机制非常复杂。

一、等待超时时间(返回ACK号的等待时间)

当网络繁忙时会发生拥塞,ACK号的返回变慢,较短的等待时间会导致频繁的数据重传,导致本就拥塞的网络雪上加霜。如果等待时间过长,包的重传又会出现很大的延迟,也会导致网络的速度变慢。根据服务器物理距离的远近,ACK号的返回时间也会产生很大的波动,而且我们还必须考虑到拥塞带来的影响。

TCP采用了动态调整等待时间的方法,根据ACK号的返回时间来调整等待时间。

二、滑动窗口

滑动窗口:发送一个包之后,不等待ACK号返回,而是直接发送后续的一系列包,充分利用ACK号的等待时间。

一来一回的ACK等待方式不会出现发送与处理速度不匹配的情况。但不等返回ACK号就连续发送包,就会出现发送频率超过接收方处理能力的情况。

当接收方的缓冲区溢出后,后面的数据就进不来了,会导致数据丢失。

滑动窗口处理这个问题的具体方式是,接收方将数据暂存到缓冲区并执行接收操作。当接收操作完成后,接收缓冲区中的控件会被释放出来,再通过TCP头部中的窗口字段将自己能接收的数据量告诉发送方。这样,发送方就不会发送过多的数据,导致超出接收方的处理能力。

序号、ACK号与其他数据一样,发送和接收操作都是双向进行的。

能够接收的最大数据量称为窗口大小。是TCP调优参数中非常有名的一个。

总结一下:

首先,协议栈会检查收到的数据块和TCP头部的内容,判断是否有数据丢失,如果没有问题则返回ACK号。

然后,协议栈将数据块暂存到接收缓冲区中,并将数据块按顺序连接起来还原出原始的数据。

最后将数据交给应用程序。

具体来说,协议栈会将接收到的数据复制到应用程序指定的内存地址中,然后将控制流程交回应用程序。将数据交给应用程序之后,协议栈还需要找到合适的时机向发送方发送窗口更新

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

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

相关文章

查看mysql是否开启远程端口

这个命令: sudo netstat -tlnp | grep mysqld如果是 就说明只开启了本地的,要更改这个设置,你需要编辑 MySQL 的配置文件,并确保 bind-address 设置为 0.0.0.0。打开 MySQL 的配置文件(通常是 /etc/mysql/mysql.conf…

二叉排序树的判断(二叉树的顺序存储):2022年408算法题

对于采用顺序存储方式保存的二叉树,根结点保存在SqBiTNode[0]中;当某结点保存SqBiTNode[i]中时,若有左孩子,则其值保存在SqBiTNode [2i1]中;若有右孩子,则其值保存在SqBiTNode[2i2]中;若有双亲结…

SD之lora训练

目录 为什么要训练自己的模型 SD模型微调方法 准备素材 1 确定要训练的LoRA类型 2 图片收集 3 图片预处理 4 图片标注 安装Koyha_ss 训练lora 1.准备参数和环境 2.启动训练 使用模型 1 拷贝训练过的lora模型 2 启动SD WebUI进行图像生成 为什么要训练自己的模型 …

来聊聊java8的数值流

简介 java8为我提供的简单快捷的数值流计算API,本文就基于几个常见的场景介绍一下数值流API的使用。 基础示例 我们以一个食物热量计算的功能展开演示,如下所示,可以看到Dish类它记录了每一个食物的名称、热量、类型等信息: public class…

百科词条可以删除吗?如何删除自己的百度百科?

近日,小马识途营销顾问接到不少客户删除自己百科词条的咨询,有不少人自己并没有去建立百科词条,但是网上已经有了,有的信息不正确,甚至有的信息是负能量的,对当事人自己造成一定的困扰,所以寻求…

【Proteus仿真】【51单片机】光照强度检测系统

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真51单片机控制器,使共阴数码管,PCF8591 ADC模块、光敏传感器等。 主要功能: 系统运行后,数码管显示光传感器采集光照强度值&#xff…

在线测试http接口,为您解析最佳测试方法

您是否正在寻找一种方便、高效且可靠的方法来测试您的http接口?在这篇文章中,我们将为您介绍在线测试http接口的最佳方法,帮助您确保您的接口在各种情况下都能正常运行。 什么是http接口? 在开始介绍如何测试http接口之前&#x…

json精讲

本文介绍json的规范及javascript和java对数据的交换读取 1. json介绍1.1 json简介1.2为什么使用 JSON? 2. json规范2.1基础规范2.2 key值为-字符串、数字、布尔值2.3 key值为对象Object2.4 key值为数组2.5 json本身就是一个数组 3.javascript操作json3.1 javascript…

git 本地有改动,远程也有改动,且文件是自动生成的配置文件

在改动过的地方 文件是.lock文件,自动生成的。想切到远程的分支,但是远程的分支也有改动过。这时候就要解决冲突,因为这是两个分支,代码都是不一样的,要先把这改动的代码提交在本地或者提交在本分支的远程才可以切到其…

freeswitch webrtc video_demo客户端进行MCU的视频会议

系统环境 一、编译服务器和加载模块 二、下载编译指定版本video_demo 三、配置verto.conf.xml 1.修改配置文件 2.重新启动 四、MCU通话测试 1.如何使用video_demo 2.测试结果 五、MCU的通话原理及音频/视频/布局/管理员等参数配置 附录 freeswitch微信交流群 系统环境 lsb_rel…

lv11 嵌入式开发 IIC(下) 20

目录 1 Exynos4412下IIC控制器介绍 1.1 总览 1.2 特征 1.3 工作框图 1.4 其他内容介绍 1.5 四种工作模式寄存器流程 2 IIC寄存器详解 2.1 概述 2.2 控制寄存器 2.3 状态寄存器 2.4 地址寄存器 2.5 数据寄存器 2.6 其他寄存器 3 MPU06050 3.1 简介 3.2 MPU6050主…

【已解决】解决UbuntuKali无法进行SSH远程连接

目录 Ubuntu20.04配置SSH远程连接Kali Linux配置SSH远程连接 Ubuntu20.04配置SSH远程连接 首先更新安装包 sudo apt-get update 下载SSH服务 sudo apt install openssh-server 查看SSH服务 service ssh status 打开 /etc/ssh/sshd_config文件修改配置文件 将PermitRootLog…

智能优化算法应用:基于郊狼算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于郊狼算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于郊狼算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.郊狼算法4.实验参数设定5.算法结果6.参考文献7.MA…

思科最新版Cisco Packet Tracer 8.2.1安装

思科最新版Cisco Packet Tracer 8.2.1安装 一. 注册并登录CISCO账号二. 下载 Cisco Packet Tracer 8.2.1三. 安装四. 汉化五. cisco packet tracer教学文档六. 正常使用图 前言 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新…

【数据结构第 6 章 ③】- 用 C 语言实现邻接表并简单介绍十字链表和邻接多重表

目录 一、邻接表 1.1 - ALGraph.h 1.2 - ALGraph.c 1.3 - Test.c 二、十字链表 三、邻接多重表 一、邻接表 邻接表(Adjacency List)是图的一种链式存储结构。在邻接表中,对图中每个顶点建立一个单链表,第 i 个单链表中的结…

使用ssm框架进行mapper或者service单纯测试时报错问题处理

问题 使用注解方式配置好ssm后,无法在测试中单独测试mapper层和service层。效果如下: 解决 关闭配置类中的EnableWebMvc 再次运行,即可完成测试。

【WPF 按钮点击后异步上传多文件code示例】

前言: WPF中按钮点击事件如何执行时间太长会导致整个UI线程卡顿,现象就是页面刷新卡住,点击其他按钮无反馈。如下是进行异步执行命令,并远程上传文件的代码。 ![异步上传文件](https://img-blog.csdnimg.cn/direct/20c071929b004dcf9223dee2…

postgresql安装部署(docker版本)

1.在线部署 创建数据库存储目录 mkdir /home/pgdata创建容器 docker run --name postgresql --restartalways -d -p 5432:5432 -v /home/pgdata:/var/lib/postgresql/data --shm-size10g -e POSTGRES_PASSWORD密码 postgis/postgis:12-3.2-alpine–name为设置容器名称 -d表…

第 375 场 LeetCode 周赛题解

A 统计已测试设备 模拟&#xff1a;记录当前已测试设备数量 class Solution { public:int countTestedDevices(vector<int> &batteryPercentages) {int res 0;int s 0;for (auto x: batteryPercentages) {if (x - s > 0) {res;s;}}return res;} };B 双模幂运算 …

NR Channel raster和Sync raster

NR中&#xff0c;由于信道带宽可能非常大&#xff0c;如果UE按照channel Raster进行同步信号搜索&#xff0c;需要的时间很长&#xff0c;且非常耗电&#xff1b;因而NR引入了Synchronization raster的概念&#xff0c;同步信号按照Sync Raster放置。 ARFCN 频点号对应Channel…