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

TCP 如何保证传输的可靠性?

可靠性保障
  • 数据分块,序列号,ACK:TCP 把数据分成合适的数据块传输;每一个数据包都有唯一的序列号,根据序列号来排序保证顺序性,同时进行数据包的去重,ACK 保证数据接收。
  • 校验和:对首部和数据进行校验和,防止数据被纂改。
  • 超时重传机制:在数据包丢失或延迟的情况下,重新发送数据包,直到收到对方的确认应答(ACK)。TCP 重传机制主要有:基于计时器的重传(也就是超时重传)、快速重传(基于接收端的反馈信息来引发重传)、SACK(在快速重传的基础上,返回最近收到的报文段的序列号范围,这样客户端就知道,哪些数据包已经到达服务器了)、D-SACK(重复 SACK,在 SACK 的基础上,额外携带信息,告知发送方有哪些数据包自己重复接收了)。
  • 流量控制:通过维护发送窗口和接收窗口来维持发送方与接收方的平衡。接收方会返回当前可用大小,发送方根据这个调整自己的发送窗口,避免数据过载。是端到端的控制。
  • 拥塞控制:维护一个拥塞窗口,发送窗口取接收窗口大小和拥塞窗口大小的较小值。拥塞窗口的控制算法有慢启动、拥塞避免、快速重传和恢复,通过这些算法动态调整拥塞窗口的大小。
超时重传

发送方在一定时间内没有收到 ACK,就会重新发送。重传时间(RTO)由网络往返时间(RTT)动态计算得出,避免太快或太慢。

重传机制:

  • 定时器重传;
  • 快速重传:会返回需要重传的数据包的序列号,但是无法知道需要重传哪些;
  • SACK:在快速重传的基础上额外返回了已经接收到的序列号的区间(字段:Left Edge,Right Edge);
  • D-SACK:在 SACK 的基础上,额外告知了有哪些重复的数据包。
流量控制

通过维护发送窗口和接收窗口,来平衡二者。接收方会告知发送方剩余可用大小,发送方据此来控制发送速度,从而达到流量控制的效果。

拥塞控制

维护一个拥塞窗口,发送窗口取接收窗口大小和拥塞窗口大小的较小值。根据网络拥塞状态动态调整拥塞窗口大小,当网络出现丢包或延迟时,减慢数据发送速度。

http://www.dtcms.com/a/544245.html

相关文章:

  • 亲子娱乐升级!Docker 电视盒子 ADB 安装助手,儿童 APP 一键装满电视
  • Microsoft 365 Copilot 扩展至应用和工作流构建功能
  • 【Latex】本地部署latex+vscode
  • 注册中心(环境隔离、分级模型、Eureka)、远程调用负载均衡、服务保护原理分析
  • 有没有专门做建筑造价的私单网站网站开发风险
  • LSTM模型做二分类(PyTorch实现)
  • Linux 文件变动监控工具:原理、设计与实用指南(C/C++代码实现)
  • 建站之星怎么用做视频解析网站犯法吗
  • LibreTV无广告观影实测:聚合全网资源,远程访问家庭影院新方案!
  • 仓颉中的 UTF-8 编码处理:从 DFA 解码、错误策略到流式与字素迭代的工程实战
  • 【React】打卡笔记,入门学习02:react-router
  • Latex 转 word 在线
  • 【OD刷题笔记】- 可以组成网络的服务器
  • 《算法闯关指南:优选算法--前缀和》--27.寻找数组的中心下标,28.除自身以外数组的乘积
  • linux arm64平台上协议栈发包报文长度溢出导致系统挂死举例
  • 深入理解 Rust `HashMap` 的哈希算法与冲突解决机制
  • 彩票网站开发做一个网站价格
  • 《C++ 继承》三大面向对象编程——继承:派生类构造、多继承、菱形虚拟继承概要
  • 医疗AI白箱编程:从理论到实践指南(代码部分)
  • Spring Cache 多级缓存中 hash 类型 Redis 缓存的自定义实现与核心功能
  • 福州建设人才市场网站山西网站推广
  • Spring Cache 多级缓存中 ZSet 类型 Redis 缓存的自定义实现与核心功能
  • 从开源到落地:SimpleBGC 三轴稳像平台全栈技术解析(上)
  • 51、STM32 与 ESP32 单片机全面对比:架构、性能与应用场景详解
  • NodeJs
  • 【面试题】缓存先删漏洞解决策略(示例代码)
  • 操作系统(7)虚拟内存-缓存工具-页命中和缺页(3)
  • 旧衣回收小程序的技术架构与商业落地:开发者视角的全链路解析
  • 丽水建设网站织梦网站发布的哪些产品和文章放在a文件可以吗
  • 南京网站设计公司济南兴田德润优惠吗泉州定制网站建设