核心机制:确认应答和超时重传

article/2025/7/15 4:27:33

核心机制一:确认应答

实现让发送方知道接受方是否收到数据

发送方发送了数据之后,接受方,一旦接收到了,就会给发送方返回一个"应答报文"告诉发送方"我已经收到了数据"

网络上会出现"后发先至"的情况

为了解决上述问题,就引入了"序号和确认序号"对于数据的传输进行标识

TCP 是字节流传输的

序号和确认序号是针对"字节"进行编号的

一个 TCP 数据报,包含多个字节,如何体现所有编号呢?

编号是连续递增的,要知道 TCP 载荷的第一个字节的编号是多少,后面的每一个字节的编号就都知道了

32 位序号和数据:填写数据报部分的第一个字节编号几就行了

同一个 TCP 连接,序号会连续累加,下一个数据报的序号在上一个数据报的最后一个的序号基础上继续递增

确认序号只在应答报文中生效

确认序号根据收到的数据的最后一个字节的序号进行加一来进行填充

这一位为 1 ,确认序号字段就会有效负责是属于"无效字段"

确认序号的含义:

1.所有 < 确认序号的数据,接收方已经收到了

2.发送方接下来应该是从确认序号的位置开始,继续发送数据

这样的规则,非常有用,会在后面的特性中,有所体会

确认应答,就是 TCP 实现可靠传输的,最关键机制之一

这个地方的长度有多少,就看你代码是怎么写的

确认应答,关键是,数据顺利到达,通过 ack 告知发送方

实际传输中,很有可能丢包的

TCP 核心机制二:超时从传

确认应答的重要补充,针对丢包的场景的

超时:发送方,判定是否出现丢包的条件

重传:发现数据丢包,就在发一次(概率性问题)

假设一个数据包,传输过程中,丢包的概率大概是 10%(相当大的数字)

连续传输两次,数据包至少一次到达对方的概率是多少?

1 - 10% * 10% => 99%

传输次数的增加,数据报到达对方的概率概率大幅度增加

计算机中,一般不喜欢"无限的等",最大等待时间"超时时间"

没有收到 ack 有两种情况~~

这种情况丢包之后重传,理所当然的

B 已经收到过一份数据了接下来又重传一次,B 这边同样的数据收到了两份~~

TCP 协议已经处理上述情况

TCP 在接受到数据的时候,会在操作系统内核中维护一个"接受缓冲区"(内存空间)

如果又收到了同一个数据,此时就可以根据数据的序号来在接受缓冲器中进行"去重"

确保应用程序,在进行 read 操作的时候,读到的数据不会出现重复

TCP 也会针对对收到的数据在接受缓冲器中进行从重新排序,数据传输可能出现"后发先至"

1 - 1000 先发的, 1001 - 2000 后发的

接受方先收到了 1001 - 2000,后收到了 1 - 1000

TCP 的处理方式是在 接受缓冲区里,针对收到的数据进行排序

应用程序读到数据的时候,读到的仍然是有效的数据

超时重传的超时时间不是固定的,动态变化的

随着超时重传的进行,如果还是没有收到 ack 仍然要继续重传,但是等待的超时时间会逐渐变长

通过重传之后,大幅度提升数据到达对方的概率,但是重传之后,还是没有收到 ack,只能说明,当前网络的丢包概率,远远不止 10%了,此时,网络大概率出现了非常严重的故障了,再次频繁重传,非但不会解决问题,甚至可能会加重网络的故障程度~~

没指望重传能成功,死马当活马医

重传次数 / 总的重传时间是有上限的,到达上限,重传还没成功, tcp 连接就会被"重置"(重置涉及到"复位报文") => 单方面的断开连接了.

RST 触发了一个复位报文,意味着这个链接就不要了

单方面通知

"释放链接"就相当于是删除掉之前保存的对方的信息

超时重传,TCP中,进行可靠传输的重要机制之一

是确认应答的补充

确认应答处理传输顺利的情况,超时重传处理丢包的情况

网络上很多资料关于这里讨论的是有问题的

"TCP 的可靠性是通过 三次握手 实现的"

实际上不是这样的

三次握手只是在建立连接之初,涉及到的环节.一旦连接建立好了,后续就没有 握手的事情了


