TCP 滑动窗口

        滑动窗口(Sliding window)是一种流量控制技术。早期的网络通信中,通信双方不会考虑网络的拥挤情况直接发送数据。由于大家不知道网络拥塞状况,同时发送数据,导致中间节点阻塞掉包,谁也发不了数据,所以就有了滑动窗口机制来解决此问题。滑动窗口协议是用来改善吞吐量的一种技术,即容许发送方在接收任何应答之前传送附加的包。接收方告诉发送方在某一时刻能送多少包(称窗口尺寸)。
        TCP 中采用滑动窗口来进行传输控制,滑动窗口的大小意味着接收方还有多大的缓冲区可以用于接收数据。发送方可以通过滑动窗口的大小来确定应该发送多少字节的数据。当滑动窗口为 0
时,发送方一般不能再发送数据报。
        滑动窗口是 TCP 中实现诸如 ACK 确认、流量控制、拥塞控制的承载结构。

        窗口理解为缓冲区的大小滑动窗口的大小会随着发送数据和接收数据而变化。

        通信的双方都有发送缓冲区和接收数据的缓冲区

服务器:

        发送缓冲区(发送缓冲区的窗口)

        接收缓冲区支收缓冲区的窗口)

客户端:

        发送缓冲区(发送缓冲区的窗口)

        接收缓冲区(接收缓冲区的窗口)

滑动窗口:

 发送方的缓冲区:

        白色格子:空闲的空间

        灰色格子:数据已经被发送出去了,但是还没有被接收

        紫色格子:还没有发送出去的数据

接收方的缓冲区:

        白色格子:空闲的空间

        紫色格子:已经接收到的数据

#mss:Maximum Segment size(一条数据的最大的数据量)

#win:滑动窗口

1.客户端向服务器发起连接,客户单的滑动窗口是4096,一次发送的最大数据量是1460

2.服务器接收连接情况,告诉客户端服务器的窗口大小是6144,一次发送的最大数据量是1024

3.第三次握手

4.4-9客户端连续给服务器发送了6k的数据,每次发送1k

5.第10次,服务器告诉客户端:发送的6k数据以及接收到,存储在缓冲区中,缓冲区数据已经处理了2k,窗口大小是2k

6.第11次,服务器告诉客户端:发送的6k数据以及接收到,存储在缓冲区中,缓冲区数据已经处理了2I窗口大小是2k

7.第12次,客户端给服务器发送了1k的数据

8,第13次,(第一次挥手)客户端主动请求和服务器断开连接,并且给服务器发送了1k的数据

9.第14次,(第二次挥手)服务器回复ACK8194,a:同意断开连接的请求b:告诉客户端已经接受到方才发的2k的数据c:滑动窗口2k

10.第15、16次,通知客户端滑动窗口的大小N

11.第17次,第三次挥手,服务器端给客户端发选N,请求断开连接

12.第18次,第四次挥手,客户端同意了服务器端的断开请求

        有关mss 的协商,它通常发生在TCP的连接建立阶段,其中的 SYN 报文中包含了 mss 选项,以告知对方自己的最大分段大小,从而对方可以根据这个值设置自己的最大分段大小。这有助于避免在通信过程中产生过大的分段,提高数据传输的效率。

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

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

相关文章

数据分析工具 Top 8

你能想象一个没有工具箱的水管工吗? 没有,对吧? 数据从业者也是如此。如果没有他们的数据分析工具,数据从业者就无法分析数据、可视化数据、从数据中提取价值,也无法做数据从业者在日常工作中做的许多很酷的事情。 根据你最感兴趣的数据科学职业——数…

VR与数字孪生:共同构筑未来的虚拟世界

随着科技的不断发展,数字孪生和VR已经成为当今热门的科技话题。作为山海鲸可视化软件的开发者,我们对这两者都有深入的了解。在此,我们将详细探讨数字孪生与VR的区别和联系。 首先,数字孪生(Digital Twin)…

深度学习 | DRNN、BRNN、LSTM、GRU

1、深度循环神经网络 1.1、基本思想 能捕捉数据中更复杂模式并更好地处理长期依赖关系。 深度分层模型比浅层模型更有效率。 Deep RNN比传统RNN表征能力更强。 那么该如何引入深层结构呢? 传统的RNN在每个时间步的迭代都可以分为三个部分: 1.2、三种深层…

pymol--常用指令

1. 导入蛋白质 1)Pymol> load name.pdb, name # 载入pdb文件,并命名,我还没试过 Pymol> fetch proteinID # 直接就加载了 我用的这个 右边选框,有A S H L C指令 2. 保存图片 2.1 直接输出PNG,在pymol后输…

k8s的网络类型

部署 CNI 网络组件 部署 flannel K8S 中 Pod 网络通信: ●Pod 内容器与容器之间的通信 在同一个 Pod 内的容器(Pod 内的容器是不会跨宿主机的)共享同一个网络命名空间, 相当于它们在同一台机器上一样,可以用 localho…

注意力机制在推荐模型中的应用

