TCP重传机制详解——01概述

文章目录

TCP重传机制详解------01概述

什么是TCP重传?

重传,表示的重复传输。在生活中,就是书信的重复传输;在用户使用的网络世界里,就是数据和信息的重复传输;在TCP/IP协议中,就是报文的重复传输。
TCP重传就像寄信一样,如果你没收到回执,就说明信可能没送到,于是你就再寄一次,直到对方告诉你信收到了为止。在网络里,TCP就是帮你这样安全送"信"的,如果电脑A发给电脑B的信息没被确认收到,TCP就会重新发送这个信息,确保信息一定能到达B电脑。

TCP为什么要重传?

我们都知道TCP的三个特点,分别是面向连接、可靠、字节流式。

重传的目的就是尽可能的保证TCP的可靠。

TCP如何做到重传?

TCP重传的最基本的元素就是seq和ack字段,也就是在数据分段的前提下,如何知道哪一个数据丢失了,哪一个数据接收到了。所以seq和ack的值就是让我们可以知道我们需要重传哪些数据的依据。

  • 序号(Sequence Numbers): 每个TCP数据段都携带一个序号字段,表示数据段中数据的起始字节在整个数据流中的位置。发送端在发送数据时,会给每个数据段分配一个唯一的序列号,以便接收端可以按照正确的顺序重新组装数据流。
  • 确认应答(ACKnowledgments): 接收端在接收到数据段后,会通过ACK应答告诉发送端已成功接收的数据段的序列号。ACK字段中携带的值是期望接收的下一个数据段的序列号,即上次已成功接收数据段的序列号加上传送的数据字节数。

所以,需要知道这个前提,不用想的太复杂,之后的很多机制都是基于此。TCP重传的本质设计思路,便是基于序号(Sequence Numbers)和确认应答(ACKnowledgments)

TCP重传方式有哪些

超时重传(timeout or timer-based retransmission)

这种重传方式是发出去的数据在RTO超时后还没有收到对应的ACK就会进行超时重传。

  • RTO(Retransmission Time Out),传输超时时间
  • RTT(Round Trip Time),往返时间,数据发送至收到ACK的时间。
    RTO值是根据RTT进行公式计算的,而网咯是动态变化的,所以往返时间也并非确定,所以RTO也是动态变化的


RTO倍增,指数回避,RTT-2RTO-4RTO-8RTO-16RTO.......
如果得不到回应,超时重传会一直重传下去吗?

不会!会有次数限制吗?

内核参数 场景
/proc/sys/net/ipv4/tcp_syn_retries 初始SYN握手重试次数
/proc/sys/net/ipv4/tcp_syn_retries 第二次SYN+ACK握手重试次数
/proc/sys/net/ipv4/tcp_syn_retries 第二次SYN+ACK握手重试次数
/proc/sys/net/ipv4/tcp_retries1 在超时后第一次尝试多少次重传(针对数据段)
/proc/sys/net/ipv4/tcp_retries2 在超时后最多尝试多少次重传(针对数据段)

关于tcp_retries1和tcp_retries2的深入理解:tcp_retries1和tcp_retries2

快速重传(fast retransmission或者fast retransmit)

当TCP注意到累计ack(即TCP头中的ack number)不再推进或者接收端通过SACK信息指示发送端接收端存在洞(hole)时候就会触发发送端的重传,通常来说快速重传比超时重传更高效。

触发机制:

类型 触发条件
dup ACK dup ACK重复三次
SACK 三个SACK选项块
FACK 一次ACK+SACK(ACK-SACK之间有三个包未确认)
partial ACK 一个ACK连续丢包情况下只确认部分收到了
dup ACK thin stram下dup ACK重复一次
复制代码
注:
1. 当ACK报文中的ack值和SACK块之间存在空洞时,可以判定为partial ACK;
2. 在乱序接收数据包后只发送了一个重复的ACK,并且没有收到后续数据包,可以判定为thin stream

改进的重传机制,早期重传(ER,Early Retransmit)

谷歌还对快速重传提出了一种改进的重传机制,即早期重传(ER,Early Retransmit),主要解决某些特定场景下,没有足够的dupack出发的快速重传造成的问题。

REF

TCP重传概述
Linux超时重传引入示例
基础快速重传

相关推荐
DFT计算杂谈2 分钟前
无 Root 权限在 Tesla K80 零门槛部署 DeepSeek 大模型
linux·服务器·网络·数据库·机器学习
中微极客2 小时前
2026主流AI Agent框架技术选型与性能对比
运维·网络·人工智能
猿的天空6 小时前
机器人双手迎来全栈训练系统:灵初智能EgoSteer让灵巧手无所不能
网络·人工智能·计算机·ai·程序员·机器人·编程
Xzaveir_7776 小时前
OPPO、vivo、荣耀号码认证:多终端拨测矩阵与异常复现
大数据·网络·科技·矩阵·产品经理·ai-native
wuqingshun3141596 小时前
从网络角度来看,用户从输入网址到网页显示,期间发生了什么?
网络
牛马工作号6 小时前
Zigbee 专业详解:从协议到排障
网络·物联网·安全
牛马工作号6 小时前
Wi‑Fi 完全指南:从 802.11 协议到 Wi‑Fi 7、AC+AP 与 Mesh 工程组网
网络·网络协议·智能路由器
智慧光迅AINOPOL7 小时前
智慧工厂全光网怎么扛住AGV与强电磁?光电复合缆与工业级方案
网络·全光网解决方案·全光网·酒店全光解决方案·泛住宿全光网解决方案
JoyCong19987 小时前
手机变身“司令台”!ToDesk AI安卓版上线
网络·人工智能·科技·智能手机·电脑·远程工作·远程操作
a4493153627 小时前
iPhone 基带故障诊断——无服务/搜索不到网络的芯片级维修实录
网络·macos·ios·电脑·iphone