http://www.hkcw.cn/article/wvQEjRTwfO.shtml

相关文章

特朗普:仍希望有国际学生在美国学习

当地时间5月30日,美国总统特朗普在白宫表示,仍希望有国际学生在美国学习。据美国政治新闻网站“Politico”27日的报道,特朗普政府已暂停新的学生签证面谈,同时考虑扩大对国际学生社交媒体审查范围。此外,据路透社30日援引一份美国国务卿发送给所有美国外交和领事馆的电报称…

两阶段uplift建模(因果估计+预算分配)的讲座与自己动手实践(一)

来自分享嘉宾在datafun论坛的分享&#xff0c;孙泽旭 中国人民大学高瓴人工智能学院 博士生分享的【面向在线营销场景的高效 Uplift 方法】 听讲座听的云里雾里&#xff0c;自己做点力所能及的小实践… 关于uplift笔者之前的博客&#xff1a; 因果推断笔记——uplift建模、met…

2025年通用 Linux 服务器操作系统该如何选择?

2025年通用 Linux 服务器操作系统该如何选择&#xff1f; 服务器操作系统的选择对一个企业IT和云服务影响很大&#xff0c;主推的操作系统在后期更换的成本很高&#xff0c;而且也有很大的迁移风险&#xff0c;所以企业在选择服务器操作系统时要尤为重视。 之前最流行的服务器…

Ubuntu20.04服务器开启路由转发让局域网内其他电脑通过该服务器连接外网

要让你的 Ubuntu作为路由器&#xff0c;通过 Wi-Fi 上网&#xff0c;并给连接到 UsbNetwork 的设备提供网络&#xff0c;需要做以下配置&#xff1a; 1. 网络拓扑 [互联网] ← (Wi-Fi, wlo1) → [Ubuntu] ← (USB网络/USB以太网, UsbNetwork) → [设备]Ubuntu&#xff1a; Wi-…

ONLYOFFICE深度解锁系列.4-OnlyOffice客户端原理-真的不支持多端同步

最近很多客户多要求直接部署onlyoffice服务端,还问能否和onlyoffice的客户端进行文件同步,当时真是一脸懵,还有的是老客户,已经安装了onlyoffice协作空间的,也在问如何配置客户端和协作空间的对接。由于问的人太多了,这里统一回复,先说结论,再说原理: 1.onlyoffice document s…

手撕Java+硅基流动实现MCP服务器教程

手撕Java硅基流动实现MCP服务器教程 一、MCP协议核心概念 MCP是什么 MCP 是 Anthropic (Claude) 主导发布的一个开放的、通用的、有共识的协议标准。 ● MCP 是一个标准协议&#xff0c;就像给 AI 大模型装了一个 “万能接口”&#xff0c;让 AI 模型能够与不同的数据源和工…

BG22L和BG24L精简版蓝牙SoC推动智能物联网走向更广天地

作者&#xff1a;Aashish Chaddha&#xff0c;芯科科技无线产品营销经理 随着物联网&#xff08;IoT&#xff09;领域的复杂性和互联性不断提高&#xff0c;对无线设备的需求正在发生变化。它不再只是将数据从A点传输到B点&#xff0c;现在的设备需要更智能、更节能&#xff0…

拉普拉斯噪声

1. 概念 拉普拉斯噪声是一种连续概率分布生成的随机噪声&#xff0c;其核心特点是符合拉普拉斯分布。这种噪声被特意添加到数据&#xff08;尤其是查询结果或统计量&#xff09;中&#xff0c;以实现差分隐私这一严格的隐私保护框架。 核心目的&#xff1a; 在保护数据集中的个…

JavaSwing之--JPasswordField

Java Swing之–JPasswordField应用详解 JPasswordField是一个轻量级组件&#xff0c;允许编辑单行文本&#xff0c;不会显示键入的原始字符&#xff0c;而是显示替代文本或图形。 JPasswordField的直接父类是JTextField&#xff0c;它继承了父类中的常用构造方法与普通方法。…

ACS期刊的投稿查重要求

ACS的查重要求在其官网写到&#xff1a;ACS Publications uses the Crossref Similarity Check Powered by iThenticate to screen submitted manuscripts for similarity to published material. Note that your manuscript may be screened during the submission process.&a…

