TCP 三次握手过程以下:服务器
与三次握手的系统参数有(系统默认值):网络
在 /etc/sysctl.conf
中添加或修改,执行sysctl -p
便可生效。tcp
tcp_syn_retries 与 TCP 三次握手的第一步相关,也就是客户端向服务器发送一个 SYN 数据包。函数
在没有接收到服务器响应的状况下,SYN 数据包的会尝试发送 tcp_syn_retries 次。测试
查看系统设置优化
cat /proc/sys/net/ipv4/tcp_syn_retries 6
测试代码:http://my.oschina.net/lowkey2046/blog/716557.net
服务端(192.168.1.24),客户端(192.168.1.21)code
./client 192.168.1.24 connect: Connection timed out connect_server 192.168.1.24 error
客户端的在 connect 函数上进行三次握手。客户端在发出 SYN 数据包后,等待服务器的响应。若是没有收到服务端响应,会尝试重发 SYN 数据包。总共尝试了6次,也就是 tcp_syn_retries 的数值。默认状况下,时间超过了60s。server
能够经过减少该数值提早结束链接,减小重试次数。blog
tcp_synack_retries 与 TCP 三次握手的第二步相关。也就是服务器向客户端发送一个 SYN-ACK 数据包。
服务器在接收到客户端发送的 SYN 数据包后,会发送 SYN-ACK 数据包进行响应。若是没有收到客户端对该 TCP 报文的响应,服务器会尝试从新发送 SYN-ACK 数据包,总共会尝试 tcp_synack_retries 次。
cat /proc/sys/net/ipv4/tcp_synack_retries 5
这个要构建数据包才能够测试,暂时省略。
能够经过减少该数值提早结束链接,减小重试次数。