文章目錄
- 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.*/