TCP如何保证安全可靠?

embedded/2025/1/22 19:59:08/

TCP如何保证安全可靠?

TCP(传输控制协议)是一种面向连接的、可靠的传输层协议。为了保证数据传输的安全性和可靠性,TCP 采用了多种机制,包括确认和重传、数据校验、数据分片和排序、流量控制以及拥塞控制。
在这里插入图片描述


1. 确认和重传机制(Acknowledgement and Retransmission)

工作原理
  • 确认机制: 接收方在成功接收到数据后,会向发送方发送一个确认报文(ACK),告知发送方数据已成功接收。
  • 重传机制: 如果发送方在一定时间内未收到确认报文(ACK),则会认为数据丢失或损坏,并重新发送该数据。
详细说明
  • 超时重传: 发送方为每个发送的数据包设置一个计时器。如果在计时器超时前未收到确认报文,则重传该数据包。
  • 快速重传: 如果接收方收到乱序的数据包,会立即发送重复的确认报文(Duplicate ACK)。发送方在收到多个重复的确认报文后,会立即重传丢失的数据包,而不必等待超时。
示例

假设发送方发送了数据包1、2、3,但接收方只收到了数据包1和3。接收方会发送确认报文ACK=2,表示数据包2丢失。发送方在超时后重传数据包2。


2. 数据校验(Checksum)

工作原理
  • 校验和: TCP 报文头中包含一个校验和字段,用于检测数据在传输过程中是否损坏。
  • 校验过程: 发送方计算数据包的校验和并将其放入报文头。接收方收到数据包后,重新计算校验和并与报文头中的校验和进行比较。如果两者不一致,则说明数据包损坏。
详细说明
  • 错误检测: 校验和可以检测出数据包中的大多数错误,包括比特翻转、数据丢失等。
  • 丢弃损坏数据包: 如果接收方检测到数据包损坏,则会丢弃该数据包,并要求发送方重传。
示例

发送方发送一个数据包,校验和为 0x1234。接收方收到数据包后计算校验和为 0x5678,发现不一致,于是丢弃该数据包。


3. 数据分片和排序(Segmentation and Reordering)

工作原理
  • 数据分片: TCP 会根据最大传输单元(MTU)将数据合理分片,以适应网络传输的要求。
  • 数据排序: 接收方会缓存未按序到达的数据包,并在所有数据包到达后重新排序,确保数据按正确的顺序交给应用层。
详细说明
  • MTU: 最大传输单元是网络链路能够传输的最大数据包大小。TCP 会根据 MTU 将大数据包分片为多个小数据包。
  • 乱序处理: 由于网络传输的不确定性,数据包可能会乱序到达。TCP 会缓存这些数据包,并在所有数据包到达后重新排序。
示例

假设发送方发送了数据包1、2、3,但接收方收到的顺序是1、3、2。接收方会缓存数据包3和2,直到数据包2到达后,重新排序为1、2、3。


4. 流量控制(Flow Control)

工作原理
  • 滑动窗口: 接收方通过滑动窗口机制告知发送方其当前的接收能力。发送方根据接收方的窗口大小调整发送速率,避免发送过多数据导致接收方无法处理。
详细说明
  • 窗口大小: 接收方在确认报文(ACK)中携带窗口大小信息,表示其当前可接收的数据量。
  • 动态调整: 发送方根据接收方的窗口大小动态调整发送速率,确保接收方能够及时处理数据。
示例

接收方的窗口大小为1000字节,发送方每次发送1000字节的数据。如果接收方的窗口大小变为500字节,发送方会减少发送的数据量。


5. 拥塞控制(Congestion Control)

工作原理
  • 拥塞窗口: 发送方维护一个拥塞窗口,用于控制发送的数据量。当网络拥塞时,拥塞窗口会减小,减少数据的发送量。
  • 拥塞检测: 发送方通过检测数据包的丢失情况来判断网络是否拥塞。如果检测到拥塞,则减小拥塞窗口。
