【TCP】确认应答 与 超时重传
确认应答 与 超时重传
- 一. 确认应答机制
- 二. 超时重传机制
一. 确认应答机制
确认应答: 保障可靠传输的核心机制。
可靠传输: 不是指传输过去的数据不出错, 也不是指数据一定能传输过去,而是指发送方能够知道接收方是否接收到了数据。
确认应答的关键就是接收方收到数据后,返回给发送方一个确认应答报文 (ACK acknowledge), 表示自己已经收到数据了。
确认应答号是 接收到的最后一个字节数据的编号 + 1
A 给 B 发送了 1000B 数据,B 返回给 A 中的 ACK 中就会带有确认号 1001,表示 1001 之前的数据已经接受到了,接下来 A 应该从 1001 开始发送。
TCP 将每个字节的数据都进行了编号。即为序列号。
注意:是按照字节进行了编号,并不是按消息的条数。
每一个 ACK 都带有对应的确认序列号,意思是告诉发送者,我已经收到了哪些数据;下一次你从哪里开始发。
如果不使用序列号和确认应答号的话,发送发就不知道接收方是针对哪些的确认应答,不知道接收方到底接收到了哪些数据。
举个栗子:
滑稽老铁给女神发送消息:
这种情况就说不清了,使用序列号和确认号就能解决:
二. 超时重传机制
- 主机A发送数据给B之后,可能因为网络拥堵等原因,数据无法到达主机B。
- 所以 A 就无法收到 B 的 ACK。
- A 等了一个特定时间间隔还没有收到B发来的确认应答,就会进行重发。
但是,主机A未收到B发来的确认应答,也可能是因为ACK丢失了,这样 A 也不能收到 ACK,也就重新发送,那么 B 就会收到了重复的数据:
因为主机B会收到很多重复数据,所以 TCP 协议需要能够识别出那些包是重复的包,并且把重复的丢弃掉。
去重:
这时候我们可以利用前面提到的序列号,就可以很容易做到去重的效果:
- 接收到的数据会被放到操作系统内核的接收缓冲区。(发送方也有发送缓冲区。)
- TCP 会根据序列号判断是否重复,如果缓冲区里面已经有这个数据了,那就直接丢弃。
- 从而能够保证上层应用程序调用 Socket API 拿到的数据一定是不重复的。
(所以我们应用层是感知不到超时重传的过程的。)
超时的时间如何确定?
- 最理想的情况下,找到一个最小的时间,保证 “确认应答一定能在这个时间内返回”。
- 但是这个时间的长短,随着网络环境的不同,是有差异的。
- 如果超时时间设的太长,会影响整体的重传效率;
- 如果超时时间设的太短,有可能会频繁发送重复的包;
TCP 为了保证无论在任何环境下都能比较高性能的通信,因此会动态计算这个最大超时时间。
-
Linux中(BSD Unix 和 Windows 也是如此),超时以 500ms 为一个单位进行控制,每次判定超时重发的超时时间都是 500ms 的整数倍。
-
如果重发一次之后,仍然得不到应答,等待 2*500ms 后再进行重传。
-
如果仍然得不到应答,等待 4*500ms 进行重传。依次类推,以指数形式递增。
-
累计到一定的重传次数,TCP 认为网络或者对端主机出现异常,强制关闭连接。
什么时候使用 TCP ?什么时候使用 UDP ?
- 对可靠性有一定要求,日常中大多数情况都是基于 TCP。
- UDP用于对高速传输和实时性要求较高的通信领域,例如,早期的QQ,视频传输等。
- UDP 还有一个优势:天然支持广播。
好啦! 以上就是对 TCP 确认应答 与 超时重传机制的讲解,希望能帮到你 !
评论区欢迎指正 !
相关文章:

【TCP】确认应答 与 超时重传
确认应答 与 超时重传 一. 确认应答机制二. 超时重传机制 一. 确认应答机制 确认应答: 保障可靠传输的核心机制。 可靠传输: 不是指传输过去的数据不出错, 也不是指数据一定能传输过去,而是指发送方能够知道接收方是否接收到了数据。确认应答的关键就是接收方收到数…...

Kubernetes中Pod的扩缩容介绍
Kubernetes中Pod的扩缩容介绍 在实际生产系统中,我们经常会遇到某个服务需要扩容的场景,也可能会遇到由于资源紧张或者工作负载降低而需 要减少服务实例数量的场景。此时可以利用 Deployment/RC 的 Scale 机制来完成这些工作。 Kubernetes 对 Pod 的扩…...

vue点击pdf文件直接在浏览器中预览文件
好久没有更新文章了,说说为什么会有这篇文章呢,其实是应某个热线评论的要求出的,不过由于最近很长一段时间没打开csdn现在才看到,所以才会导致到现在才出。 先来看看封装完这个预览方法的使用,主打一个方便使用&#x…...

