TCP特性的滑动窗口,流量控制

2023-09-14 15:30:43

目录

一、TCP特性滑动窗口

二、TCP特性流量控制(作为滑动窗口的补充)


一、TCP特性滑动窗口

提高传输效率(更准确的说,让TCP在可靠传输的前提下,效率不太拉跨)💛

当然你要是想让TCP媲美UDP,也是痴人说梦,只能说减小差距。

一次性发一组数据,发数据的过程中,不需要等待ACK,就直接往前发,此时相当于“一份等待时间”等待四个ACK,把一次发多少数据,不用等待ACK这样的大小,称为窗口。💙 

窗口越大,此时批量发送的数据越多,效率越高,但是窗口不能无限大,如果是无限大,相当于完全不必等待ACK,此时就和不可靠传输差不多了,如果你无限大,接收方是否可以处理过来,中间设备是否可以承受住,都是未知数

那么为什么要叫“滑动窗口”,哪里有滑动呢

当前A给B发送了1001——2000,2001——3000,4001——5000这样的数据,需要等4个对应的ACK,这四个ACK到达顺序,也会有先有后,如2001->3001->4001->5001这种顺序到达。

那么问题来了,大家觉得 2001到达主机B的时候A是否继续往下发下一条信息?还是等待5001到了,才继续发下一组消息。

当然是2001到达主机B的时候,A可以继续往下发下一条信息(要不等到5001,🌚🌚🌚那不是一样的慢吗)

收到2001这个ACK之后,于是A就立即发送5001-6000这个数据,此时A等待ACK,3001->4001->5001->6001,仍是等待4条ACK,还是窗口一样的大,但是往后挪动了一个格子,直观来看:窗口往后挪了一步

滑动窗口是一个“形象的比喻”,实际本质批量发送数据(可以缩短时间,但是还需要等待)

批量传输的方式传输,中间丢包了咋办。

对于TCP来说,必然不会影响他的可靠性啊

两种情况:

1.数据丢了

2.ACK丢了

首先ACK丢了💚不用做任何处理,也是正确的,2001确认序号,表示2001之前的数据都收到了!!也包含1——1000。

虽然A没有收到1001这个ACK,但是2001这个ACK涵盖了1001的含义,(就相当于,有对象,结婚,有娃娃,小哥哥加你微信,你说我都有娃娃了,不就相当于你有结婚的伴侣了👪)

其次数据丢了:💜

此时必须要重传,啥时候重传,具体怎么重传。

在1001-2000丢失之后,2001-3000这个数据到达了B,B返回的ACK确认序号仍是1001,B仍然再向A索要1001这个数据~,虽然A后续给B的数据都会顺利的传递过去,但是如果只要是1001这个数没有,B始终会向A索要这个1001的数据,返回ACK确认序号,都是1001。

(返回ACK确认序号,都是1001)。

3次的重复应答(已经接收1-1001字节的数据),收到了3个同样的确认应答时,则选择重发。

接收方,有个缓冲区在接收数据

如果接收缓冲区,这一块是少了的,返回的ACK,就会始终索要1001这个数据报~一旦1001这个数据报被补充上了,此时1001-2000后面的数据都不必重新传输了,(都在缓冲区等待呢),接下来,就看后面数据加哪里缺失,直接索要缓冲区最后一条数据的下一个即可~

此时,相当于用最小的成本,来完成这个重传数据的操作(只是把丢了的数据重新传输,其他的数据都没有重复操作)快速重传->超时重传+滑动窗口下,产生的变形操作(本质仍然是超时重传)💖

滑动窗口,也不是说使用TCP就一定涉及,如果你通信的双方大规模传输数据,肯定是滑动窗口(此时按照快速重传来工作),如果是传输通信数据规模小,此时就没有滑动窗口。仍然按照之前的超时重传来工作,滑动窗口的思想方法,非常实用。

二、TCP特性流量控制(作为滑动窗口的补充)

滑动窗口,窗口越大,传输的效率就越高,但是窗口无限大,可能会使接收方处理不过来了,或者使传输中间链路处理不过来,这样就会出现丢包···此时就要重新传输了,窗口大并没有提高效率,反而还会影响效率。

流量控制,给滑动窗口,踩刹车,🙅避免窗口过大,导致处理不过来。

如何衡量接收方处理速度

此处就使用接收缓冲区剩余空间大小作为衡量指标->如果剩余空间越大,应用程序消费数据的速度越快

TCP报头中,这个字段只对ACK报文才有意义,这个数字表示当前缓冲区剩余空间大小,这个数字返回给发送方,就可以作为发送方下一轮发送的参考依据,这里的16位,是否意味着窗口大小就是64KB呢?

实际上下面有一个选项,这个是窗口大小的扩展因子,他可以实现位运算,也就是《这种,换句话说,此时能表示窗口的大小,实际是可以表示非常大的窗口。

