TCP协议的相关特性(续)

news2024/11/26 22:49:23

TCP协议的相关特性

  • 🔎滑动窗口
  • 🔎流量控制
  • 🔎拥塞控制
  • 🔎延时应答
  • 🔎捎带应答
  • 🔎面向字节流(粘包问题)
  • 🔎异常情况
  • 🔎总结

关于 确认应答 超时重传, 连接管理
请参考: 点击这里

🔎滑动窗口

在这里插入图片描述

上图展示了一个固定大小为4个格子的窗口
不断的向前滑动, 每次向前滑动1个格子, 窗口的大小保持不变


在这里插入图片描述

按数据包进行确认应答

采用逐条发送数据的方式传输数据
这种方式花费了大量时间等待ACK

在这里插入图片描述

按滑动窗口方式并行处理

采用批量发送数据的方式传输数据(固定窗口大小)
每次收到一条ACK 就继续发送下一条数据(保持窗口的大小不变, 向前滑动)

通过滑动窗口的方式进行传输数据, 可以提高数据的传输效率

滑动窗口是在批量传输大量数据时, 才会采取的措施
如果数据量较少, 还是会采用逐条发送的方式传输数据

🔎流量控制

滑动窗口的窗口越大, 意味着批量发送的数据越多, 整体的传输速度也就越快

但如果发送的太快, 超出了接收方的接收能力(接收方的接收缓冲区满了)
此时继续发送, 数据就会丢包
这种情况就难免有些得不偿失, 还不如发送的慢些(流量控制)

流量控制的本质就是通过接收方来限制发送方的发送速度

在这里插入图片描述

当ACK 为1时(有效状态), 此时的窗口大小(16)位就会生效
窗口大小的值就是接收方建议发送方发送的窗口大小
(接收方将接收缓冲区的剩余空间作为窗口大小)

举个栗子🥝

在这里插入图片描述

当发送方发现接收方的接收缓冲区满了之后, 就会暂停发送
但是仍然会每隔一段时间发出一个窗口探测报文
如果探测一会发现接收方的接收缓冲区腾出空间了, 就会继续发送

在这里插入图片描述

🔎拥塞控制

在这里插入图片描述

如果说流量控制表示的是接收方的处理能力
那么拥塞控制表示的则是传输路径的处理能力

传输路径上任何一个设备的处理能力遇到瓶颈, 都会对整体的传输效率产生影响
而拥塞控制做的就是衡量中间节点的传输处理能力(找出木桶效应中那块最短的木板)

在这里插入图片描述
图片来自网络

拥塞控制, 衡量中间节点的传输能力
但每次传输的传输路径不同, 导致了中间路径上的节点个数不同, 每个节点的情况也有可能不同
而且网络的拥堵情况不是一成不变的(可以理解为一天之中不可能所有时间都会出现早高峰)
所以每次通过实验的方式, 找到合适的发送速率

根据上图所示进行实验
●拥塞窗口: 按照多大的速率发送数据(暂时不考虑流量控制的情况)
●传输轮次: 第几次发送(第一次发送, 第二次发送, 第三次发送…)
●慢开始: 刚开始传输, 会给一个非常小的窗口(传输速度较慢)
●指数规律增长: 每次增长的速度翻倍, 增长速度非常快(2 --> 4 --> 8 --> 16 --> 32…)
●ssthresh的初始值: 当指数增长达到阈值时, 就会变成线性增长(避免一下超过上限很多, 采用逐渐达到上限的方式)
●网络拥塞: 当线性增长增长到一定程度(出现丢包), 认为当前的窗口大小达到了上限, 就会在下一轮传输时开启新的慢开始

实验流程描述
(1)先以较低的传输速度开始传输(慢开始)
(2)然后以指数级的增长速度传输
(3)当传输速度达到阈值时, 传输速度就会转变为线性增长(为了避免一下超过上限很多)
(4)当线性增长到一定程度, 会出现丢包的现象(认为当前窗口, 达到当前路径的传输上限)
(5)继续新一轮的慢开始
注意: 下一轮的阈值为上一轮的上限的一半(第二轮慢开始的阈值为第一轮慢开始的上限值的一半)

拥塞窗口(拥塞控制实验出来的窗口)
流控窗口(流量控制产生的窗口)
滑动窗口的大小 = Math.min(拥塞窗口, 流控窗口)

🔎延时应答

在这里插入图片描述
读取到数据立即返回ACK, 此时ACK 里面带有的窗口大小设为N
当等待片刻, 再去返回ACK, 此时ACK 里面带有的窗口大小, 大概率>N
(等待过程中, 应用程序消费接收缓冲区中的数据)

