文档章节

一、linux网络内核调优:三次握手

for。
 for。
发布于 2016/07/23 09:56
字数 477
阅读 137
收藏 2

TCP 三次握手过程如下:

三次握手图

与三次握手的系统参数有(系统默认值):

  • net.ipv4.tcp_syn_retries = 6
  • net.ipv4.tcp_synack_retries = 5

/etc/sysctl.conf 中添加或修改,执行sysctl -p 即可生效。

tcp_syn_retries

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

服务端(192.168.1.24),客户端(192.168.1.21)

  1. 正常情况下执行一次程序,主要是为了产生相应的路由数据
  2. 直接断开服务端网络
  3. 启动客户端
./client 192.168.1.24
connect: Connection timed out
connect_server 192.168.1.24 error

wireshark 抓包

测试截图

客户端的在 connect 函数上进行三次握手。客户端在发出 SYN 数据包后,等待服务器的响应。如果没有收到服务端响应,会尝试重发 SYN 数据包。总共尝试了6次,也就是 tcp_syn_retries 的数值。默认情况下,时间超过了60s。

优化方案

可以通过减小该数值提前结束连接,减少重试次数。

tcp_synack_retries

tcp_synack_retries 与 TCP 三次握手的第二步相关。也就是服务器向客户端发送一个 SYN-ACK 数据包。

服务器在接收到客户端发送的 SYN 数据包后,会发送 SYN-ACK 数据包进行响应。如果没有收到客户端对该 TCP 报文的响应,服务器会尝试重新发送 SYN-ACK 数据包,总共会尝试 tcp_synack_retries 次。

cat /proc/sys/net/ipv4/tcp_synack_retries 
5

测试

这个要构建数据包才可以测试,暂时省略。

优化方案

可以通过减小该数值提前结束连接,减少重试次数。

参考资料

tcp_syn_retries等参数详解

© 著作权归作者所有

共有 人打赏支持
for。

for。

粉丝 84
博文 47
码字总数 18257
作品 0
深圳
程序员
TCP状态以及关于内核调优的几个参数

不知道大家在面试时候是否会遇到tcp方面相关的面试题,比如几个相关的内核调优,SYNFLood***的原理和防御,timewait不回收对系统有什么影响,等等还是很多的,前几天有人问到,今天刚好细细学...

小罗ge11
06/29
0
0
tcp的复杂机制

懂socket编程的人不一定理解tcp协议,实际上很多计算机编程高手都不一定懂tcp协议,编程高手很多都是对api很理解,对于api下面的机制就不一定理解了,我是一个学网络出身的人,在我会用java或...

晨曦之光
2012/04/10
117
0
浅谈linux性能调优之十五:常见网络参数整理

1.tcp连接保持管理: net.ipv4.tcpkeepalivetime = 7200 如果在该参数指定时间内某条连接处于空闲状态,则内核向远程主机发起探测 net.ipv4.tcpkeepaliveintvl = 75 内核向远程主机发送的保活...

OscerSong
2013/07/22
0
0
nginx防盗链和内核参数优化

防盗链:防止别人直接从你网站引用图片等链接,消耗了你的资源和网络流量。有几种解决方法:1,水印,品牌宣传,带宽,服务器足够。2,防火墙,直接控制,前提是知道ip来源。3,防盗链策略下...

宏强
06/26
0
0
TCP/IP协议中backlog分析与设置以及TCP状态变化

TCP/IP协议卷一中是有说明设置backlog这个值的,这值是做什么的呢? 大家都知道TCP建立连接时是要进行三次握手连接的,但是否三次握手完成了,服务端就进行处理了(accept)呢,如果没有处理就变...

石头捡到布
2016/11/24
17
0

没有更多内容

加载失败,请刷新页面

加载更多

linux 系统的运行级别

运行级别 运行级别 | 含义 0 关机 1 单用户模式,可以想象为windows 的安全模式,主要用于修复系统 2 不完全的命令模式,不含NFS服务 3 完全的命令行模式,就是标准的字符界面 4 系统保留 5 ...

Linux学习笔记
53分钟前
1
0
学习设计模式——命令模式

任何模式的出现,都是为了解决一些特定的场景的耦合问题,以达到对修改封闭,对扩展开放的效果。命令模式也不例外: 命令模式是为了解决命令的请求者和命令的实现者之间的耦合关系。 解决了这...

江左煤郎
今天
2
0
字典树收集(非线程安全,后续做线程安全改进)

将500W个单词放进一个数据结构进行存储,然后进行快速比对,判断一个单词是不是这个500W单词之中的;来了一个单词前缀,给出500w个单词中有多少个单词是该前缀. 1、这个需求首先需要设计好数据结...

算法之名
昨天
10
0
GRASP设计模式

此文参考了这篇博客,建议读者阅读原文。 面向对象(Object-Oriented,OO)是当下软件开发的主流方法。在OO分析与设计中,我们首先从问题领域中抽象出领域模型,在领域模型中以适当的粒度归纳...

克虏伯
昨天
0
0
Coding and Paper Letter(四十)

资源整理。 1 Coding: 1.Tomislav Hengl撰写的非官方作者指南:Michael Gould•Wouter Gerritsma。 UnofficialGuide4Authors 2.R语言包rwrfhydro,社区贡献的工具箱,用于管理,分析和可视化...

胖胖雕
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部