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.
						 */
相关推荐
SDWAN_Cheap10 分钟前
TCP滑动窗口与拥塞控制是什么?从流量控制到网络稳定性的完整解析
网络·tcp/ip·php
广东融科数据服务有限公司24 分钟前
无网络仓储库房安防监控改造落地案例|离线闭环存储 + 4G 低功耗远程适配实战优化
网络·仓储改造
YumiProxy35 分钟前
动态IP冲突排查实战:从ARP检测到DHCP地址池的完整链路
服务器·网络·网络协议·tcp/ip·ip
Dynadot_tech36 分钟前
域名投资中的域名管理策略
网络·域名·域名注册·dynadot·域名管理
Logic1011 小时前
C语言/数据结构位运算题解:异或XOR找出星球探险中的“独特能量石“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
CHENKONG_CK1 小时前
RFID 赋能汽车零部件涂装产线,构建全流程数字化追溯体系
网络·人工智能·单片机·网络协议·tcp/ip·汽车
Escalating_xu1 小时前
【C 语言】深入理解指针(3):字符指针、数组指针、二维数组传参、函数指针与转移表
java·c语言·开发语言
垆边人似月.1 小时前
华为机考题:最小代价爬楼梯
c语言·c++
优化Henry2 小时前
BBU与RRU光链路详解:从双纤一收一发到单纤双向
网络·笔记·学习·5g·tdd
实点科技2 小时前
远程IO模块的柜外安装:装在什么位置、防尘罩怎么选配
运维·服务器·网络