通讯网关软件012——利用CommGate X2OPC实现MS SQL数据写入OPC Server
本文推荐利用CommGate X2OPC实现从MS SQL服务器获取数据并写入OPC Server。CommGate X2OPC是宁波科安网信开发的网关软件,软件可以登录到网信智汇(http://wangxinzhihui.com)下载。 【案例】如下图所示,实现从MS SQL数据库获取数据并写入OPC Server。 【…...

ISE_ChipScope Pro的使用
1.ChipScope Pro Core Inserter 使用流程 在之前以及编译好的流水灯实验上进行学习 ChipScope的使用。 一、新建一个ChipScope 核 点击Next,然后在下一个框中选择 Finish,你就会在项目菜单中看到有XX.cdc核文件。 二、对核文件进行设置 右键“Synthesize – XST” …...

北邮22级信通院数电:Verilog-FPGA(2)modelsim北邮信通专属下载、破解教程
北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章,请访问专栏: 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客 目录 1.下载 2.解压打开 3.modelsim初安装 4.…...

【力扣-每日一题】213. 打家劫舍 II
class Solution { public:int getMax(int n,vector<int> &nums){int a0,bnums[n],c0;for(int in1;i<nums.size()n-1;i){ //sizen-1,为0时,第一个可以偷,最后一个不能偷size-1;n为1时,最后一个可偷,计算…...

【PDF】pdf 学习之路
PDF 文件格式解析 https://www.cnblogs.com/theyangfan/p/17074647.html 权威的文档: 推荐第一个连接: PDF Explained (译作《PDF 解析》) | PDF-Explained《PDF 解析》https://zxyle.github.io/PDF-Explained/ https://zxyle…...

排序算法二 归并排序和快速排序
目录 归并排序 快速排序 1 挖坑法编辑 2 Hoare法 快排的优化 快排的非递归方法 七大排序算法复杂度及稳定性分析 归并排序 归并排序是建立在归并操作上的一种有效的排序算法,将以有序的子序列合并,得到完全有序的序列,即先使每个子序列有序,在使子序列段间有序.若将两…...

活动回顾 | 暴雨也无法阻挡的奔赴,2023 Meet TVM · 深圳站完美收官!
2023 Meet TVM 深圳站于 2023 年 9 月 16 日在腾讯大厦成功举办,百余名参与者亲临现场,聆听讲师们的精彩分享。 作者 | xixi 编辑 | 三羊 本文首发于 HyperAI 超神经微信公众平台~ **由 MLC.AI 社区和 HyperAI超神经主办,Openbayes贝式计算…...

JAVA_多线程的实现方式
线程的状态 方式一: public class Thread1 extends Thread {Overridepublic void run() {synchronized (this) {for (int i 0; i < 100; i) {System.out.println(getName() "" i);}}} } Thread1 thread1 new Thread1(); thread1.start(); 方式二…...

Android AndroidStudro版本gradle版本对应
详情网站:Android studio版本对用的gradle版本和插件版本(注意事项)...
Windows所有的端口及端口对应的程序
Windows所有的端口及端口对应的程序 1.查询Windows的端口 在CMD窗口运行: netstat -ano 结果示例: 活动连接协议 本地地址 外部地址 状态 PIDTCP 0.0.0.0:135 0.0.0.0:0 LISTENING 1156T…...

【Kafka系列】(二)Kafka的基本使用
有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top 首发博客地址[1] 文章更新计划[2] 系列文章地址[3] Kafka 线上集群部署方案怎么做 操作系统 先说结论,Kafka 部署在 Linux 上要比 Window…...

2023年下半年软考高级系统架构设计师论文指南(收藏)
由于今年下半年软考改为了机考,所以今年是看大家码字的速度了,但是好处还是有的,错了还能删除,之前纸质的 还有点不方便。 1、选择题目 (1)控制选题的时间。不要浪费太多时间在纠结选题上面。 ÿ…...
数据结构之【动态数组】
1. 线性表 概念:线性表是n个具有相同特性的数据元素的有限序列。 常见的线性表有:数组、链表、栈、队列、字符串…… 特点: 保存在这个结构中的元素都是相同的数据类型。元素之间线性排列,元素之间在逻辑上是连续的。 线性表…...

解答嵌入式和单片机的关系
嵌入式系统是一种特殊的计算机系统,用于特定任务或功能。而单片机则是嵌入式系统的核心部件之一,是一种在单个芯片上集成了处理器、内存、输入输出接口等功能的微控制器。刚刚好我这里有一套单片机保姆式教学,里面有编程教学、问题讲解、语言…...

利用Pycharm将python程序打包为exe文件(亲测可用)
最近做了一个关于py的小项目,对利用Pycharm将python文件打包为exe文件不是很熟悉,故学习记录之。 目录 一、下载pyinstaller库 二、打开Pycharm进行打包(不更改图标) 三、打开Pycharm进行打包(更改图标)…...

解决Vue设置图片的动态src不生效的问题
一、问题描述 在vue项目中,想要动态设置img的src时,此时发现图片会加载失败。在Vue代码中是这样写的: 在Vue的data中是这样写的: 我的图片在根目录下的static里面: 但是在页面上这个图片却无法加载出来。 二、解决方案…...
企业关键数据采集如何做
数据对于企业的重要性不言而喻,目前又处于大数据时代,企业对于数据的解读将是辅助决策最重要的一环。依据所掌握的数据信息,帮助企业做决策的优化。然而,在企业的关键数据采集并不是一项简单轻松的任务,他需要企业投入…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...

centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...

均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...

七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

华为OD机试-最短木板长度-二分法(A卷,100分)
此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...