TCP重传机制详解

news2024/9/20 22:47:05

1.什么是TCP重传机制

TCP 中,当发送端的数据到达接收主机时,接收端主机会返回⼀个确认应答消息,表示已收到消息。 但是如果传输的过程中,数据包丢失了,就会使⽤重传机制来解决。TCP的重传机制是为了保证数据传输的可靠性而设计的一系列机制,它主要通过重新发送丢失或确认失败的数据段来确保数据能够正确地到达接收方。

2.重传的方式

2.1超时重传

它主要解决的问题是当发送方发送数据后,长时间未收到接收端的确认(ACK)时,发送方认为数据可能丢失或损坏,因此会通过重新发送数据来确保数据的可靠性。

重传机制的其中一个方式,就是在发送数据时,设定一个定时器,当超过指定的时间后,没有收到对方的 ACK 确认应答报文,就会重发该数据,也就是我们常说的超时重传

TCP 会在以下两种情况发生超时重传:

  • 数据包丢失
  • 确认应答丢失

如果超时重发的数据,再次超时⼜要重传的时候, TCP 的策略是将超时间隔加倍,也就是 每当遇到⼀次超时重传的 时候,都会将下⼀次超时时间间隔设为先前值的两倍。

2.2快速重传

快速重传( Fast Retransmit )机制 ,它 不以时间为驱动,⽽是以数据驱动重传
⼯作原理:
当收到三个相同的 ACK 报⽂时,会在定时器过期之前,重传丢失的报⽂段。快速重传解决了超时时间的问题,但还⾯临另外⼀个问题:重传的时候,是重传之前的⼀个,还是重传所有的问题。

2.3 SACKSelective Acknowledgment,选择性确认)

为了解决 重传哪些报⽂的问题⽽提出。
这种⽅式需要在 TCP 头部「选项」字段⾥加⼀个 SACK 的东⻄, 可以将已收到的数据的信息发送给「发送⽅」 ,这样发送⽅就可以知道哪些数据收到了,哪些数据没收到,知道了这些信息,就可以只重传丢失的数据

2.4 D-SACKDuplicate SACK

主要使⽤了 SACK 来告诉【发送⽅】有哪些数据被重复接收了。下⾯举例来说明 D-SACK 的作⽤:
ACK 丢包:
⽹络延时:
使⽤ D-SACK 的好处:
1 )可以让【发送⽅】知道,是发出去的包丢了,还是接收⽅回应的 ACK 包丢了;
2 )可以知道是不是【发送⽅】的数据包被⽹络演示了;
3 )可以知道⽹络中是不是把【发送⽅】的数据包给复制了。

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

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

相关文章

决策树回归(Decision Tree Regression)

理论知识推导 决策树回归是一种非参数监督学习方法,用于回归问题。它通过将数据集划分成较小的子集来建立模型,并在这些子集上构建简单的预测模型(通常是恒定值)。下面是决策树回归的数学推导过程: 实施步骤与参数解读…

紫光展锐5G安卓核心板T760__国产手机芯片方案

展锐T760安卓核心板是具备续航和性能更加均衡的5G移动平台。其主要特点包括主流的6400万像素摄像头和高达120Hz的刷新率。 平台采用多模融合的创新架构和AI智能调节技术,从而在5G数据场景下降低了37%的整体功耗,在5G待机场景下降低了18%的整体功耗。 多…

遇到报错:无法安装 “WebDriverAgentRunner-Runer“ 无法安装此app,因为无法验证其完整性,如何解决

嗨,大家好,我是兰若,相信很多人在做app自动化测试时,都遇到过这种报错:无法安装 “WebDriverAgentRunner-Runer” 无法安装此app,因为无法验证其完整性。 以下是一些解决思路: 这个问题通常是由于 iOS 设…

Linux系统学习日记——vim操作手册

Vim编辑器是linux下的一个命令行编辑器,类似于我们windows下的记事本。 目录 打开文件 编辑 保存退出 打开文件 打开 hello.c不存在也可以打开,保存时vim会自动创建。 效果 Vim打开时,处于命令模式,即执行命令的模式&#x…

Leetcode算法题(移除链表中的元素)

题目如下: 思路1:创建一个新的带头链表 (newhead),遍历头结点对应的值分别于x进行比较,将不等于x的节点尾插到新的带头链表中,返回新的带头链表的下一个节点。 代码如下: typedef …

大数据开发之Hadoop

大数据开发之Hadoop Hadoop的发展Hadoop的三个功能组件一、HDFS 分布式文件系统 1、HDFS的基础架构2、HDFS基础操作命令3、HDFS WEB浏览:4、Big Data Tools插件5、使用NFS网关功能将HDFS挂载到本地系统6、HDFS数据存储7、NameNode 元数据8、SecondaryNameNode的作用…

从人工巡检到智能防控:智慧油气田安全生产的新视角

