【计算机网络】TCP连接如何确保传输的可靠性

news2024/12/25 12:52:41

一、确保可靠传输的机制

TCP(传输控制协议)是一种面向连接的、提供可靠交付的、面向字节流的、支持全双工的传输层通信协议

1、序列号 seq

TCP头部中的序号,占32位(4字节);

发送方给报文段分配一个序列号,接收方根据序列号来确认收到的数据,从而确认丢失的数据或者

需要重传的数据

2、确认应答 ACK与ack

TCP头部中的标记,ACK字段,占1位;确认号ack,占32位(4字节);

接收方收到数据后,它会发送一个确认应答(ACK = 1)给发送方,告诉发送方数据已成功接收;

确认应答还包含期望接收的下一个字节的序列号,有助于发送方知道哪些数据已被接收,哪些数据

需要重传

3、检验和

TCP头部中的校验和,占16位(2字节);

检测数据在传输过程中是否发生错误。接收方会计算接收到的数据的校验和,并与发送方发送的校

验和进行比较;不匹配,则接收方会丢弃该数据包,并可能要求发送方重传。

4、流量控制

TCP头部中的窗口,占16位(2字节);

使用可变大小的滑动窗口协议来实现流量控制,防止发送方发送数据的速度过快而导致接收方无法

处理。

5、超时重传 RTO

超过一定时间未收到ACK,重传数据包;RTO根据网络状况动态计算

6、拥塞控制

慢启动、拥塞避免、快重传、快恢复

7、连接管理(3次握手、4次挥手)

参考博文:

【计算机网络】描述TCP建立连接与断开的过程-CSDN博客


二、TCP流量控制具体是如何实现的?

1、可变大小的滑动窗口协议

协议允许接收方根据自己的处理能力,动态调整其可接收数据的窗口大小,

并通过TCP报文的窗口字段将这一信息通知给发送方。

发送方则根据接收到的窗口大小来调整其发送速率,确保在任何时刻,

未确认的数据量不会超过接收窗口的大小。

2、接收方窗口维护

接收窗口(Receive Window):接收方维护一个接收窗口,用于表示其当前可用的缓冲区大小。

这个窗口大小会随着接收方处理数据的速度而变化。

窗口字段(Window Field):接收方通过TCP报文段中的窗口字段,将其当前的接收窗口大小通

知给发送方。

3、发送方

调整发送速率:发送方根据接收到的窗口大小来调整其发送速率。

如果接收窗口的大小变为零,发送方将停止发送数据,直到接收到一个具有非零窗口大小的报文。

零窗口探测报文(Zero Window Probe):为了避免因接收窗口长时间为零而导致的死锁,

发送方可能会发送零窗口探测报文(仅携带 1 字节的数据),以检查接收方是否已经有足够的缓冲

区来接收新数据。

发送窗口的划分发送方的滑动窗口可以分为四个部分:已发送并收到ACK确认的数据、

已发送但未收到ACK确认的数据、未发送但可以发送的数据、不允许被发送的数据。


三、讲一下TCP是如何进行拥塞控制的?

1、慢启动与拥塞避免

慢启动:

初始值小,但拥塞窗口cwnd指数规律增长。慢启动门限值ssthresh限制cwnd倍增。

拥塞避免:

cwnd > ssthresh后,执行拥塞避免算法,窗口值线性增长。

网络拥塞后,执行“乘法减小”,将门限值ssthresh设置为超时的拥塞窗口值cwnd的一半

之后,重新执行慢启动算法

2、快重传与快恢复

快重传:

·接收方收到一个失序的报文段时,立即发出重复确认,无需等到接收方发送数据时捎带确认。(使发送方尽早直到有报文为到达接收方)

·发送方收到3个连续重复确认时,立即重传对方未收到的报文段,无需等待设置的重传计时器到期

快恢复:

门限值ssthresh后,执行拥塞避免算法


关于ARQ(Automatic Repeat reQuest,自动重发请求)协议介绍

主要用于通信网络中的流量控制和可靠传输机制

流量控制

基本概念:流量控制是一种防止网络拥塞的技术,它通过调整数据发送方的发送速率来匹配接收方

的处理能力。

在ARQ机制中,接收方通过确认帧(ACK)来告知发送方哪些数据帧已被正确接收,从而控制发

送方的发送速率。
实现方式:在ARQ中,如果发送方在一定时间内未收到接收方对某个数据帧的确认帧,则认为该

数据帧可能已丢失或出错,并会重新发送该数据帧。

这种机制有助于确保发送方的发送速率不会超过接收方的处理能力,从而实现流量控制。