虽然A不再发数据了,但是也不知道B这边啥时候可以腾出空间,就会周期发送窗口探测包(⚠️不涵盖任何数据),只是触发ACK,查看当前接收的情况。

一旦发现不是0了,就可以继续发送了,接收方就可以根据窗口大小,来反向限制发送方传输速度。

更多推荐

如何用Stable Diffusion模型生成个人专属创意名片?

目录1什么是二维码?2什么是扩散模型?3StableDiffusion环境搭建4开始制作创意名片结语1什么是二维码?二维码是一种用于存储和传输信息的方便而广泛使用的图像编码技术。它是由黑色方块和白色空白区域组成的二维图形,可以通过扫描设备(如智能手机)进行解码。二维码基于特定的编码标准和解码算法——其中包括错误检测和纠

如何通过简历展示自己的执行力和动力?

导语:简历是求职过程中的重要工具,通过合适的展示方式能够有效地展示自己的执行力和动力。本文将分享一些技巧,帮助您在简历中突出这两个关键能力。突出成就和项目经历:在简历中详细描述您曾经完成的项目或工作,并着重强调其中的具体成果。指出您所负责的任务,并描述您是如何通过积极的执行力完成这些任务的。例如,提及您成功地完成了某个

RHCSA_Linux 从命令行管理文件

目录一、文件命令规范:二、创建链接文件1、创建软链接文件2、创建硬链接文件三、目录操作命令1、创建目录--mkdir2、统计目录及文件的空间占用情况--du3、删除目录文件四、创建、删除普通文件1、创建普通文件2、删除普通文件五、数据流和重定向1、数据流2、重定向操作符3、输出重定向案例标准输出重定向:1>或>、1>>

2023华为OD统一考试(B卷)题库清单(持续收录中)以及考点说明

目录专栏导读2023B卷“新加题”(100分值)2023Q2100分2023Q2200分2023Q1100分2023Q1200分2022Q4100分2022Q4200分牛客练习题专栏导读本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测

初识Spring(一)IOC

Spring框架是一个开源的Java平台,它最初是由RodJohnson编写的,并且于2003年6月首次在Apache2.0许可下发布。Spring框架的核心特性是可以用于开发任何Java应用程序,但是在JavaEE平台上构建web应用程序是需要扩展的。Spring框架的目标是使J2EE开发变得更容易使用,通过启用基于

【简单教程】利用Net2FTP构建免费个人网盘,实现便捷的文件管理

文章目录1.前言2.Net2FTP网站搭建2.1.Net2FTP下载和安装2.2.Net2FTP网页测试3.cpolar内网穿透3.1.Cpolar云端设置3.2.Cpolar本地设置4.公网访问测试5.结语1.前言文件传输可以说是互联网最主要的应用之一,特别是智能设备的大面积使用,无论是个人存储文件资料,还是商业文件

SQL语句学习系列(1)

目录查询语句1.查询所有列的所有行:2.查询指定列的所有行:3.查询满足条件的行:4.查询满足多个条件的行:6.查询满足条件的行数:7.查询满足条件的唯一值:8.查询满足条件的分组统计:9.查询满足条件的平均值:10.查询满足条件的最大值:11.查询满足条件的最小值:12.查询满足条件的总和:13.查询多个表中的数据:

科技评估分类

声明本文是学习GB-T42776-2023科技评估分类.而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们1范围本文件确立了科技评估的分类原则,描述了分类方法,规定了编码方法、分类与代码。本文件适用于科技评估的规划、设计、委托、组织、实施、管理、研究、培训和信息化等相关活动。2规范性引用文件下列文件中

ISP代理是什么?双ISP是什么意思?

代理是路由互联网流量的中间服务器,通常分为两类:数据中心、住宅ISP。根据定义,ISP代理隶属于互联网服务提供商,但实际上,大家会将它们视为数据中心和住宅代理的组合。让我们仔细研究一下ISP代理,看看它们有何优点?什么是ISP代理?ISP指互联网服务提供商,ISP代理指IP地址由ISP服务提供商分配给用户,可以说它是托

OpenAI开发系列(二):大语言模型发展史及Transformer架构详解

全文共1.8w余字,预计阅读时间约60分钟|满满干货,建议收藏!一、介绍在2020年秋季,GPT-3因其在社交媒体上病毒式的传播而引发了广泛关注。这款拥有超过1.75亿参数和每秒运行成本达到100万美元的大型语言模型(LargeLanguageModels,LLMs)开启了自然语言处理(NLP)领域的新纪元。在这个阶段

GPIO基础知识的概括

GPIO是通用输入/输出端口的简称,本文以STM32为例进行说明,其他的单片机功能上都是大同小异,学会STM32的GPIO,我们可以触类旁通。GPIO的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。STM32的八种GPIO口模式1)GPIO_Mode_AIN模拟输入;2)GPIO_M

热文推荐