一、背景需求 随着科技的飞速发展,视频监控技术已成为各行各业保障安全生产、提升管理效率的重要手段。特别是在油气田这一特殊领域,由于其工作环境复杂、安全风险高,传统的监控方式已难以满足实际需求。因此,基于视频监控AI智能…

Gettler‘s Screep World 笔记 Ⅰ

夏促时候刚刚入坑,写个笔记叭~ 环境配置 参考 HoPGoldy 大佬的简书,先配置下开发环境 萌新去看大佬的详细教程,我这里比较简单,有前端基础的可以直接抄 VSCode 跳过 node 我配的是v18.18.2 换源 npm config set registry h…

高性能分布式IO系统BL205 OPC UA耦合器

边缘计算是指在网络的边缘位置进行数据处理和分析,而不是将所有数据都传送到云端或中心服务器,这样可以减少延迟、降低带宽需求、提高响应速度并增强数据安全性。 钡铼BL205耦合器就内置边缘计算功能,它不依赖上位机和云平台,就能…

SpringCloudAlibaba-Seata2.0.0与Nacos2.2.1

一、下载 ## 下载seata wget https://github.com/apache/incubator-seata/releases/download/v2.0.0/seata-server-2.0.0.tar.gz## 解压 tar zxvf seata-server-2.0.0.tar.gz二、执行sql文件 ## 取出sql文件执行 cd /seata/script/server/db/mysql ## 找个mysql数据库执行三、…

gitlab新建仓库

总贴 每个git网站都有不同的创建项目的方式,现在举例gitlab,其他例如gitee,gitcode,都是差不多的,自行百度 1![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/dae875d9048940c0aeb292c07d6a4a62.png)1和2是项…

【面试题】数据结构:堆排序的排序思想?

堆排序的排序思想? 堆排序是一种高效的排序算法,其基本思想是利用堆这种数据结构来实现排序。堆是一种特殊的完全二叉树,通常用数组来表示。堆排序的基本步骤如下: 1. 构建初始堆: 将待排序的数组转换成一个最大堆&a…

《昇思25天学习打卡营第25天|第20天》

今天是第二十天,今天学习的是应用实践的生成式的Pix2Pix实现图像转换。 老传统,从Pix2Pix概述学起(基于条件生成对抗网络实现的一种深度学习图像转换模型),基础原理,准备环节(配置环境文件、准…

科普文:企业级磁盘阵列软件架构与功能概述

科普文:了解RAID独立冗余磁盘阵列-CSDN博客 磁盘阵列软件概叙 从硬件到软件进行了一个比较全面,但又非常浅显的介绍。在硬件方面,我们了解到企业级磁盘阵列通常由两个独立的计算机打包成一台设备提供存储服务;在软件方面&#x…

分布式服务框架zookeeper+消息队列kafaka

一、zookeeper概述 zookeeper是一个分布式服务框架,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:命名服务,状态同步,配置中心,集群管理等。 在分布式环境下,经常需要对应用/服…

linux中list的基本用法

内核链表 1 list_head 结构 为了使用链表机制&#xff0c;驱动程序需要包含<linux/types.h>头文件&#xff0c;该文件定义了如下结构体实现双向链&#xff1a; struct list_head {struct list_head *next, *prev; };2 链表的初始化 2.1 链表宏定义和初始化 可使用以…

C++【OpenCV】图片亮度色度归一化

#include <opencv2/highgui.hpp> #include <opencv2/imgproc.hpp> #include <iostream>using namespace cv; using namespace std;int main() {Mat image imread("SrcMF.jpg");// 灰度、Gamma归一化亮度cv::Mat m_gray;cv::cvtColor(image, m_gra…

人工智能算法工程师(中级)课程17-模型的量化与部署之剪枝技巧与代码详解

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能算法工程师(中级)课程17-模型的量化与部署之剪枝技巧与代码详解。模型剪枝是深度学习领域中一项关键的技术&#xff0c;旨在减少神经网络中的冗余权重&#xff0c;从而降低计算成本和内存占用&#xff0c;同…

昇思25天学习打卡营第5天 | 数据集

在探索MindSpore深度学习框架中的数据集处理过程&#xff0c;我对其数据加载和处理流程有了深入的了解。MindSpore提供了一套功能强大的工具&#xff0c;可以有效地处理和转换数据&#xff0c;确保了数据预处理的效率和质量。以下是我从本次学习中得到的几点主要心得&#xff1…

食堂采购系统开发:从需求分析到上线实施的完整指南

本篇文章&#xff0c;笔者将详细介绍食堂采购系统从需求分析到上线实施的完整过程&#xff0c;旨在为开发团队和管理者提供一个系统化的指南。 一、需求分析 1.用户需求 常见的需求包括&#xff1a; -采购计划管理 -供应商管理 -库存管理 -成本控制 -报表生成 2.系统功…