延时应答的效果
就是通过延时, 让接收方的应用程序利用延时的这段时间多读取一些数据
这样返回的ACK 携带的窗口就会大一些, 这样发送方的发送效率就会快一些(仍然满足流量控制)

🔎捎带应答

捎带应答是基于延时应答的一种模式

在这里插入图片描述
基于延时应答
此时的 I am fine, thank you(ACK)会稍等一会再发送
就可能会把 And you捎带着一起发送(捎带应答)

🔎面向字节流(粘包问题)

当A 给B 连续发了多个应用层数据报之后
这些数据就累积到B 的接收缓冲区, 紧紧的挨在一起
此时B 的应用程序读取数据时, 就难以区分从哪到哪是一个完整的应用层数据报

举个栗子🥝

在这里插入图片描述
在这里插入图片描述
同学B
有可能将您看看我是那人吗
理解为(1)您看看我 (2)是那人吗

此时同学B 的接收缓冲区就难以区分从哪到哪是一个完整的应用层数据报

解决方法
(1)定义分隔符(类似于我们将每句话的结尾加上个句号, 代表一句话的结束)
(2)约定长度(类似于约定一句话的最长范围, 超过这个范围, 就不是这句话了)

🔎异常情况

(1)进程关闭 / 进程崩溃

进程虽然没了, 但是连接还在, 仍然可以四次挥手(断开连接)

(2)主机关闭(正常流程关机)

主机关闭会先关闭所有的用户进程
(可能进行完整的四次挥手, 也可能无法进行完整的四次挥手)

a. 进行完整的四次挥手
正常断开连接

b. 未进行完整的四次挥手
比如当对方发送fin, 还未来得及ACK 就关机了
此时对方就会超时重传fin, 重传几次之后, 发现都没有ACK, 就会尝试重置连接
如果还不行, 就会断开连接

(3)主机断电(非正常流程关机)

机器瞬间关闭, 来不及挥手
有两种可能: a. 对方是发送方 b. 对方是接收方

a. 对方是发送方
对方发送fin, 收不到ACK
超时重传fin, 重传几次之后, 发现都没有ACK, 尝试重置连接
如果还不行, 就会断开连接

b. 对方是接收方
对方无法知道发送方是直接没了还是没来的及发送新的数据
于是引出了“心跳包”

心跳包的属性: (1)周期性的 (2)没有心跳了, 表示挂了
于是接收方通过定期给发送方发送心跳包判断接收方是否还存在
如果存在, 等待发送方发送数据
如果不存在, 断开连接

(4)网线断开

这种情况与(3)主机断电相同

🔎总结

在这里插入图片描述

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

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

相关文章

IT知识百科:什么是基站?

一、基站介绍 基站(Base Station),也称为基站站点或基站设备,是无线通信网络中的关键设备之一。基站用于与移动设备(如手机、无线网卡等)进行通信和数据传输,实现无线通信覆盖。 二、基站的功…

基于Python机器学习、深度学习技术提升气象、海洋、水文领域实践应用

Python是功能强大、免费、开源,实现面向对象的编程语言,能够在不同操作系统和平台使用,简洁的语法和解释性语言使其成为理想的脚本语言。除了标准库,还有丰富的第三方库,Python在数据处理、科学计算、数学建模、数据挖…

Web服务器压力测试

Web服务器压力测试 使用WebBench去进行网站的压力测试 1、去github下载项目源码webbench 2、download到本地 3、将压缩包上传到虚拟机上 4、解压,使用命令:unzip 压缩包名 5、 cd WebBench-mask6、构建项目 makemake install7、上述动作完成后&…

【Vue3】如何用Vue CLI 创建一个Vue3的初始化项目

第一步、安装Vue Cli npm install -g vue/cli 安装成功后,就可以在命令行工具中,使用vue命令。 检测是否安装成功,可以用 vue -V 出现版本号,代表安装成功。 第二步、创建项目 为了方便管理项目,我先在 github 创建了…

队列实现图书信息管理(C语言)

文章目录Queue.hmain.cQueue.c用队列实现一个图书信息管理,这里放一下有哪些文件。(ps:我之前写的是学生信息管理,但是有人说我们的作业是写图书,就该了下内容,没有改文件名)队列是用链表实现的…

***大论文中插入Visio不失真方法:word插入viso图片方法

***大论文中插入Visio不失真方法:word插入viso图片方法1、可以直接导出emf2、如果利用emf导致字符间距过大,可以选择下面方式1、可以直接导出emf 导出emf方法: 打开visio --> 另存为 --> 选择emf格式文件 打开word --> 插入图片&a…

6 计时器(三)

