• 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

    就是这事,散会!

  • 相关阅读:
    通达OA V12版本,好用的自定义函数
    初识form表单
    【马士兵】 Python基础--11
    C#检查服务状态,以及进行服务启停
    【51单片机实验笔记】LED篇(二)多色LED的基本控制
    安卓开发环境安装教程
    视频剪辑大师:批量快进慢放,让你的视频瞬间生动起来!
    基于风控特征相关度,挖掘贷中等场景中的存量客户价值|来看看相关实操
    lkx语言的总体设计已经发布到github上 (https://github.com/lichuan/lkx)
    牛客编程题--必刷101之字符串(高效刷题,举一反三)
  • 原文地址:https://blog.csdn.net/peng_shakalaka/article/details/127826683