目录 一、注意力机制在推荐模型中的应用 二、AFM-引入注意力机制的FM 三、DIN、引入注意力机制的深度学习网络 四、强化学习与推荐系统结合 用户在浏览网页时,会选择性的注意页面的特定区域,忽视其他区域。 从17年开始,推荐领域开始尝试将…

ISP 状态机轮转和bubble恢复机制学习笔记

1 ISP的中断类型 ISP中断类型 SOF: 一帧图像数据开始传输 EOF: 一帧图像数据传输完成 REG_UPDATE: ISP寄存器更新完成(每个reg group都有独立的这个中断) EPOCH: ISP某一行结尾(默认20)就会产生此中断 BUFFER DONE: 一帧图像数据ISP完全写到DDR了 2 ISP驱动状态机 通过camer…

leaflet学习笔记-地图缩略图(鹰眼)的添加(三)

介绍 地图缩略图控件有助于用户了解主窗口显示的地图区域在全球、全国、全省、全市等范围内的相对位置,也称为鹰眼图。Leaflet提供了好几种地图缩略图控件,本文介绍其中一个最常用控件,即插件Leaflet.MiniMap。 依赖添加 这些地图控件都可以…

推荐系统中 排序策略 加权平均法

加权平均法是一种计算平均值的方法,其中每个元素都被分配一个权重,这个权重决定了该元素对平均值的贡献程度。在加权平均法中,每个元素的权重乘以其对应的数值,然后将这些加权值相加,最后除以总权重得到加权平均值。 …

STM32F407-14.3.10-表73具有有断路功能的互补通道OCx和OCxN的输出控制位-1x010

如上表所示,MOE1,OSSR0,CCxE1,CCxNE0时,OCx输出状态取决于OCx_REF与极性选择(CCxP),OCxN输出状态取决于GPIO端口上下拉状态。 --------------------------------------------------…

从实际业务问题出发去分析Eureka-Server端源码

文章目录 前言1.EnableEurekaServer2.初始化缓存3.jersey应用程序构建3.1注册jeseryFilter3.2构建JerseyApplication 4.处理注册请求5.registry() 前言 前段时间遇到了一个业务问题就是k8s滚动发布Eureka微服务的过程中接口会有很多告警,当时…

Neo4j 5建库

Neo4j 只有企业版可以运行多个库,社区版无法创建多个库,一个实例只能运行一个库; 如果业务需要使用多个库怎么办呢? 就是在一个机器上部署多个实例,每个实例单独一个库名 这个库的名字我们可以自己定义; …

andriod安卓水果商城系统课设

​ 一、目的及任务要求 随着当今社会经济的快速发展和网络的迅速普及,手机基本成为了每个人都随身携带的电子产品。传统的购物方式已经满足不了现代人日益追求便利及高效率的购物心理,而通过移动手机上的在线购物系统,可以便捷地甚至足不出…

缓存和缓冲的区别

近期被这两个词汇困扰了,感觉有本质的区别,搜了一些资料,整理如下 计算机内部的几个部分图如下 缓存(cache) https://baike.baidu.com/item/%E7%BC%93%E5%AD%98 提到缓存(cache),就…

【K8S 二进制部署】部署Kurbernetes的网络组件、高可用集群、相关工具

目录 一、K8S的网络类型: 1、K8S中的通信模式: 1.1、、pod内部之间容器与容器之间的通信 1.2、同一个node节点之内,不同pod之间的通信方式: 1.3、不同node节点上的pod之间是如何通信的呢? 2、网络插件一&#xff…

CGAL的三角形曲面网格的最短路径

该软件包提供了一种计算三角曲面网格上测地线最短路径的算法。 CGAL的Surface_mesh_shortest_path的原理是基于测地线最短路径算法。测地线是连接两个点之间的最短路径,它沿着曲面的法线方向前进。在三角曲面网格上,测地线算法可以用于找到从一点到另一…

【linux】如何查看服务器磁盘IO性能

查看服务器磁盘IO性能 在服务器运维过程中,了解服务器的磁盘IO性能是非常重要的。磁盘IO性能直接影响到服务器的响应速度和处理能力。本文将介绍如何使用dd命令来查看服务器磁盘IO性能。 1. 什么是dd命令? dd命令是Linux系统中的一个非常强大的工具&a…

Appium+python自动化(二)- 环境搭建—下(超详解)

简介 宏哥的人品还算说得过去,虽然很久没有搭建环境了,但是换了新电脑设备,一气呵成,将android的测试开发环境已经搭建准备完毕。上一篇android测试开发环境已经准备好, 那么接下来就是appium的环境安装和搭建了。 嘿…

关于数据变更控制思路与实现

先看一设备需求,用于验证计费模型是否有变化,如题: 这里涉及的就是 “计费模型编号”,业务需求就是价格变化了,编号应该也变更,常用的实现方法: 1,如果通过版本控制,要增…

Flink Job 执行流程

Flink On Yarn 模式 ​ 基于Yarn层面的架构类似 Spark on Yarn模式,都是由Client提交App到RM上面去运行,然后 RM分配第一个container去运行AM,然后由AM去负责资源的监督和管理。需要说明的是,Flink的Yarn模式更加类似Spark on Ya…