6.4 输出比较演示** 演示1:PWM驱动呼吸灯** 函数解释: 输出比较单元(掌握) void TIM_OC1Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct); void TIM_OC2Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCIni…

对Redis 的数据结构的更深刻理解

文章目录简单动态字符串SDS与C字符串的区别链表字典哈希算法 —— 添加新键值对的过程rehashrehash一般过程渐进式rehash渐进式rehash的详细步骤跳跃表实现整数集合intset升级步骤升级好处降级压缩列表 ziplistziplistnode连锁更新对象字符串对象列表对象哈希对象编码转换集合对…

RK356X 解除UVC摄像头预览分辨率1080P限制

平台 RK3566 Android 11 概述 UVC: USB video class(又称为USB video device class or UVC)就是USB device class视频产品在不需要安装任何的驱动程序下即插即用,包括摄像头、数字摄影机、模拟视频转换器、电视卡及静态视频相机…

详解C++中的命名空间(namespace)

个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【C之路】 目录C关键字(C98)命名冲突命名空间命名空间的定义局部域和全局域的关系命名空间域小结命名空间中可以定义哪些内容嵌套命名空间…

音视频开发常用分析工具介绍

综述 工欲善其事,必先利其器;兵马未到,粮草先行。 在音视频开发过程中,利用工具可以更方便、更直观、更快捷的分析音视频的数据,便于开发过程中分析、调试和解决问题。 现总结一些音视频开发过程中常用的分析工具。…

Android library native 代码不能调试解决方法汇总

android native开发会碰到native代码无法调试问题,而app主工程中的native代码是可以调试的。如果项目中存在多个module,那么在application模块中依赖library模块,并且library模块中有native代码的时候,当debug library模块中的这些…

如何高效获取数据价值?

导读:上一篇《大数据架构知识点详解:国产数据库创新、湖仓一体实践…》中我们阐述了四大体系之数据架构体系,解释了云原生大数据实践、国产数据库创新变革、湖仓一体落地实践、OLAP 发展趋势四个论坛的架构思路。 接下来是四大体系之二数据效…

【Linux】2、Linux 的基本命令

目录一、Linux 的目录结构二、Linux 命令三、ls 命令四、cd五、pwd六、特殊路径符七、mkdir八、touch九、cat 命令十、more十一、cp十二、mv十三、rm十四、which十五、find十六、grep十七、wc十八、管道符十九、echo二十、重定向符二十一、tail 命令一、Linux 的目录结构 &…

直播观看指南|SOFA 五周年,Live Long and Prosper!

SOFA 五周年活动将于 2023 年 4 月 15 日(周六)12:00 在北京朝阳区恒通国际创新园 C6 栋 C work 举行!期待社区的小伙伴和对开源感兴趣的小伙伴们一起来现场玩哦~当然啦,不能来现场的小伙伴们也别担心,我们…

第二十一章 案例TodoList之新增数据

前一小节,我们已经完成了数据的动态展示,现在我们要完成数据的动态添加。如何添加呢?肯定是要通过Header组件来添加,但是Header组件如何将收集的任务数据,交给App组件并更新状态数据呢? 在Header组件中收集…

实现vue的条件渲染

我的需求是根据设备不同的状态 渲染不同的标签。设备状态用device_State表示。 在线上面是一个vue的标签,我有一个数据state ,如何让这个标签根据数据的取值 ,修改内容,如state1时,标签修改为离线 要根据数据的取值动态…

Python曲线拟合详解

文章目录入门参数多元拟合入门 scipy.optimize中,curve_fit函数可调用非线性最小二乘法进行函数拟合,例如,现在有一个高斯函数想要被拟合 yaexp⁡−(x−bc)2y a\exp-(\frac{x-b}{c})^2 yaexp−(cx−b​)2 则调用方法如下 import numpy as…

STM32基础代码学习G070CB串口透传调试(出厂默认)代码

先下载 一定记得回车换行勾选 可以参考“Quectel_BC260Y-CN_AT命令手册_V1.0.pdf” ATCGMI 查询制造商信息 ATCGMM 查询模块型号 ATCSQ 上报信号质量 ATCGATT? PS 域附着或去附着查看板子是否正常 再激活 ATQIACT1,最后查询ATQIACT? 配置阿里云mqtt atqmtc…

【从零开始学Skynet】实战篇《球球大作战》(十三):场景代码设计(下)

1、主循环 《球球大作战》是一款服务端运算的游戏,一般会使用主循环程序结构,让服务端处理战斗逻辑。如下图所示,图中的balls和foods代表服务端的状态,在循环中执行“食物生成”“位置更新”和“碰撞检 测”等功能,从而…