详细说明
  • 慢启动: 发送方在连接建立时,拥塞窗口从1开始,逐渐增加发送的数据量。
  • 拥塞避免: 当拥塞窗口达到一定阈值后,发送方进入拥塞避免阶段,缓慢增加发送的数据量。
  • 快速恢复: 当发送方检测到数据包丢失时,会快速减小拥塞窗口,并进入快速恢复阶段,尽快恢复数据传输。
示例

发送方的拥塞窗口初始为1,每收到一个确认报文(ACK),拥塞窗口增加1。当拥塞窗口达到阈值后,每收到一个确认报文(ACK),拥塞窗口增加1/拥塞窗口大小。


TCP 和 UDP 的对比

特性TCPUDP
连接方式面向连接,需建立可靠连接无连接,直接发送数据报
可靠性提供可靠的数据传输,支持确认和重传不提供可靠性保证,可能存在丢包或乱序
数据校验提供数据校验,检测数据包是否损坏不提供数据校验
数据分片和排序支持数据分片和排序不支持数据分片和排序
流量控制支持流量控制,通过滑动窗口调整发送速率不支持流量控制
拥塞控制支持拥塞控制,动态调整发送速率不支持拥塞控制

TCP 安全可靠机制
确认和重传
数据校验
数据分片和排序
流量控制
拥塞控制
接收方发送确认报文
发送方超时重传
发送方计算校验和
接收方校验数据包
发送方根据 MTU 分片
接收方重新排序数据包
接收方通过滑动窗口控制发送速率
发送方通过拥塞窗口控制发送速率

http://www.ppmy.cn/embedded/156139.html

相关文章

【pytorch】norm的使用

torch.norm [deprecated ] 在torch.norm中,通过参数p来定制order 主要有如下几类 L1 norm 计算张量中所有数值之和L2 norm 计算张量中所有数值的平方和开根Frobenius norm 计算张量中所有维度上所有数值的平方和开根Infinity norm 计算张量中有所数值绝对值最大N…

Mysql触发器(学习自用)

一、介绍 二、触发器语法 注意:拿取新的数据时用new,旧数据用old。

Python----Python高级(模块与包,Python基本库)

一、模块 1.1、概念 就是一个包含了Python代码的以.py为后缀的Python文件,可以被其他 Python程序导入和使用,也可以自己独立执行,里面存放着的是一组相关的函 数或者类,比如查看关键字列表时导入的keyword模块。 1.2、作用 令Py…

科技护航:分布式 IO 模块与大型 PLC,稳筑地铁安全防线

在城市的地下脉络中,地铁如灵动的巨龙,承载着无数人的出行需求。保障地铁的稳定安全运行,是城市高效运转的关键,而这背后,分布式 IO 模块与大型 PLC 的默契协作,功不可没。 智慧大脑 大型 PLC,…

springboot使用ssl连接elasticsearch

使用es时ssl证书报错 unable to find valid certification path to requested target 1.依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency>2…

解锁辅助驾驶新境界:基于昇腾 AI 异构计算架构 CANN 的应用探秘

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《AI大模型》 期待您的关注 目录 一、引言 二、CANN 是什么 1. 异构计算与人工智能的关系 2. CANN 的定义和作用 3. CANN 的技…

C++ ——— 模拟实现 vector 类

目录 vector 类的框架 无参数的构造函数 析构函数 获取有效数据个数 获取容量 重载 [] 运算符 可读可写版本 只可读版本 扩容 尾插 实现迭代器 可读可写版本 只可读版本 自定义设置size长度和内容 在任意位置插入 删除任意位置的数据 赋值重载 vector 类的框…

Appium(四)

一、app页面元素定位 1、通过id定位元素: resrouce-id2、通过ClassName定位&#xff1a;classname3、通过AccessibilityId定位&#xff1a;content-desc4、通过AndroidUiAutomator定位5、通过xpath定位xpath、id、class、accessibility id、android uiautomatorUI AutomatorUI自…