可靠传输

基本概念:可靠传输是指数据在传输过程中能够准确无误地到达目的地,且传输过程中能够检测和

纠正错误。

实现方式:ARQ通过确认和重传机制来实现可靠传输。

发送方在发送数据帧后,会等待接收方的确认帧。

如果确认帧表示数据帧已正确接收,则发送方继续发送下一个数据帧;

如果确认帧表示数据帧出错或未收到,则发送方会重新发送该数据帧,直到接收方正确接收为止。

这种机制能够确保数据在传输过程中的可靠性和完整性。

ARQ类型

停止-等待ARQ:发送方在发送一个数据帧后必须等待接收方的确认才能发送下一个数据帧。

如果超时未收到确认,则重发该数据帧

连续ARQ(后退N帧ARQ和选择性重传ARQ):允许发送方在收到确认之前连续发送多个数据

帧。当某个数据帧丢失或出错时,根据具体的连续ARQ实现(如后退N帧ARQ或选择性重传

ARQ),发送方可能会重发该数据帧及其之后的所有数据帧(后退N帧ARQ),

或者只重传出错的数据帧(选择性重传ARQ)

具体协议可参考博文,内容很详细:

TCP可靠传输:ARQ协议(停止等待、超时重传、滑动窗口、回退N帧、选择重传)-CSDN博客


欢迎补充,互相学习🤝

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

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

相关文章

CSS中 特殊类型的选择器 伪元素如何使用

一、什么是伪元素 在 CSS 中,伪元素是一种特殊类型的选择器,它允许你为元素的特定部分添加样式,而这些部分在 HTML 文档中并不实际存在。伪元素通常用于创建装饰性效果,如添加边框、背景、阴影等,而不需要额外的 HTML…

PHPJWT的使用

今天得空整理整理JWT的代码 首先,我们得知道什么是JWT? JWT(JSON Web Token)是一种开放标准(RFC7519),用于在网络应用环境中安全地传输声明信息。它是一种紧凑的、URL安全的令牌格式&#xff0…

(一)使用Visual Studio创建ASP.NET Core WebAPI项目

1.创建webAPI项目 选择ASP.NET Core Web API项目模版(基于.Core框架可以支持多种系统环境,所以我们选择.Core框架),点下一步。 2.项目名称 项目名称设置为:CoreWebAPI,点下一步 3.选择框架 选择.NET6.0框…

分类预测|基于黑翅鸢优化轻量级梯度提升机算法数据预测Matlab程序BKA-LightGBM多特征输入多类别输出 含对比

分类预测|基于黑翅鸢优化轻量级梯度提升机算法数据预测Matlab程序BKA-LightGBM多特征输入多类别输出 含对比 文章目录 一、基本原理BKA(Black Kite Algorithm)的原理LightGBM分类预测模型的原理BKA与LightGBM的模型流程总结 二、实验结果三、核心代码四、…

IP学习——twoday

双层Vlan标签 路由器常用命令: 查看当前端口,路由等的信息和配置:display this 查看当前路由器的所有信息: display current-configuration 查看当前路由器的指定信息: display current-configuration | include ip a…

HTML第一课 语法规范与常用标签

目录 ◆ HTML 语法规范 ◆ HTML 常用标签 4.2 标题标签 4.3 段落和换行标签 4.4文本格式化标签 4.5<div>和<span>标签 4.6图像标签和路径 4.7超链接标签 1.外部链接 2.内部链接 3.空链接 4.下载链接 5.锚点链接 ◆ HTML 中的注释和特殊字符​编辑 ◆ HTML 语…

Redis中String类型的基本命令

文章目录 一、String字符串简介二、常见命令setgetmgetmsetsetnxincrincrbydecrdecrbyincrbyfloatappendgetrangesetrangestrlen 三、命令小结四、字符串内部编码五、String典型使用场景1. 缓存(Cache)功能2. 计数功能3. 共享会话&#xff08;Session&#xff09;4. 手机验证码…

软件测试学习笔记丨Pytest+Allure测试计算器

本文转自测试人社区&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/31954 项目要求 3.1 项目简介 计算器是近代人发明的可以进行数字运算的机器。 计算器通过对加法、减法、乘法、除法等功能的运算&#xff0c;将正确的结果展示在屏幕上。 可帮助人们更方便的…

FLTRNN:基于大型语言模型的机器人复杂长时任务规划

目录 一、引言二、FLTRNN框架2.1 任务分解2.2 基于语言的递归神经网络&#xff08;Language-Based RNNs&#xff09;长期记忆&#xff08;Long-Term Memory, Ct&#xff09;&#xff1a;短期记忆&#xff08;Short-Term Memory, Ht&#xff09;&#xff1a; 2.3 增强推理能力的…

