Linux
linux 上的初始 SYN 超時
建立 TCP 連接時,發送的第一個 SYN 數據包的超時時間是多少?如果沒有收到應答,則重新發送另一個 SYN 數據包(最多
net.ipv4.tcp_syn_retries
),超時時間大約加倍。我想知道如何檢查或更改初始超時。
在現代版本中,初始重傳超時設置在核心中被硬編碼為 1 秒:https ://elixir.bootlin.com/linux/v5.9.11/source/include/net/tcp.h#L142
#define TCP_TIMEOUT_INIT ((unsigned)(1*HZ)) /* RFC6298 2.1 initial RTO value
該常量在
tcp.c
:https ://elixir.bootlin.com/linux/v5.9/source/net/ipv4/tcp.c#L420 中引用如果不重新編譯核心就無法更改它:如何調整初始 TCP 重新傳輸超時?(老版本好像是3秒)