文章目录
- RTO(Retransmission Timeout)
- 注意
客户端收到服务端的 SYN+ACK 报文后,会回给服务端一个 ACK 报文,之后处于 ESTABLISHED 状态
因为第三次握手的 ACK 是对第二次握手中 SYN 的确认报文,如果第三次握手报文丢失了,服务端就会触发「超时重传」机制,重新发送 SYN+ACK 报文,客户端是不会重传 ACK 报文的
下图以 Linux(6.14.7) TCP 第三次握手报文丢失为例,其中 tcp_synack_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.*/