Linux 上的初始 SYN 超时

tro*_*zen 5 linux kernel tcp

建立TCP连接时,发送第一个SYN包的超时时间是多少?如果没有收到应答,则会重新发送另一个 SYN 数据包(最多net.ipv4.tcp_syn_retries),超时时间大约增加一倍。我想知道如何检查或更改初始超时。

Jur*_*nka 6

在现代版本中,初始重传超时设置在内核中硬编码为 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
Run Code Online (Sandbox Code Playgroud)

该常量在以下位置引用tcp.chttps://elixir.bootlin.com/linux/v5.9/source/net/ipv4/tcp.c#L420

如果不重新编译内核就无法更改它:How can I adjustment the initial TCP retransmit timeout? (以前版本好像是3秒)