一文速通Python并行计算:11 Python多进程编程-进程之间的数据安全传输-基于队列和管道

一文速通 Python 并行计算&#xff1a;11 Python 多进程编程-进程之间的数据安全传输-基于队列和管道 摘要&#xff1a; Python 多进程中&#xff0c;Queue 和 Pipe 提供进程间安全通信。Queue 依赖锁和缓冲区&#xff0c;保障数据原子性和有序性&#xff1b;Pipe 实现点对点单…

基于云模型与TOPSIS评价算法的综合应用研究

一、理论基础与算法特点 &#xff08;一&#xff09;云模型的核心原理 云模型是由李德毅院士于1995年提出的不确定性转换模型&#xff0c;通过三个数字特征量实现定性概念与定量描述的转换&#xff1a; 期望Ex&#xff1a;概念在论域中的中心值 熵En&#xff1a;表征概念的模…

Jenkins 2.479.1安装和邮箱配置教程

1.安装 在JDK安装并设置环境变量完成后&#xff0c;下载官网对应的war版本&#xff0c;在对应目录下打开命令行窗口并输入 java -jar jenkins.war其余参数感兴趣可以自行查阅&#xff0c;这里启动的 jenkins 服务默认占用8080端口&#xff0c;在浏览器输入 localhost:8080进入…

JavaScript正则表达式

参考笔记:JS之正则表达式_js 正则-CSDN博客 目录 一、正则表达式介绍 1. 快速入门案例1 2. 什么是正则表达式 3. 快速入门案例2 4. 正则表达式"按位"描述规则 二、正则表达式的定义方式 三、修饰符 modifiers 四、正则表达式方法 1. test() 2. exec() 3. search…

制作一款打飞机游戏63:自动保存

1.编辑器的自动保存实现 ‌目标‌&#xff1a;将自动保存功能扩展到所有编辑器&#xff0c;包括脑编辑器、模式编辑器、敌人编辑器和动画/精灵编辑器。‌实现方式‌&#xff1a; ‌代码复制‌&#xff1a;将关卡编辑器中的自动保存代码复制到其他编辑器中。‌标记数据变更‌&a…

“百亿补贴”商家承担比例升至70%-80%,京东外卖家也没“余粮”了?

内容/咏鹅 校对/莽夫 今日雷锋网转引新浪财经一则消息&#xff0c;称「京东外卖“百亿补贴”规则再调整&#xff1a;商家承担比例升至70%-80%」。 有多位商家公开爆料&#xff0c;京东外卖将此前平台与商家各承担50%的补贴成本比例&#xff0c;调整为商家承担70%-80%&#xff…

详解Seata的四种事务模式:AT、TCC、SAGA、XA

一、AT 模式&#xff08;Auto Transaction - 默认模式&#xff09; 核心原理&#xff1a; 基于 SQL 解析的自动补偿机制&#xff0c;通过代理数据源实现业务无侵入。 工作流程&#xff1a; 关键特性&#xff1a; 自动生成补偿&#xff1a; 前置镜像&#xff08;Before Image&…

【MySQL系列05】构建99.999%高可用MySQL: 从主从复制到企业级集群架构详解

关键词&#xff1a; MySQL高可用架构、主从复制、读写分离、故障转移、MySQL集群、InnoDB Cluster、Percona XtraDB、MySQL Router、ProxySQL、数据库容灾 摘要&#xff1a; 本文从生活化的超市收银员比喻出发&#xff0c;深入浅出地讲解MySQL高可用架构的构建方法。从基础的主…

力扣刷题Day 65:单词搜索(79)

1.题目描述 2.思路 方法1&#xff08;自己写的深度优先的回溯方法&#xff09;&#xff1a;遍历网格&#xff0c;每走过一格都将其坐标加入visited集合&#xff0c;然后向上、下、左、右四个方向查找可行路径&#xff0c;如果找到可行路径则一路向下延伸查找&#xff0c;如不可…

多卡训练核心技术详解

多卡训练核心技术详解 多卡训练 主要围绕分布式环境初始化、模型并行化、数据分片和梯度同步展开。下面结合您的代码,详细解释这些核心部分: 并行执行命令 torchrun --nproc_per_node=5 TokenLossMulCard.py 1. 分布式环境初始化 def init_distributed():init_process_…