TCP 三次握手,第一次握手报文丢失会发生什么?
文章目录
- RTO(Retransmission Timeout)
- 注意
客户端想与服务端建立 TCP 连接时,先发送 SYN 报文,在这之后,如果客户端迟迟收不到服务端的 SYN+ACK 报文,就会触发「超时重传」机制,重新发送 SYN 报文,而且重传的 SYN 报文中序列号是不变的
下图以 Linux(6.14.7) TCP 第一次握手报文丢失为例,其中 tcp_syn_retries 参数值为 2
RTO(Retransmission Timeout)
触发 TCP 超时重传机制的时间
注意
- Linux(6.14.7) RTO 初始值为 1s
- Linux(6.14.7) RTO 最大值为 120s
/* 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.*/