Linux系统中跟TCP相关的系统配置项

TCP连接保活

参考 《Nginx(三) 配置文件详解 - 基础模块》3.18章节


  • net.ipv4.tcp_keepalive_intvl:设置TCP两次相邻探活检测的间隔时间。默认75秒,单位是秒,对应配置文件/proc/sys/net/ipv4/tcp_keepalive_intvl;
  • net.ipv4.tcp_keepalive_probes:设置TCP探活最多检测次数。默认9次,单位是次,对应配置文件 /proc/sys/net/ipv4/tcp_keepalive_probes;
  • net.ipv4.tcp_keepalive_time:设置TCP连接保活时长。默认7200秒,单位是秒,对应配置文件 /proc/sys/net/ipv4/tcp_keepalive_time。

防御SYN Flood攻击

参考 TCP三次握手、四次挥手及状态转换详解


  • net.core.somaxconn:增大TCP全连接队列/accept队列大小,也是增大TCP半连接队列的关键参数。默认值是128,对应配置文件/proc/sys/net/core/somaxconn;
  • net.core.tcp_max_syn_backlog :增大TCP半连接队列/SYN队列大小。默认值是1024,对应配置文件 /proc/sys/net/ipv4/tcp_max_syn_backlog;
  • net.ipv4.tcp_syncookies:设置是否开启syncookies。开启syncookies后,不使用半连接队列就可建立TCP连接。默认值是1,表示仅当 SYN 半连接队列溢出时,才启用它。设置为0时表示关闭,设置为2时表示无条件开启。对应配置文件 /proc/sys/net/ipv4/tcp_syncookie。
  • net.core.netdev_max_backlog:设置每个网卡接收队列的最大长度,防止网卡接收过载。默认值是1000,对应配置文件 /proc/sys/net/core/netdev_max_backlog。内核从网卡收到数据包后,在交由协议栈(如IP、TCP)处理前会先将数据包放入一个缓冲队列中,当接数据包的速率大于内核协议栈处理的速率时,这个缓冲队列会不断增长,但不能超过netdev_max_backlog 参数设置的值,否则数据包将被丢弃。默认情况下,netdev_max_backlog 参数的值是与系统的内存大小和 CPU 数量相关的动态值。它会根据系统的硬件配置进行自适应调整,通常情况下不需要手动设置。除非这台服务器需要处理大量的网络请求,我们才将该值调大。

缩减TCP TIME-WAIT状态的等待时间


  • net.ipv4.tcp_tw_reuse:设置是否复用处于 TIME_WAIT 状态的TCP连接,可选值是0或1,默认是0,表示禁止复用连接。对应配置文件 /proc/sys/net/ipv4/tcp_tw_reuse。请注意,该配置仅适用于主动发起建立TCP连接的一方,也就是仅适用于客户端。开启该选项后,主动发起建立连接的一方在调用 connect() 函数时,如果选择到的端口,已经被相同四元组的连接占用,那么就判断该连接是否处于TIME_WAIT状态,如果该连接处于 TIME_WAIT 状态并且 TIME_WAIT 状态持续时间已超过1秒,那么就重用这个连接,然后就可以正常使用该端口了。所以该选项只适用于主动发起建立连接的一方。如果服务器仅作为服务端,就完全没必要开启该功能。如果服务器是一台代理服务器,建议开启该功能
  • net.ipv4.tcp_timestamps:设置是否开启TCP时间戳功能,可选值是0或1,默认是1,表示开启时间戳功能。对应配置文件/proc/sys/net/ipv4/tcp_timestamps。 开启后,TCP 头部就会使用时间戳选项,便于精确计算RTT,而且还能避免出现因序列号回绕(PAWS)而引起的延迟报文生效的问题。该参数也是开启tcp_tw_reuse功能的前提,在开启tcp_tw_reuse功能前,必须将tcp_timestamps设置为1。
  • net.ipv4.tcp_max_tw_buckets:设置处于TIME_WAIT状态的TCP连接的最大值,默认值是5000。对应配置文件/proc/sys/net/ipv4/tcp_max_tw_buckets。当系统中处于 TIME_WAIT 状态的TCP连接数超过这个值时,新关闭的连接就不再经历 TIME_WAIT 而直接关闭,这个方法比较暴力。

