码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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

    就是这事,散会!

  • 相关阅读:
    echarts+vue——散点图+折线图——技能提升
    MacOS Sonoma14.2.1系统SSH免密登录
    java计算机毕业设计企业公开招聘系统源程序+mysql+系统+lw文档+远程调试
    BES2300x笔记(8) -- 如何实现BLE数据收发
    为指定 java 类生成 PlantUML puml文件工具( v2 )
    【2023提前批 之 面经】~ 联发科
    助力新冠抗原检测,基于目标检测模型完成结果检测识别
    1572.矩阵对角线元素的和
    Atlassian发布最新补贴政策,Jira/Confluence迁移上云最低可至零成本
    STM32-标准库和HAL库-不同容量系列的代码移植
  • 原文地址:https://blog.csdn.net/peng_shakalaka/article/details/127826683
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号