GAMES104:12 游戏引擎中的粒子和声效系统-学习笔记

文章目录 一&#xff0c;粒子基础Particle System二&#xff0c;粒子渲染三&#xff0c;GPU粒子及生命周期控制四&#xff0c;粒子应用五&#xff0c;声音基础5.1 Sound System5.2 Digital Sound5.3 Audio Rendering QA 一&#xff0c;粒子基础Particle System 网游里你的付费…

[数据结构]红黑树之插入操作(RBTree)

这里只着重介绍插入操作的实现&#xff1a;) 一、红黑树的概念和性质 红黑树&#xff08;Red Black Tree&#xff09;是一种自平衡的二叉搜索树。红黑树最初在1972年由Rudolf Bayer发明&#xff0c;当时被称为平衡二叉B树&#xff08;symmetric binary B-trees&#xff09;。随…

2024 年高教社杯全国大学生数学建模竞赛B题解题思路(第一版)

原文链接&#xff1a;https://www.cnblogs.com/qimoxuan/articles/18399372 赛题&#xff1a; 问题 1&#xff1a;抽样检测方案设计 分析&#xff1a; 抽样检测方案需要在保证决策准确性的同时&#xff0c;尽量减少检测成本。需要考虑抽样误差对决策的影响&#xff0c;以及如…

OCR经典神经网络(一)文本识别算法CRNN算法原理及其在icdar15数据集上的应用

OCR经典神经网络(一)文本识别算法CRNN算法原理及其在icdar15数据集上的应用 文本识别是OCR&#xff08;Optical Character Recognition&#xff09;的一个子任务&#xff0c;其任务为&#xff1a;识别一个固定区域的的文本内容。 在OCR的两阶段方法里&#xff0c;文本识别模型接…

若依框架登录鉴权详解(动态路由)

若依框架登录鉴权&#xff1a;1.获取token&#xff08;过期在响应拦截器中实现&#xff09;,2.基于RBAC模型获取用户、角色和权限信息&#xff08;在路由前置守卫&#xff09;&#xff0c;3.根据用户权限动态生成&#xff08;从字符串->组件&#xff0c;根据permission添加动…

linux搭建深度学习平台

linux搭建深度学习平台&#xff08;Ubuntu&#xff09; /home/guangyao/anaconda3 我服务器的anaconda地址 ~/anaconda3 1 首先就是打开浏览器&#xff0c;我实验室的是火狐&#xff0c;搜索anaconda下载&#xff0c;找到下载目录&#xff0c;cd进去&#xff0c; 2安装 bas…

【佳学基因检测】在bagisto中,grouped products(同组产品)和bundled products(打包产品)有什么不同?

【佳学基因检测】在bagisto中&#xff0c;grouped products&#xff08;同组产品&#xff09;和bundled products&#xff08;打包产品&#xff09;有什么不同&#xff1f; 在Bagisto电商平台中&#xff0c;**grouped products&#xff08;同组产品&#xff09;和bundled prod…

iceberg存储结构详解

iceberg底层组织方式 下图是Iceberg中表格式&#xff0c;s0、s1代表的是表Snapshot信息&#xff0c;每个表示当前操作的一个快照&#xff0c;每次commit都会生成一个快照Snapshot&#xff0c;每个Snapshot快照对应一个manifest list 元数据文件&#xff0c;每个manifest list …

2024国赛数学建模预测算法-BP神经网络模型的预测精度分析(MATLAB 实现)

人工神经网络 第一节 人工神经网络概述 在您阅读这本书的时候&#xff0c;大约有个相互连接的神经元在帮助您阅读、呼吸、思考&#xff0c;以及完成各种各样的动作。这些神经元中&#xff0c;有些有着与生俱来的功能&#xff0c;比如呼吸、吮吸&#xff0c;有些则是由后天训练…

动态规划DP--背包问题

文章目录 0-1背包问题 -- 问题定义动态规划解法代码题目&#xff1a;分割等和子集题解 0-1背包问题 – 问题定义 在 0-1 背包问题中&#xff0c;给定一个背包的最大容量 W&#xff0c;以及 n 个物品&#xff0c;每个物品有两个属性&#xff1a; 重量&#xff1a;第 i 个物品的…

[数据集][目标检测]电动车入梯进电梯电单车入梯检测数据集VOC+YOLO格式7106张3类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;7106 标注数量(xml文件个数)&#xff1a;7106 标注数量(txt文件个数)&#xff1a;7106 标注…