当前位置: 首页 > article >正文

TCP如何保证安全可靠?

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.kler.cn/a/513627.html

相关文章:

  • node.js 文件操作
  • 光谱相机在智能冰箱的应用原理与优势
  • jvm_threads_live_threads 和 jvm_threads_states_threads 这两个指标之间存在一定的关系,但它们关注的维度不同
  • 电子科大2024秋《大数据分析与智能计算》真题回忆
  • 多监控m3u8视频流,怎么获取每个监控的封面图(纯前端)
  • STM32-串口-UART-Asynchronous
  • 我国的金融组织体系,还有各大金融机构的分类,金融行业的组织
  • 【Excel】【VBA】Reaction超限点筛选与散点图可视化
  • 【线性代数】基础版本的高斯消元法
  • Keil自动生成Bin文件(2)
  • 2024年度个人成长与技术洞察总结
  • Data Filtering Network 论文阅读和理解
  • C++ 智能指针(八股总结)
  • 【组件库】使用Vue2+AntV X6+ElementUI 实现拖拽配置自定义vue节点
  • Springboot sse 示例
  • (done) 并行计算学习 (Day1: 两个简单的 OpenMP 例子)
  • JavaWeb开发(十五)实战-生鲜后台管理系统(二)注册、登录、记住密码
  • 【C++】揭秘类与对象的内在机制(核心卷之深浅拷贝与拷贝构造函数的奥秘)
  • 《从入门到精通:蓝桥杯编程大赛知识点全攻略》(五)-数的三次方根、机器人跳跃问题、四平方和
  • Python 进阶 - Excel 基本操作
  • 智能系统的感知和决策
  • 第15篇:从入门到精通:Python标准库详解
  • LeetCode 热题 100_全排列(55_46_中等_C++)(递归(回溯))
  • 简识JVM私有内存区域栈、数据结构
  • 蓝桥杯R格式--高精度算法模拟
  • 【MySQL】 常见数据类型