javaEE 初阶 — 滑动窗口
文章目录
- 滑动窗口
- 1 滑动窗口下如何处理丢包
TCP 工作机制:
确认应答机制
超时重传机制
连接管理机制
滑动窗口
确认应答机制、超时重传机制、连接管理机制 都是给 TCP 的可靠性提供支持的。
虽然事变的比较可靠了,但是是有牺牲的,那就是传输的效率变低了。
就比如说,做题目的时候如果写的比较快,虽然效率比较高,但是正确率会相对低一些。
如果做题的比较慢,每一个过程都仔仔细细的计算,那正确率就会比较高,但是效率就会降低。
这是一个道理的。
可靠性 和 效率 是冲突的,因此,UDP 虽然没有可靠性,但是传输的效率要比 TCP 高。
即使 TCP 的效率再怎么提高,也没有办法和 UDP 完全不考虑可靠性相比。所以说如果是只考虑效率不考虑可靠性的场景,
UDP 会比 TCP 更加的适合。
滑动窗口的本质上就是降低了确认应答,等待 ACK 消耗的时间。
滑动窗口通过批量发送,批量等待来把多分等待时间合并成一份来降低等待 ACK 消耗的时间。
进行 IO 操作的时候,其实时间成本主要是有两个部分:
1、等待的时间
1、数据传输的时间(数据拷贝)
大多数情况下, IO 花的时间成本大部分都是在等待。
比如说坐高铁回家过年,真正花在路上上的时间可能只有两个小时,但是 这其中有不少候车的时间。
对于确认应答的情况来说,每发送一次数据都是需要等待 ACK 到了才会再发下一个数据。
比如说在和别人聊天的时候,我只有等对方回复我之后,我才可以继续发送消息和对方聊天。
滑动窗口的本质就是不等待的批量发送一组数据,然后使用一份时间来等待着一组数据的多个 ACK。
把不需要等待就能直接发送的数据的最大量,称为 “窗口大小”。
上述的图中展示的窗口大小就是 4000。
滑动窗口就相当于是一次发送一个窗口大小的数据量,然后等待对方的回复。
只不过不是要等待所有的 ACK 到达后才能继续发送数据,而是到达一个 ACK 就可以继续发送下一条数据。
这就会致使此处等待的 ACK 始终是 四条。
这里的滑动窗口类似于帮室友带午饭,甲同学想吃炒面、乙同学想吃麻辣烫、丙同学想吃炒菜。
我去买的时候,为了防止带回来的午饭晾了,就要先点一份炒面,在等待炒面出锅之前就去点麻辣烫和炒菜。
每次点完一个就去点下一个,避免点一次点等待一次。窗口的大小始终不变,但是点的午饭会改变。(不可能每天都吃同样的)
本来等待 ACK 是 1001~5000,接下来收到了 2001 这个 ACK ,说明 2001 之前的数据(1001 ~ 2000)已经接收到了。
此时就可以直接发送 5001~6000 的数据,此时意味着等待 ACK 的返回范围就是 2001 ~ 6000。(③的情况)
需要注意的是上述的情况前提是窗口大小是图中为4个段情况。
1 滑动窗口下如何处理丢包
这里分为 ACK 丢了 和 发送的数据 丢了两种。
1、ACK 丢了
如果是返回的 ACK 丢了,则不需要做任何的处理。
这里的 1001 ACK 虽然丢包了,但是 下一个 2001 ACK 顺利的到达了,此时 2001 之前的数据都已经确认到达了。
2001 这个 ACK 其实就包含了上一个 1001 这个 ACK 的信息。
比如说,每个人几乎都是先从小学、初中、高中再到大学这样的求学顺序。
如果张三上了大学就意味着他已经上过小学、初中和高中了,也就是说后面的会包含前面的。
如上图所示,其实所有的 ACK 并不会全部都在发送,可能会故意商法一部分,这样既不会影响可靠性,也可以节省系统资源。
ACK 也不会全部丢包,如果丢包的概率非常大,那就说明此时的网络出故障了。
2、发送的数据丢了
据上图可知 2001 ~ 7000 的数据都已经被 B 收到了,接下来 B 索要的数据就是 7001。
还可以根据上图发现,1001 ~ 2000 丢包了,接下来 2001 ~ 3000 到达主机 B 之后,B 给 A 返回的 ACK 确认序号仍然是 1001。
(此时和发来的数据序号是什么关系不大了)
也就是说,现在是在索要 1001 开头的数据。
接下来的几个数据,B 返回的确认序号都是 1001,此时站在 A 的角度就会发现自己已经发了不少的数据了,
但是 B 仍是在索要 1001 ,说明 B 没有收到 1001,此时就要重传了。
上述丢包重传的方式叫做 “快速重传”(只重传丢失的数据),这个操作可以视为超时重传机制在滑动窗口下的变形。
如果当前传输的数据密集,按照滑动窗口的方式来传输,此时按照快速重传来处理丢包。
如果当前传输数据稀疏,不再按照滑动窗口方式,此时还是按照之前的的超时重传来处理丢包。
相关文章:
javaEE 初阶 — 滑动窗口
文章目录滑动窗口1 滑动窗口下如何处理丢包TCP 工作机制:确认应答机制 超时重传机制 连接管理机制 滑动窗口 确认应答机制、超时重传机制、连接管理机制 都是给 TCP 的可靠性提供支持的。 虽然事变的比较可靠了,但是是有牺牲的,那就是传输…...
大咖说·图书分享|狼书(卷3):Node.js高级技术
Node.js都有哪些需要掌握的高级技术?前端为什么同样需要学习? Node.js未来的发展趋势究竟如何?本期大咖说,Node布道师桑世龙携新作《狼书(卷3):Node.js高级技术》展开分享。 ● 嘉宾介绍 桑世龙:Node布道…...
1.5配置NBMA和P2MP网络类型
1.3.3实验5:配置NBMA和P2MP网络类型 1. 实验需求 控制OSPF DR的选举修改OSPF的网络类型2. 实验拓扑 配置NBMA和P2MP网络类型实验拓扑如图1-13所示。 图1-13 配置NBMA和P2MP网络类型 3. 实验步骤 帧中继的配置如图1-14和图1-15所示...
Java面试题
三次握手,四次挥手中,为什么要挥手四次 第一次握手,客户端发送同步报文到服务端,客户端知道自己有发送数据能力,不知道服务端是否有发送、接受数据能力。 第二次握手,服务端收到同步报文,并回复…...
opencv锁定鼠标定位
大家好,我是csdn的博主:lqj_本人 这是我的个人博客主页: lqj_本人的博客_CSDN博客-微信小程序,前端,python领域博主lqj_本人擅长微信小程序,前端,python,等方面的知识https://blog.csdn.net/lbcyllqj?spm1011.2415.3001.5343哔哩哔哩欢迎关注…...
机器连接和边缘计算
以一种高效、可扩展的方式进行连接和边缘计算的结合,解决了在工业物联网应用中的机器数据集成问题。 一 边缘计算 边缘计算描述了由中央平台管理的数据分散式处理。边缘计算对于工业物联网而言非常重要。在许多应用程序中,由于数据量非常大,…...
利用NGROK将本地网站发布为一个公开网站
一般与第三方服务集成时,需要提供https的回调URL,本地开发阶段可以利用NGROK将本地网站发布为公开的https网站。https://ngrok.com/downloadWindow下载地址:https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-windows-amd64.zip以Window…...
Vulnhub 渗透练习(一)—— Breach 1.0
环境搭建 环境下载: https://www.vulnhub.com/entry/breach-1,152/ 环境描述: Vulnhub 中对此环境的描述: VM 配置有静态 IP 地址 (192.168.110.140),因此您需要将仅主机适配器配置到该子网。 这里我用的是 VMware ࿰…...
初探Spring采用Spring配置文件管理Bean
文章目录Spring容器演示--采用Spring配置文件管理Bean(一)创建Maven项目(二)添加Spring依赖(三)创建杀龙任务类(四)创建勇敢骑士类(五)采用传统方式让勇敢骑士…...
【手写 Vuex 源码】第十二篇 - Vuex 插件机制的实现
一,前言 上一篇,主要介绍了 Vuex 插件的开发,主要涉及以下几个点: Vuex 插件的使用介绍;Vuex 插件开发和使用分析;Vuex 插件机制的分析; 本篇,继续介绍 Vuex 插件机制的实现&…...
图像去噪技术简述
随着每天拍摄的数字图像数量激增,对更准确、更美观的图像的需求也在增加。然而,现代相机拍摄的图像不可避免地会受到噪声的影响,从而导致视觉图像质量下降。因此,需要在不丢失图像特征(边缘、角和其他尖锐结构…...
数据迁移——技术选型
日常我们在开发中,随着业务需求的变更,重构系统是很常见的事情。重构系统常见的一个场景是变更底层数据模型与存储结构。这种情况下就要对数据进行迁移,从而使业务能正常支行。 背景如下:老系统中使用了mongo数据库,由…...
第二十七章 java并发常见知识内容(CompletableFuture)
JAVA重要知识点CompletableFuture常见函数式编程操作创建 CompletableFuture静态工厂方法处理异步结算的结果异常处理组合 CompletableFuturethenCompose() 和 thenCombine() 区别并行运行多个 CompletableFutureCompletableFuture Java 8 才被引入的一个非常有用的用于异步编…...
Qt扫盲-QMake 使用概述
QMake 使用概述一、概述二、简单开始三、使应用程序可调试1. 添加平台特定的源文件2. 如果文件不存在,停止qmake3. 检查多个条件一、概述 本教程教你qmake的基础知识。qmake 其实就是一个自动化编译的流程控制文件,也是Qt程序的生成makefile的工具&…...
Spring Cloud之Zuul
目录 简介 Zuul中的过滤器 过滤器的执行流程 使用过滤器 route过滤器的默认三种配置 路由到服务 路由到url地址 转发给自己 自定义过滤器 简介 Zuul是Netflix开源的微服务网关,主要功能是路由转发和过滤器,其原理也是一系列filters࿰…...
为什么要有分布式锁?
Redis避坑指南:为什么要有分布式锁?作者:京东保险 张江涛1、为什么要有分布式锁?JUC提供的锁机制,可以保证在同一个JVM进程中同一时刻只有一个线程执行操作逻辑;多服务多节点的情况下,就意味着有…...
【Redis】Redis持久化之RDB详解(Redis专栏启动)
📫作者简介:小明java问道之路,2022年度博客之星全国TOP3,专注于后端、中间件、计算机底层、架构设计演进与稳定性建工设优化。文章内容兼具广度深度、大厂技术方案,对待技术喜欢推理加验证,就职于知名金融公…...
Retinanet网络与focal loss损失
参考代码:https://github.com/yhenon/pytorch-retinanet 1.损失函数 1)原理 本文一个核心的贡献点就是 focal loss。总损失依然分为两部分,一部分是分类损失,一部分是回归损失。 在讲分类损失之前,我们来回顾一下二…...
Spring事务的失效场景
事务失效场景 方法用private或final修饰 Spring底层使用了AOP,而AOP的实现方式有两种,分别是JDK动态代理和CGLIB,JDK动态代理是实现抽象接口,CGLIB是继承父类,无论哪种方式,都需要重写方法来进行方法增强,而…...
芯动联科在科创板IPO过会:拟募资10亿元,金晓冬为实际控制人
2月13日,上海证券交易所披露的信息显示,安徽芯动联科微系统股份有限公司(下称“芯动联科”)获得科创板上市委会议审议通过。据贝多财经了解,芯动联科于2022年6月24日在科创板递交招股书。 本次冲刺上市,芯…...
数据结构之单链表
一、链表的组成 链表是由一个一个的节点组成的,节点又是一个一个的对象, 相邻的节点之间产生联系,形成一条链表。 例子:假如现在有两个人,A和B,A保存了B的联系方式,这俩人之间就有了联系。 A和…...
儿子跟妈妈关系不好怎么办?这里有解决办法!
15岁的男孩子正处于青春期,很多男孩都傲慢自大,听不进去别人的建议,以自己为中心,认为自己能处理好自己的事情,不想听父母的唠叨。母亲面对青春期的孩子也是举手无措,语气不好,会让孩子更叛逆。…...
论文投稿指南——中文核心期刊推荐(植物保护)
【前言】 🚀 想发论文怎么办?手把手教你论文如何投稿!那么,首先要搞懂投稿目标——论文期刊 🎄 在期刊论文的分布中,存在一种普遍现象:即对于某一特定的学科或专业来说,少数期刊所含…...
华科万维C++章节练习4_6
【程序设计】 题目: 编程输出下列图形,中间一行英文字母由输入得到。 A B B B C C C C C D D D D D D D C C C C C B B B A 开头空一格,字母间空两格…...
详解子网技术
一 : Internet地址 Intemet实质上是把分布在世界各地的各种网络如计算机局域网和广域网、数字数据通信网以及公用电话交换网等互相连接起来而形成的超级网络。但是 , 网络的物理地址给Internet统一全网地址带来两个方面的问题: 第一,物理地址是物理网络技术的一种…...
chatGTP的全称Chat Generative Pre-trained Transformer
chatGPT,有时候我会拼写为:chatGTP,所以知道这个GTP的全称是很有用的。 ChatGPT全名:Chat Generative Pre-trained Transformer ,中文翻译是:聊天生成预训练变压器,所以是GPT,G是生…...
hive数据存储格式
1、Hive存储数据的格式如下: 存储数据格式存储形式TEXTFILE行式存储SEQUENCEFILE行式存储ORC列式存储PARQUET列式存储 2、行式存储和列式存储 解释: 1、上图左面为逻辑表;右面第一个为行式存储,第二个温列式存储; …...
mysql数据库备份与恢复
mysql数据备份: 数据备份方式 物理备份: 冷备:.冷备份指在数据库关闭后,进行备份,适用于所有模式的数据库热备:一般用于保证服务正常不间断运行,用两台机器作为服务机器,一台用于实际数据库操作应用,另外…...
《NFL橄榄球》:辛辛那提猛虎·橄榄1号位
辛辛那提猛虎(英语:Cincinnati Bengals),又译辛辛那提孟加拉虎,是一支职业美式橄榄球球队位于俄亥俄州辛辛那提。他们现时为美联北区的其中一支球队,他们在1968年加入美国橄榄球联合会,并在1970…...
2、线程、块和网格
目录一、线程、块、网格概念二、代码分析2.1 打印第一个线程块的第一线程2.2 打印当前线程块的当前线程2.3 获取当前是第几个线程一、线程、块、网格概念 CUDA的软件架构由网格(Grid)、线程块(Block)和线程(Thread&am…...
大良用户网站建设/新站如何让百度快速收录
目录 一,为什么需要动态内存分配? 1,传统数组的缺点: 2,为什么需要动态内存分配? 二,动态内存函数的介绍 1,malloc和free 2,calloc 3,realloc 三,常见的动态内存错误 1,对N…...
网络营销推广公司结构/广东seo加盟
就不复制粘贴了,直接给出原文链接:以操作系统的角度述说线程与进程 转载于:https://www.cnblogs.com/rainbow70626/p/8035422.html...
浙江响应式网站建设公司/分析网站
西门子获首都机场18亿大单 早报记者 周玲 责任编辑 罗裕 2005-5-24 0:10:24 记者从西门子中国公司获悉,西门子日前从北京首都国际机场获得了一份价值约为18亿元的新订单。西门子将为北京机场提供一套用于新型T3航站楼的先进的行李处理系统。预期此项工程将在2…...
做网站公司(信科网络)/今日大事件新闻
原论文:Erica Rutter, John Lagergren, Kevin Flores. Automated Object Tracing for Biomedical Image Segmentation Using a Deep Convolutional Neural Network. MICCAI 2018.简介卷积神经网络近年来在许多生物医学图像任务中取得了领先的成果。CNN已经被广泛用于…...
挂机宝怎么做网站/seo外包服务专家
导航:网站首页 >C语言中%d和%f还有%c有什么区别?谢谢解答!,C语言中%c和%d,还有%f的区别C语言中%d和%f还有%c有什么区别?谢谢解答!,C语言中%c和%d,还有%f的区别匿名网友:int printf(const char *format,argument);fo…...
微信公众号 网站开发/媒体平台推广
【公司面试题】 “请用C、Java、C#或VB.NET 任意一种面向对象语言实现一个计算器控制台程序,要求输入两个数和运算符号,得到结果。 【小菜的第二个答案】 class Program {static void Main(string[] args){try{Console.Write("请输入数字Aÿ…...