快速重传

参考 《TCP 核心工作机制》


  • net.ipv4.tcp_sack:设置是否开启选择性确认SACK,可选值是0或1,默认是1,表示开启SACK。对应配置文件 /proc/sys/net/ipv4/tcp_sack。
  • net.ipv4.tcp_dsack:设置是否开启D-SACK,可选值是0或1,默认是1,表示开启D-SACK。对应配置文件 /proc/sys/net/ipv4/tcp_dsack。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/241676.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

form-data、x-www-form-urlencoded、raw 和 binary

在 Postman 中,有四种常见的请求体格式,分别是 form-data、x-www-form-urlencoded、raw 和 binary。它们的区别如下: form-data form-data 格式通常用于上传文件或二进制数据。在 Postman 中,你可以通过选择 Body 标签页&#x…

【错误记录/js】保存octet-stream为文件后数据错乱

目录 说在前面场景解决方式其他 说在前面 后端:go、gin浏览器:Microsoft Edge 120.0.2210.77 (正式版本) (64 位) 场景 前端通过点击按钮来下载一些文件,但是文件内容是一些非文件形式存储的二进制数据。 后端代码 r : gin.Default()r.Stat…

MyBatis见解2

5.MyBatis的原始Dao开发-了解 使用Mybatis开发Dao,通常有两个方法,即原始Dao开发方式和Mapper接口代理开发方式。而现在主流的开发方式是接口代理开发方式,这种方式总体上更加简便。我们的课程讲解也主要以接口代理开发方式为主。在第4节已经…

项目功能需求

需求分解做法记录 功能&#xff1a;先按名称分组然后&#xff0c;组内从低到高排序&#xff0c;然后每组排序 做法一&#xff1a; List<CruiseDetailOutputDto> result new ArrayList<CruiseDetailOutputDto>();List<CruiseDetailOutputDto> journeyCrui…

冒泡排序之C++实现

描述 冒泡排序算法是一种简单的排序算法&#xff0c;它通过将相邻的元素进行比较并交换位置来实现排序。冒泡排序的基本思想是&#xff0c;每一轮将未排序部分的最大元素逐个向右移动到已排序部分的最右边&#xff0c;直到所有元素都按照从小到大的顺序排列。 冒泡排序的算法…

阿里云 ARMS 应用监控重磅支持 Java 21

作者&#xff1a;牧思 & 山猎 前言 今年的 9 月 19 日&#xff0c;作为最新的 LTS (Long Term Support) Java 版本&#xff0c;Java 21 正式 GA&#xff0c;带来了不少重量级的更新&#xff0c;详情请参考 The Arrival of Java 21 [ 1] 。虽然目前 Java 11 和 Java 17 都…

【Hugging Face】解决BART模型调用时KeyError: ‘new_zeros‘的问题

错误代码&#xff1a; tokenizer AutoTokenizer.from_pretrained("philschmid/bart-large-cnn-samsum") model AutoModelForSeq2SeqLM.from_pretrained("philschmid/bart-large-cnn-samsum")model.eval() model.to("cuda") loss 0 for i in …

前缀和+单调双队列+贪心:LeetCode2945:找到最大非递减数组的长度

本文涉及知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 单调双队列 贪心 题目 给你一个下标从 0 开始的整数数组 nums 。 你可以执行任意次操作。每次操作中&#xff0c;你需要选择一个 子数组 &#xff0c;并将这个子数组用它所…

python脚本 ssh工具 ssh上传文档 选择文档并上传到ssh服务器

此文分享一个python脚本,用于快速的定位、选择文档,并将其上传到指定的ssh服务器。 效果演示 🔥完整演示效果 👇第一步,显然,我们需要选择功能 👇第二步,我们需要定位并选择需要上传的文档 👇第三步,确认我们需要上传文档的ssh服务器 👇第四步,定位、选择…

Socket与Server通讯

