【网络】详解TCP协议的延时应答、捎带应答、异常处理

news2024/10/18 10:11:02

【网络】详解TCP协议的延时应答和捎带应答

  • 一. 延时应答
    • 模型
  • 二. 捎带应答
    • 模型
    • 再谈四次挥手
  • 三. 异常处理
    • 1.一方出现进程崩溃
    • 2.一方出现关机(正常流程关机)
    • 3.一方出现断电
    • 4.网线断开

一. 延时应答

也是基于滑动窗口,想要尽可能的去提高效率。延时应答就是说,接收方收到数据之后,不立即返回ACK,而是要有一定的延迟。主要目的是为了给程序一些消耗数据的时间,使得返回的窗口尽可能大。

延时应答也不仅仅以时间为唯一的判断标准:

  • 数量限制:每隔N个包就应答⼀次(可以减少返回ACK的次数,提高效率);
  • 时间限制:超过最⼤延迟时间就应答⼀次;

具体的数量和时间可以自己进行定义。

模型

在这里插入图片描述
这个模型展示了每两个数据包返回一个ACK的延时应答。

二. 捎带应答

基于延时应答,为了进一步的提高效率,引入了捎带应答的机制。不同于延时应答要增大窗口的目的,延时应答主要是去尽可能的合并一些能合并的数据包,从而提高效率。

模型

在这里插入图片描述
正常来说,服务器收到request之后会立即返回ACK,而response需要经过计算才能返回。但因为TCP有延时应答的特征,正好弥补了这个时间空隙。从而可以合并这两个数据包一起返回(合并只需要将response报文中的ACK标志位设置为1)。

再谈四次挥手

之前谈到四次挥手的中间两次有可能会合并,那什么时候会合并呢?在了解了延时应答和捎带应答这样的机制后,我们就应该知道,如果ACK(系统内核控制)和FIN(socket.close()控制)时间相差较短,满足了延时应答以及捎带应答合并两个报文的条件,就可以合并。

三. 异常处理

1.一方出现进程崩溃

TCP连接的生命周期,可以比进程长一些,即使出现进程崩溃,也能完成四次挥手断开连接。

2.一方出现关机(正常流程关机)

当主机触发关机操作时,会强制结束所有的进程,也会触发四次挥手,断开连接。关机的一方会向对方发送FIN,对端也会向关机的一方发送FIN,如果这个过程进行的比较快,就能正常完成。但是如果不快,对端发送的FIN就收不到ACK了(已经关机)。此时就会超时重传,重传几次没有结果,就会单方面释放连接。

3.一方出现断电

  1. 接收方断电:发送方就会 发现突然没有ACK了,就要重传,重传几次还是不行,就会尝试“复位”连接(RST),此时的RST也不会有回应,单方面断开连接。
  2. 发送方断电:接收方在阻塞等待发送方的信息,但是发送方断电了,那接收方就一直在等待吗?其实不然,接收方会周期性的发送“心跳包”(不携带数据的特殊的包)来确认发送方是否还存活。如果意识到对方挂了,也会单方面的释放连接。

4.网线断开

这就是 3 中 1 和 2 的结合了。

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

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

相关文章

mysql高级sql语句 二

目录 一. 求交集 1.1 内连接 1.2 左连接 1.3 右连接 1.4 子查询 1.5 多表查询 1.6 并集分组 二. 求差集 2.1 求左表差集 2.2 求右表差集 2.3 求两个表的差集 三. 视图表view 3.1 视图表的使用 3.2 视图表里的数据能不能修改? 四. case语句 五. 无值…

豪威集团技术突破

巴塞罗那AutoSens展会上发布的OX12A10采用豪威集团全新的a-CSP™超小尺寸封装技术,是TheiaCel™产品系列中分辨率最高的传感器,成为ADAS和AD的理想之选 巴塞罗纳,西班牙 – 2024年10月3日 – 豪威集团,全球排名前列的先进数字成像…

动力学的开环和闭环控制

工业机器人四大元件:控制器,驱动器,电机,减速器 流程:控制器的作用是规划一个机器人的路径,位置,速度。而驱动器是用来控制电流的,进行控制电机。本质上是驱动器来进行完成电流的调…

ssm基于SSM框架的成绩管理系统的设计与实现+vue

系统包含:源码论文 所用技术:SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习,获取源码请私聊我 需要定制请私聊 目 录 1 绪论 1 1.1 选题背景 1 1.2 选题意义 1 1.3 研究内容 2 2 系统开发技术 3 2.1 MySQL数据库 3 2.…

【系统集成中级】OSI 七层模型

【系统集成中级】OSI 七层模型 💐The Begin💐点点关注,收藏不迷路💐 OSI 七层模型: #mermaid-svg-FqFAWaiBSmivKOt2 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mer…

常见的SD-WAN组网方案解析

随着SD-WAN技术的日益成熟,越来越多的企业开始采用这种网络架构来解决跨区域的数据传输难题。SD-WAN组网方案不仅提升了网络性能,还有效降低了网络成本,成为现代企业构建高效网络的重要选择。那么,如何搭建SD-WAN组网?…

mysql数据同步ES方案---DTS

在上一篇文章中,我通过一个简单的例子实现了如何通过 Canal 实现 MySQL 数据到 Elasticsearch 的同步,以满足增量捕获和实时同步的需求。然而实际情况中,比如在我之前工作的公司,为了减少运维工作量和代码操作的复杂性&#xff0c…

