首页 > 其他分享 >抓包整理————tcp 三次握手性能优化[十]

抓包整理————tcp 三次握手性能优化[十]

时间:2022-11-13 11:00:13浏览次数:37  
标签:ack 握手 syn tcp cookie ipv4 net 抓包

前言

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,这种就是只有对方发送数据的时候,那么服务器才会去激活客户端获取连接。

下一节看下如何传输数据。

标签:ack,握手,syn,tcp,cookie,ipv4,net,抓包
From: https://www.cnblogs.com/aoximin/p/16182335.html

相关文章

  • Unix/Linux系统编程(TCP/IP和网络编程)
    TCP/IP协议TCP/IP是互联网的基础。TCP代表传输控制协议。IP代表互联网协议。目前有两个版本的IP,即IPv4和IPv6。IPv4使用32位地址,IPv6则使用128位地址。本节围绕IPv4进行......
  • 抓包整理————tcp 三次握手[九]
    前言简单抓包一下3次握手。正文握手的目标:同步sequence序列化初始化序列化ISN(InitialSequenceNumber)交换tcp通信参数如MSS、窗口比例因子、选择性确认、......
  • TCP Connection Status
    ATCPconnectionprogressesthroughaseriesofstatesduringitslifetime.ThefollowingdiagramillustratesthepossiblestatesforaTCPconnectionandhow......
  • TCP-可靠传输-流量-拥塞控制
    1.TCP的可靠传输1.1停止等待ARQ协议主机采用TCP发出信息时会设置一个定时器,若超出定时器所设定的时间还没有响应过来,则主机会认为发出去的消息没有传达到目的......
  • Android TCP客户端
    文章目录​​一、创建工程​​​​二、添加网络权限​​​​三、添加布局代码​​​​四、添加逻辑代码​​​​五、通信测试​​​​六、源码分享​​一、创建工程二、添加......
  • go错误汇总2:[ERROR] listen tcp: address 8082: missing port in address
    go错误汇总2:[ERROR]listentcp:address8082:missingportinaddress错误信息:[ERROR]listentcp:address8082:missingportinaddress 错误原因:代......
  • 【lwip】12-一文解决TCP原理
    目录前言12.1TCP协议简介12.2TCP相关的一些概念词12.2.1MSL12.2.2MSS12.3TCP工作特性12.3.1面向连接12.3.2全双工通信12.3.3可靠性12.3.4缓冲机制12.3.5拥塞控制......
  • 关于单机最大tcp连接数 及 linux …
    在tcp应用中,server事先在某个固定端口监听,client主动发起连接,经过三路握手后建立tcp连接。那么对单机,其最大并发tcp连接数是多少?如何标识一个TCP连接ip, local port,remo......
  • TCP 三次握手-四次挥手
    TCP三次握手传输控制协议(TCP,TransmissionControlProtocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC793[1]定义。TCP三次握手是TCP建立连接......
  • TCP三次握手一二三问
    下面整理下TCP握手和挥手的几个问题,参考资料小林图解计算机网络1、什么是三次握手?Client端向Server端发送SYN为1的报文段,携带一个初始序列号x,client端进入SYN_SENT状态......