ByteArrayOutputStream 对byte类型数据进行写入的类 &#xff0c;自动扩容&#xff0c;相当于一个中间缓冲层&#xff0c;将类写入到文件等其他outputStream。它是对字节进行操作&#xff0c;属于内存操作流 import java.io.ByteArrayOutputStream; import java.io.OutputStrea…

gulp和webpack的区别

Gulp和Webpack都是前端开发中常用的工具&#xff0c;但它们在功能和定位上存在一些差异。 首先&#xff0c;Gulp是一个工具链和构建工具&#xff0c;强调的是前端开发流程。它可以配合各种插件进行js压缩、css压缩、less编译等操作&#xff0c;实现自动化工作。在Gulp中&#…

Qt的简单游戏实现提供完整代码

文章目录 1 项目简介2 项目基本配置2.1 创建项目2.2 添加资源 3 主场景3.1 设置游戏主场景配置3.2 设置背景图片3.3 创建开始按钮3.4 开始按钮跳跃特效实现3.5 创建选择关卡场景3.6 点击开始按钮进入选择关卡场景 4 选择关卡场景4.1场景基本设置4.2 背景设置4.3 创建返回按钮4.…

2024 十大AI预测

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

偏最小二乘法中的“偏”的含义

问&#xff1a;偏最小二乘法中的“偏”是指什么意思&#xff1f; 答&#xff1a;偏最小二乘法&#xff08;Partial Least Squares&#xff0c;简称PLS&#xff09;中的“偏”指的是这种方法部分地考虑了响应变量的信息来进行预测变量的提取。与传统的最小二乘法相比&#xff0c…

Python 时间处理与数据分析利器:深入剖析 Arrow 模块的优势

写在开头 时间在数据分析中扮演着至关重要的角色&#xff0c;而选择适当的时间处理模块对于提高代码效率和可读性至关重要。本文将深入介绍 Arrow 模块&#xff0c;探讨其相对于其他时间处理模块的优势&#xff0c;以及在数据分析中的实际应用。 1. Arrow 模块概览 Arrow 模…

模式识别与机器学习(十一):Bagging

1.原理 Bagging [Breiman, 1996a] 是井行式集成学习方法最著名的代表.从名字即可看出&#xff0c;它直接基于自助采样法(bootstrap sampling)。给定包含m 个样本的数据集&#xff0c;我们先随机取出一个样本放入采样集中&#xff0c;再把该样本放回初始数据集&#xff0c;使得…

【JAVA】分布式链路追踪技术概论

目录 1.概述 2.基于日志的实现 2.1.实现思想 2.2.sleuth 2.2.可视化 3.基于agent的实现 4.联系作者 1.概述 当采用分布式架构后&#xff0c;一次请求会在多个服务之间流转&#xff0c;组成单次调用链的服务往往都分散在不同的服务器上。这就会带来一个问题&#xff1a;…

编程语言学习目录

文章目录 一篇入门系列C#Fortranerlang/elixirR语言Go语言Rust语言 一篇入门系列 文本处理神器awkbash shellclojure极简教程F#语言入门教程量子编程初步——Q#入门1小时快速入门Python如何用两个晚上教会妹纸PythonVIM使用进阶&#xff1a;VIM脚本初步写给Matlab用户的Python…

网络基础知识制作网线了解、集线器、交换机与路由器

目录 一、网线的制作 1.1、材料 1.2、网线的标准类别 二、集线器、交换机介绍 2.1、概念&#xff1a; 2.2、OSI七层模型 2.3、TCP/IP四层 三、路由器的配置 3.1、概念 3.2、四个模块 1、 网络状态 2、设备管理 3、应用管理 无人设备接入控制 无线桥接 信号调节…

7-8 旅行售货员

7-8 旅行售货员 某售货员要到若干城市去推销商品&#xff0c;已知各城市之间的路程(或旅费)。他要选定一条从驻地出发&#xff0c;经过每个城市一遍&#xff0c;最后回到驻地的路线&#xff0c;使总的路程&#xff08;或总旅费&#xff09;最小。 输入格式: 第一行为城市数n…