OpenHarmony 入门——ArkUI 自定义组件内同步的装饰器@State小结(二)

文章大纲 引言一、组件内状态装饰器State1、初始化2、使用规则3、变量的传递/访问规则说明4、支持的观察变化的场景5、State 变量的值初始化和更新机制6、State支持联合类型实例 引言 前一篇文章OpenHarmony 入门——ArkUI 自定义组件之间的状态装饰器小结(一&…

Linux——网络层协议

前言 网络层:在复杂的网络环境中确定一个合适的路径 目录 前言 一IP协议 1预备知识 2基本概念 3格式 4网段划分 4.1理解IP 4.2IP组成 4.3划分方式 4.4为什么要网段划分 5特殊的IP地址 6IP地址的限制 7私有IP和公网IP 8NAT技术 9理解公网 10路由 …

软件数据安全评估

简介 SQLmap是一款「自动化」SQL注入 工具,kali自带。 可以自己手动安装 地址 源码 源码汉化版kali自带 开启 python 自己直接编译运行 kali 使用方法 1 Options(选项) -h,--help 显示帮助消息 -hh 显示详细帮助 -version -v…

【JavaScript】网页交互的灵魂舞者

我的主页&#xff1a;2的n次方_ 1. JavaScript 的三种引入方式 引⼊⽅式 语法描述 ⽰例 ⾏内样式 直接嵌⼊到 html 元素内部 <input type"button" value"点我⼀下" οnclick"alert(haha)"> 内部样式 定义<script>标签&a…

云计算第四阶段: cloud二周目 07-08

cloud 07 一、k8s服务管理 创建服务 # 资源清单文件 [rootmaster ~]# kubectl create service clusterip websvc --tcp80:80 --dry-runclient -o yaml [rootmaster ~]# vim websvc.yaml --- kind: Service apiVersion: v1 metadata:name: websvc spec:type: ClusterIPselector…

IGFBP7:免疫治疗新靶点

前 言 胰岛素样生长因子结合蛋白7&#xff08;IGFBP7&#xff09;是胰岛素超家族的生长促进肽成员&#xff0c;可与胰岛素和IGF结合&#xff0c;调控细胞生长和分化。IGFBP7在不同的肿瘤类型中表现出抑制或促进肿瘤生长的“自相矛盾”活性。研究发现IGFBP7可增强治疗性单克隆…

C语言 | Leetcode C语言题解之第491题非递减子序列

题目&#xff1a; 题解&#xff1a; int** ans; int ansSize; int* temp; int tempSize;void dfs(int cur, int last, int* nums, int numsSize, int** returnColumnSizes) {if (cur numsSize) {if (tempSize > 2) {ans[ansSize] malloc(sizeof(int) * tempSize);memcpy(…

HDLBits中文版,标准参考答案 | 5 Verification: Writing Testbenches | 验证:编写测试平台

关注 望森FPGA 查看更多FPGA资讯 这是望森的第 24 期分享 作者 | 望森 来源 | 望森FPGA 目录 1 Clock 2 Testbench1 3 AND gate 4 Testbench2 5 T flip-fop 本文中的代码都能够正常运行&#xff0c;请放心食用&#x1f60b;~ 练习的官方网站是&#xff1a;https://hdlbi…

Hi3061M——VL53L0X激光测距(IIC)(同样适用于其他MCU)

这里写目录标题 前言VL53L0X的简介VL53L0X的初始化和效准过程的相关APIVL53L0X开始测量和获取测量值VL53L0X移植配置结语 前言 手头正好有一个空闲的激光测距模块VL53L0X&#xff0c;想在Hi3061M上跑一下测距&#xff0c;以前并没有用过VL53L0X&#xff0c;想着以为还是向以前…

浅谈针对Nor flash状态寄存器保护位修改方法

浅谈针对Nor flash状态寄存器保护位修改 ✨最近在写QSPI驱动Nor flash过程中&#xff0c;在操作芯片的状态寄存器的时候&#xff0c;遇到的一些问题和解决办法。 &#x1f52c;操作Nor flash测试芯片&#xff1a;GD25Q64&#x1f516;以QSPI测试为例&#xff0c;SPI方式修改没有…

集成电路学习:什么是WLAN无线局域网

WLAN&#xff1a;无线局域网 WLAN&#xff0c;即无线局域网&#xff08;Wireless Local Area Network&#xff09;&#xff0c;是一种通过无线技术构建的局域网络&#xff0c;它使用无线信号传输数据&#xff0c;取代了传统有线网络中的网线连接。以下是关于WLAN的详细解释&…

Lumerical学习——优化和参数扫描(Optimization and parameter sweeps)

一、概要介绍 这部分介绍优化和参数扫描项目设定的方法。在有大量数据模拟计算过程中这个特性允许用户使处理方法自动地查找期望的参数值。 ① 创建一个参数扫描任务 ② 创建一个优化任务 ③ 创建一个良率分析任务 ⑤ 打开所选择项目的编辑窗口&#xff0c;编辑其属性…

stm32 bootloader写法

bootloader写法&#xff1a; 假设app的起始地址&#xff1a;0x08020000&#xff0c;则bootloader的范围是0x0800,0000~0x0801,FFFF。 #define APP_ADDR 0x08020000 // 应用程序首地址定义 typedef void (*APP_FUNC)(void); // 函数指针类型定义 /*main函数中调用rum_app&#x…