抓包整理————tcp 三次握手性能优化[十]
前言
tcp 三次握手性能优化。
正文
服务器三次握手流程示例:
下面就是3次握手的过程:

知道这个有什么用呢?
我举一个我使用到的例子哈。
比如有很多 tcp 连接到一台机器上机器上,那么tcp_max_syn_backlog就需要调大。
服务器设置
net.ipv4.tcp_max_syn_backlog 调大。
net.ipv4.tcp_synack_retries: 被动建立连接时,发syn/ack 重试的次数。
第一个很好理解哈,backlog越大,那么承载越多。
第二个是网络不好的时候syn/ack 重试次数越多,那么连接失败率越低。
客户端syn_sent 状态:
net.ipv4.tcp_syn_retries = 6 主动建立连接时,发syn重试的次数
net.ipv4.ip_local_port_range = 32000 60000 设置端口范围
客户端也好理解哈,就是网络拥堵设置多一些重试,端口范围大一些,这样连接的越多。
然后如果是不断的发送数据然后断开,然后重连的话,那么可以使用tcp fast open来实现。

这个图其实很好理解哈。
左边的是普通情况。就是在最后ack确认的情况下把请求发出去。但是第二次请求的时候还是要建立3次握手。
第二种就是第一次发送syn+ack确认的时候给一个cookie。
这个cookie 有什么作用呢?那就是第二次连接的时候直接发送syn+cookie,那么对方会syn+ack 就连接完成了。
为什么可以这么做呢? 实际上这个cookie 里面存在滑动窗口大小,那么就不用最后的ack确认了。
如何打开这个tcp fast open 呢?
linux 参数:net.ipv4.tcp_fastopen
0 是关闭
1 是作为客户端时可以使用tfo
2 是作为服务器时可以使用tfo
3 无论作为客户端还是服务器,都可以使用tfo
上一节中介绍了syn攻击,那么如何应对呢?
net.core.netdev_max_backlog 接收自网卡、但未被内核协议栈处理的保温队列长度
net.ipv4.tcp_max_syn_backlog syn_rcvd 状态连接的最大个数
net.ipv4.tcp_abor_on_overflow 超出处理能力时,对新来的syn直接回rst,丢弃链接
另外一种 防御sync 攻击的方式是,tcp_syncookies方式。
就是当syn队列满的时候,新的syn不进入队列中,计算出cookie再以syn + ack 中的序列号返回客户端。
正常客户端发报文时,服务器根据报文中携带的cookie 重新恢复连接。
由于 cookie 占用序列号空间,导致此时所有tcp可选功能失效,例如扩充窗口等。
然后还有一个概念,那就是tcp_defer_accept,这种就是只有对方发送数据的时候,那么服务器才会去激活客户端获取连接。
结
下一节看下如何传输数据。
抓包整理————tcp 三次握手性能优化[十]的更多相关文章
- 使用 tcpdump 抓包分析 TCP 三次握手、四次挥手与 TCP 状态转移
目录 文章目录 目录 前文列表 TCP 协议 图示三次握手与四次挥手 抓包结果 抓包分析 TCP 三次握手 数据传输 四次挥手 TCP 端口状态转移 状态转移 前文列表 <常用 tcpdump ...
- Java网络编程学习A轮_02_抓包分析TCP三次握手过程
参考资料: https://huoding.com/2013/11/21/299 https://hpbn.co/building-blocks-of-tcp/#three-way-handshake ...
- 用wireshark抓包分析TCP三次握手、四次挥手以及TCP实现可靠传输的机制
关于TCP三次握手和四次挥手大家都在<计算机网络>课程里学过,还记得当时高超老师耐心地讲解.大学里我遇到的最好的老师大概就是这位了,虽然他只给我讲过<java程序设计>和< ...
- Wireshark抓包分析TCP“三次握手,四次挥手”
1.目的 客户端与服务器之间建立TCP/IP连接,我们知道是通过三次握手,四次挥手实现的,但是很多地方对这个知识的描述仅限于理论层面,这次我们通过网络抓包的方式来看一下实际的TCP/IP传输过程. 2 ...
- wireshark抓包图解 TCP三次握手/四次挥手详解[转]
原文链接:http://www.seanyxie.com/wireshark%E6%8A%93%E5%8C%85%E5%9B%BE%E8%A7%A3-tcp%E4%B8%89%E6%AC%A1%E6% ...
- wireshark抓包图解 TCP三次握手/四次挥手详解
http://www.seanyxie.com/wireshark%E6%8A%93%E5%8C%85%E5%9B%BE%E8%A7%A3-tcp%E4%B8%89%E6%AC%A1%E6%8F%A1 ...
- Wireshark抓包分析TCP 3次握手、4次挥手过程
Wireshark简介 更多有关Wireshark的教程.软件下载等,请见:http://www.52im.net/thread-259-1-1.html,本文只作简要介绍. 1Wireshark 是 ...
- MySQL抓包工具:MySQL Sniffer 和性能优化
简介 MySQL Sniffer 是一个基于 MySQL 协议的抓包工具,实时抓取 MySQLServer 端的请求,并格式化输出.输出内容包访问括时间.访问用户.来源 IP.访问 Database. ...
- 抓包工具-Wireshark(详细介绍与TCP三次握手数据分析)
功能使用的详细介绍 wireshark(官方下载网站: http://www.wireshark.org/),是用来获取网络数据封包,可以截取各种网络封包,显示网络封包的详细信息,包括http,TCP ...
- Wireshark抓包TCP三次握手数据
抓包工具 - Wireshark(详细介绍与TCP三次握手数据分析) 功能使用的详细介绍 wireshark(官方下载网站: http://www.wireshark.org/),是用来获取网络数据封 ...
随机推荐
- C++ //类模板对象做函数参数 //三种方式 //1.指定传入的类型 --直接显示对象的数据类型 //2.参数模板化 --将对象中的参数变为模板进行传递 //3.整个类模板化 --将这个对象类型 模板化进行传递
1 //类模板对象做函数参数 2 //三种方式 3 //1.指定传入的类型 --直接显示对象的数据类型 4 //2.参数模板化 --将对象中的参数变为模板进行传递 5 //3.整个类模板化 --将这个 ...
- 用几张图实战讲解MySQL主从复制
本文分享自华为云社区<结合实战,我为MySQL主从复制总结了几张图!>,作者: 冰 河. MySQL官方文档 MySQL 主从复制官方文档链接地址如下所示: http://dev.mysq ...
- 一些Clion使用记录
一些Clion使用记录 编译链设置 在设置"工具链"中可以按需增加不同的编译链 访问越界溢出debug AddressSanitizer介绍:AddressSanitizer 交的 ...
- Selenium IDE 自动化测试 bug 会在console里面出 DevTools failed to load SourceMap 很不好,用完记得关掉这个程序
Selenium IDE 自动化测试 bug 会在console里面出 DevTools failed to load SourceMap 很不好,用完记得关掉这个程序
- ubuntu下安装numpy和scipy正确方法
1.numpy NumPy(Numeric Python)是用Python进行科学计算的基本软件包. NumPy是Python编程语言的扩展,增加了对大型多维数组和矩阵的支持,以及一个大型的高级数学函 ...
- 掌握 Kubernetes 故障排除技巧:kubectl命令的基本指南
Kubernetes 彻底改变了容器编排,简化了应用程序的管理和扩展.然而,与任何复杂系统一样,Kubernetes 集群也会遇到问题,需要及时解决才能保持最佳性能和可靠性.在本文中,我们将深入探讨必 ...
- vscode自动生成头文件
Ctrl Shift P 输入:snipp,选配置用户代码片段,新建全局代码片段文件,修改下列模板: { // Place your 全局 snippets here. Each snippet is ...
- GDB简洁指南
启动gdb:gdb program 设置运行参数:set args 10 20 30 启动程序: run(r),start 显示源代码:list(l) 显示当前栈帧和运行行:frame(f) 设置显示 ...
- Spring Boot自动运行之 CommandLineRunner、ApplicationRunner和@PostConstruct
在使用Spring Boot开发的工作中,我们经常会需要遇到一种功能需求,比如在服务启动时候,去加载一些配置,去请求一下其他服务的接口.Spring Boot给我们提供了三种常用的实现方法: 第一种是 ...
- 直播预告:面对技术带来的新机遇,CG人如何腾飞?
"新锐先锋,玩转未来"--首届实时染3D动画创作大赛由瑞云科技主办,英伟达.青椒云.3DCAT实时渲染云协办,戴尔科技集团.Reallusion.英迈.万生华态.D5渲染器.中视典 ...