TCP连接的相关参数

TCP性能优化:三次握手、四次挥手与数据传输

一、概述

TCP连接中有许多操作系统提供的调节参数,在不同的使用场景中修改对应的参数,可以TCP性能。
可以将性能提高分为下面三个部分:

  • TCP三次握手的性能提升。
  • TCP数据传输的性能提升。
  • TCP四次挥手的性能提升。

二、TCP三次握手的性能提升。

调整SYN报文的重传次数。

//控制SYN重传次数,默认是5次
tcp_syn_retries;

一般第一次握手的SYN发出后没有回复,发起连接方会再次发送SYN,这样重复五次。
总耗时是 1+2+4+8+16+32=63 秒,大约 1 分钟左右。
当在网络情况比较好的情况下(内网通信),适当减少重传次数,今早将问题暴露给应用层。

调整SYN半连接队列的长度。
想要增大半连接队列,不能单独的增大tcp_max_syn_backlog,还要同时增大somaxconn和backlog(也就是增大accept队列)。
同时可以开启syncookies

调整accept全连接队列的长度。
accept 队列的长度取决于 somaxconn 和 backlog 之间的最小值,也就是 min(somaxconn, backlog),其中:

  • somaxconn 是 Linux 内核的参数,默认值是 128,可以通过 net.core.somaxconn 来设置其值;
  • backlog 是 listen(int sockfd, int backlog) 函数中的 backlog 大小;

调整SYN+ACK的重传次数。

//控制SYN_ACK重传次数,默认是5次
tcp_synack_retries

绕过三次握手。
TCP Fast Open,需要客户端和服务端同时开启才可以。除了第一次连接后续连接服务端可以再验证cookie后直接发送数据,从而减少一次握手时间。
在这里插入图片描述

在这里插入图片描述

三、四次挥手性能提升

关闭连接的方式有两种。

  • 异常退出,发送RST。
  • 正常退出,发送FIN。

close()函数和shutdown()函数的区别?

  • close():在多线程中会对socket套接字的引用计数,当引用为0时会进行彻底释放,对于读端有新到的数据返回异常,写端将缓冲区数据发送给对端,并发送FIN报文,接下来如果有写操作也会异常。
  • shutdown():可以选择性只关闭读端**SHUT_RD(0)或者写端SHUT_WD(1)或者读写SHUT_RDWR(2)**都关闭。
    在这里插入图片描述

四、数据传输的优化

在这里插入图片描述
以上内用和图片参考小林coding

就是这事,散会!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值