TCP 三次握手,第二次握手报文丢失会发生什么?

文章目录

  • [RTO(Retransmission Timeout)](#RTO(Retransmission Timeout))
  • 注意

服务端收到客户端的 SYN 报文后,会回给客户端一个 SYN+ACK 报文,之后处于 SYN_RCVD 状态

第二次握手的 SYN+ACK 报文其实有两个目的:

  • 第二次握手的 ACK,是对第一次握手的确认报文
  • 第二次握手的 SYN,是服务端请求建立 TCP 连接的报文

如果第二次握手报文丢失了:

  • 客户端
    因为第二次握手包含对第一次握手的确认报文,如果客户端迟迟没有收到第二次握手报文,客户端就会觉得自己的 SYN 报文丢失了,于是触发「超时重传」机制,重新发送 SYN 报文
  • 服务端
    因为第二次握手包含服务端请求建立 TCP 连接的 SYN 报文,当客户端收到后,需要回给服务端一个 ACK 报文,如果第二次握手报文丢失了,服务端也就收不到第三次握手报文,于是就会触发「超时重传」机制,重新发送 SYN+ACK 报文

下图以 Linux(6.14.7) TCP 第二次握手报文丢失为例,其中 tcp_syn_retries 参数值为 2, tcp_synack_retries 参数值为 3

RTO(Retransmission Timeout)

触发 TCP 超时重传机制的时间

注意

  • Linux(6.14.7) RTO 初始值为 1s
  • Linux(6.14.7) RTO 最大值为 120s
c 复制代码
/* Linux Kernel 6.14.7 tcp.h */
#define TCP_RTO_MAX	((unsigned)(120*HZ))
#define TCP_RTO_MIN	((unsigned)(HZ/5))

#define TCP_TIMEOUT_INIT ((unsigned)(1*HZ))	/* RFC6298 2.1 initial RTO value	*/
#define TCP_TIMEOUT_FALLBACK ((unsigned)(3*HZ))	/* RFC 1122 initial RTO value, now
						 * used as a fallback RTO for the
						 * initial data transmission if no
						 * valid RTT sample has been acquired,
						 * most likely due to retrans in 3WHS.
						 */
相关推荐
KaMeidebaby1 小时前
卡梅德生物技术快报 | 核酸适配体文库测序:核酸适配体文库测序的技术原理、实验流程与数据解析
前端·网络·数据库·人工智能·算法
上海云盾商务经理杨杨1 小时前
2026 生产级 Linux 内核抗 DDoS 调优!全套 sysctl 配置直接套用
网络·安全·ddos
rcms152702692182 小时前
CISCO 73-11029-01 印刷电路板
网络
韩楚风2 小时前
【参天引擎】一次宕机后的数据恢复,让我把 Cantian 持久化与恢复的六大机制全搞明白了
服务器·网络·数据库·分布式·mysql·架构·cantian
星恒讯工业路由器3 小时前
工业以太网核心技术解析
网络·物联网·网络拓扑·信息与通信·业以太网·网络冗余
云栖梦泽在3 小时前
稳如狗网络工具箱:IP、DNS、WebRTC、测速、连通性和全球延迟检测工具简明介绍
网络·网络协议·tcp/ip·网络安全·性能优化·webrtc
网络安全零基础教程3 小时前
网络安全春招面试避坑与复盘指南
linux·网络·安全·web安全·面试·职场和发展
kirs_ur3 小时前
SSD 安全特性 — 加密与 TCG Opal
服务器·网络·安全
Mortalbreeze3 小时前
深入 Linux Socket 编程:端口号、网络字节序与 struct sockaddr 详解
linux·服务器·网络·c++
躺柒3 小时前
读半导体简史08大型机
linux·服务器·c语言·数据库·unix·ibm