net.ipv4.tcp_syn_retries的设置,表示应用程序进行connect()系统调用时,在对方不返回SYN + ACK的情况下(也就是超时的情况下),第一次发送之后,内核最多重试几次发送SYN包;并且决定了等待时间.

Linux上的默认值是 net.ipv4.tcp_syn_retries = 6 ,也就是说如果是本机主动发起连接,(即主动开启TCP三次握手中的第一个SYN包),如果一直收不到对方返回SYN + ACK ,那么应用程序最大的超时时间就是127秒

iptables -A INPUT --protocol tcp --dport 5000 --syn -j DROP
 tcpdump -i lo -Ss0 -n src 127.0.0.1 and dst 127.0.0.1 and port 5000

新开一个窗口

date '+ %F %T'; telnet 127.0.0.1 5000; date '+ %F %T';

在这里插入图片描述
在这里插入图片描述

可以看到当net.ipv4.tcp_syn_retries=6的时候

发起了7次请求 然后6次重试 且每次间隔时间是上一次间隔的2倍

参考 https://www.dazhuanlan.com/2019/10/20/5dab43fbaadb1/

GitHub 加速计划 / li / linux-dash
6
1
下载
A beautiful web dashboard for Linux
最近提交(Master分支:3 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