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.
						 */
相关推荐
Yupureki7 小时前
《算法竞赛从入门到国奖》算法基础:入门篇-双指针
c语言·开发语言·数据结构·c++·算法·visual studio
Ha_To7 小时前
2025.12.16 Cisco 的HSRP,TCP与UDP协议
网络·智能路由器
m0_738120727 小时前
应急响应——知攻善防蓝队靶机Web-1溯源过程
前端·网络·python·安全·web安全·ssh
努力努力再努力wz7 小时前
【Linux网络系列】:网络+网络编程(UDPsocket+TCPsocket)
java·linux·c语言·开发语言·数据结构·c++·centos
云计算练习生7 小时前
渗透测试行业术语扫盲(第十七篇)—— 合规、开发与职业类
网络·网络安全·信息安全·渗透测试术语·网络安全规范
Smile灬凉城6667 小时前
TCP的四种计时器
运维·服务器·网络
Dovis(誓平步青云)7 小时前
《Linux内核视角:自定义协议与TCP的协同通信之道》
网络·网络协议·tcp/ip
广东大榕树信息科技有限公司7 小时前
如何通过动环监控系统提升机房安全与管理效率?
运维·网络·物联网·国产动环监控系统·动环监控系统
qq13267029407 小时前
grafana 未授权访问漏洞设置iptables指定IP访问,拒绝其他所有IP
linux·服务器·网络·iptables·防火墙策略
while(1){yan}7 小时前
HTTP的数据报格式
java·开发语言·网络·网络协议·http·青少年编程·面试