TCP优化

TCP三次握手性能优化

客户端:根据网络稳定性和对方服务器的繁忙程度通过tcp_syn_retries参数调整SYN的重传次数

服务端:半连接队列大小的调整,syncookie的使用

如何绕过TCP三次握手?

开启TFO(TCP Fast Open)

工作方式:

  • 在客户端第一次请求连接时,发送的第一个SYN报文包含Fast Open选项,该选项目前为空(向服务端请求cookie)。服务端收到报文,生成的cookie存储在SYN-ACK报文的Fast Open选项。客户端收到报文,将cookie缓存到本地。
  • 当客户端再次请求建立连接时,客户端发送的SYN报文包含数据以及缓存的cookie。服务端接收后会对cookie进行校验:如果cookie有效,服务端会在SYN-ACK报文中对数据和SYN进行确认,随后将数据推送到相应应用里;如果cookie无效,则会舍弃数据,发送的SYN-ACK报文为三次握手的正常版本。

开启TFO后,在cookie校验通过时,可以节省1个RTT的时间消耗开启后cookie是存储在TFO option字段里

TCP四次挥手性能优化

进程收到RST直接关闭连接(暴力优化)

FIN_WAIT1的优化:通过tcp_max_orphans参数,当调用的close函数的连接数>tcp_max_orphans,后续连接就不走四次挥手来关闭连接,而是直接回复RST报文关闭连接

TIME_WAIT的优化

  1. tcp_max_tw_buckets 参数,当 TIME_WAIT 的连接数量超过该参数时,新关闭的连接就不再经历 TIME_WAIT 而直接关闭
  2. 在建立新连接时,复用处于 TIME_WAIT 状态的连接,那就是打开 tcp_tw_reuse 参数。但是需要注意,该参数是只用于客户端(建立连接的发起方),因为是在调用 connect() 时起作用的,而对于服务端(被动连接方)是没有用的
  3. 我们可以在程序中设置 socket 选项,来设置调用 close 关闭连接行为。如果 l_onoff 为非 0, 且 l_linger 值为 0,那么调用 close 后,会立该发送一个 RST 标志给对端,该 TCP 连接将跳过四次挥手,也就跳过了 TIME_WAIT 状态,直接关闭

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值