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

news2024/11/25 13:12:11

目录

一、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了,就可以继续发送了,接收方就可以根据窗口大小,来反向限制发送方传输速度。

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

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

相关文章

清水模板是什么材质?

清水模板是建筑施工中常用的一种模板,用于浇筑混凝土结构的形成和支撑。它是指没有进行任何装饰和涂层处理的模板,通常由木材制成,如胶合板、钢模板等。下面是关于清水模板的详细介绍。 清水模板的材质多样,其中最常见的是胶合板。…

ASEMI二极管1N4148(T4)的用途和使用建议

编辑-Z 二极管是一种常见的电子元件,其中1N4148(T4)是一款广泛使用的快恢复二极管。它具有快速的开关特性和高反向阻挡能力,适用于多种电子应用。本文将介绍1N4148(T4)的特点、用途和如何正确使用该二极管…

《PostgreSQL中的JSON处理:技巧与应用》

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🐅🐾猫头虎建议程序员必备技术栈一览表📖: 🛠️ 全栈技术 Full Stack: &#x1f4da…

centos7更新podman到最新版

实验环境:centos7.7.1908 1.安装podman并查看版本 $ yum install podman -y $ podman -v [rootd7cb4574cd89 /]# podman -v podman version 1.6.4 centos7默认安装的podman版本是1.6.4,现在我们要把podman升级到最新版。 2.删除现有podman $ yum remo…

C语言编程题(三)整型和浮点型混合运算

C语言——整型和浮点型混合运算_int与float的混合计算__好好学习的博客-CSDN博客 请写出165.25(10进制)使用float型存储在计算机中的形式。 在计算机中,浮点数使用IEEE 754标准来表示。根据IEEE 754标准,32位的单精度浮点数(float类型&#…

软件流程图怎么画?详细画法看这里

软件流程图怎么画?软件流程图是软件开发过程中必不可少的一环,可以帮助开发人员更好地理解和规划软件开发的流程。在制作软件流程图的时候,我们可以使用一些制作工具。下面就给大家介绍一款好用的绘制工具。 我们可以使用【迅捷画图】来进行流…

28.Xaml ContexMenu控件---->右键菜单

1.运行效果 2.运行源码 a.Xaml源码 <Window x:Class="testView.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.mic…

anaconda,cuda,torch,lightning的安装

本博客仅作为初学者参考使用&#xff0c;汇总了多位大牛的博客&#xff0c;如有侵权请联系我删除 anaconda,cuda,torch,lightning的安装 1、Anaconda2、cuda3、pytorch4、lightning5、解决pip执行后导致C盘空间变小问题 1、Anaconda 作用&#xff1a; 1、可创建python包的虚拟…

RabbitMQ —— 初窥门径

前言 RabbitMQ作为当下主流的消息中间件之一&#xff0c;无疑是我们Java后端开发技术成长路线的重要一环&#xff0c;在这篇文章中荔枝将会梳理入门RabbitMQ的知识&#xff0c;文章涉及RabbitMQ的基本概念及其环境配置&#xff0c;荔枝的RabbitMQ是在Docker上部署的&#xff0c…

基于Gradio/Stable Diffusion/Midjourney的AIGC自动图像绘画生成软件 - Fooocus

0.参考 本项目&#xff1a;GitHub - lllyasviel/Fooocus: Focus on prompting and generating 作者&#xff1a;Lvmin Zhang lllyasviel 另一杰作 ContorlNet https://github.com/lllyasviel/ControlNet 模型&#xff1a;https://huggingface.co/stabilityai/stable-diffus…

基于人体呼出气体的电子鼻系统的设计与实现

基于人体呼出气体的电子鼻系统的设计与实现 摘要 电子鼻技术是通过模式识别技术对传感器采集的人体呼出气体进行分类训练的方法。本文研究实现的电子鼻系统包括下面几个部分:首先搭建以Arduino为控制核心的气路采集装置&#xff0c;包括MOS传感器和双阀储气袋构建的传感器阵列和…

探索数据结构:从基础到高级

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 数据结构是计算机科学和…

MiniMeters for Mac - 独立音频计量软件,创意音乐的最佳伙伴

MiniMeters for Mac是一款专为Mac用户设计的音频计量软件&#xff0c;它提供了一套功能强大、直观易用的工具&#xff0c;帮助你更好地理解和处理音频。这款软件不仅具备高度的专业性&#xff0c;同时也极具创新性&#xff0c;它的出现将彻底改变你对音频处理的认知。 .安装&a…

macOS 中 聚焦搜索 的使用教程

macOS中的聚焦搜索是一个强大的工具&#xff0c;它可以帮助你快速找到文件、应用程序、联系人、电子邮件、互联网搜索结果等。 下面是macOS中聚焦搜索的使用教程&#xff1a; 1.打开聚焦搜索&#xff1a; 使用键盘快捷键&#xff1a;按下键盘上的Command键和空格键&#xff0…

线性表(顺序表、链表、栈、队列)总结梳理

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…

提高项目团队执行力的6大注意事项

项目执行力的强弱直接影响项目的进度和时间安排&#xff0c;项目执行力高的团队通常能够更好地分配任务、协同合作和解决问题。这可以大幅提高工作效率&#xff0c;避免重复劳动和资源浪费。而执行力低的项目团队&#xff0c;往往难以按时完成任务无法及时发现和应对风险&#…

无涯教程-JavaScript - TYPE函数

描述 TYPE函数接收一个值,并返回一个表示指定值的数据类型的整数。当另一个函数的行为取决于特定单元格中值的类型时,请使用TYPE。 语法 TYPE (value) 争论 Argument描述Required/OptionalValue 值或对包含您想知道其类型的值的单元格的引用。 数据类型可以是数字,文本,逻辑…

C语言编程题(四)有符号数与无符号数相加

#include "stdio.h"int main() {unsigned int a6;int b-20;(ab>6)?printf(">6"):printf("<6"); } 要计算-20的补码&#xff0c;需要先找到它的二进制表示形式&#xff0c;然后将其转换为补码。首先&#xff0c;将20转换为二进制&…

Python 网络请求模块 urllib 、requests详解

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 Python 给人的印象是抓取网页非常方便&#xff0c;提供这种生产力的&#xff0c;主要依靠的就是 urllib、requests这两个模块。 话不多说&#xff0c;直接开搞&#xff0c;如果有什么疑惑/资料需要的可以点击文章末尾名片领取…

专业招投标书翻译怎样做比较好

在全球经济贸易一体化不断深入的时代&#xff0c;招投标作为国际通用的新型贸易方式&#xff0c;受到了大量中外企业的青睐。根据国际惯例&#xff0c;与招标采购活动有关的一切文件资料&#xff0c;均须使用英文编制。即使允许使用非英文语言编制&#xff0c;也必须随附一份英…