当前位置: 首页 > news >正文

TCP连接保活机制

在TCP连接中有一个保活机制,叫做Keep-Alive,用语言描述就是如下:

在保活时间内,如果没有任何连接相关的活动,TCP 保活机制会开始作用,每隔一个时间间隔(保活时间间隔),发送一个探测报文,该探测报文包含的数据非常少,如果超过保活探测次数,探测报文都没有得到响应,则认为当前的 TCP 连接已经死亡,系统内核将错误信息通知给上层应用程序。

就如下图(画图参考了《傻傻分不清的TCP keepalive和HTTP keepalive》):
在这里插入图片描述

在操作系统里边三个变量的相关信息:

概念存放位置sysctl变量
保活时间/proc/sys/net/ipv4/tcp_keepalive_timenet.ipv4.tcp_keepalive_time
保活间隔/proc/sys/net/ipv4/tcp_keepalive_intvlnet.ipv4.tcp_keepalive_intvl
保活探测次数/proc/sys/net/ipv4/tcp_keepalive_probesnet.ipv4.tcp_keepalve_probes

在这里插入图片描述

开启了 TCP 保活,需要考虑以下几种情况:

第一种,对端程序是正常工作的。当 TCP 保活的探测报文发送给对端, 对端会正常响应,这样 TCP 保活时间会被重置,等待下一个 TCP 保活时间的到来。
第二种,对端程序崩溃并重启。当 TCP 保活的探测报文发送给对端后,对端是可以响应的,但由于没有该连接的有效信息,会产生一个 RST 报文,这样很快就会发现 TCP 连接已经被重置。
第三种,是对端程序崩溃,或对端由于其他原因导致报文不可达。当 TCP 保活的探测报文发送给对端后,石沉大海,没有响应,连续几次,达到保活探测次数后,TCP 会报告该 TCP 连接已经死亡。

TCP保活机制默认是关闭的,当我们选择打开时,可以分别在连接的两个方向上开启,也可以单独在一个方向上开启。如果开启服务器端到客户端的检测,就可以在客户端非正常断连的情况下清除在服务器端保留的“脏数据”;而开启客户端到服务器端的检测,就可以在服务器无响应的情况下,重新发起连接。

如果使用 TCP 自身的 keep-Alive 机制,在Linux系统中,最少需要经过 2 小时 11 分 15 秒才可以发现一个“死亡”连接。这个时间是怎么计算出来的呢?其实是通过 2 小时,加上 75 秒乘以 9 的总和。实际上,对很多对时延要求敏感的系统中,这个时间间隔是不可接受的。

相关文章:

TCP连接保活机制

在TCP连接中有一个保活机制,叫做Keep-Alive,用语言描述就是如下: 在保活时间内,如果没有任何连接相关的活动,TCP 保活机制会开始作用,每隔一个时间间隔(保活时间间隔),发…...

centos安装mysql8.0.20、tar包安装方式

基础环境centos7.5,mysql版本8.0.20,通过tar包安装,安装路径/usr/local。 mysql官网:https://dev.mysql.com/downloads/mysql/ wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.x…...

k8s yaml文件含义

文章目录 1、YAML的文件格式和注意事项2、YAML各个字段含义 1、YAML的文件格式和注意事项 不支持制表符tab键缩进,需要使用空格缩进,使用缩进表示层级关系通常开头缩进2个空格,缩进的空格数不重要,只要相同层级的元素左对齐即可字…...

ProEasy机器人:运动+通讯相关说明

----------------机械手运动------- --常用指令:MovP弧线运动、MovL直线运动 MovP(1) --弧线轨迹运动到一号点 MovP(2) --弧线轨迹运动到二号点 MovL(1) --直线轨迹运动到一号点 MovL(2) --直线轨迹运…...

Visual Studio Code 配置 C/C++ 开发环境的最佳实践(VSCode + Clangd + CMake)

Visual Studio Code 配置 C/C 开发环境的最佳实践(VSCode Clangd CMake) 知乎原文参考地址1 与 VSCode 官方文档配置 相比拥有的优势 Clangd 具有更优秀的性能,微软官方 Cpptools 的代码提示功能有明显延迟Clangd 提供更精准的「转到定义」、「重命名符号」、「…...

年产200万件的超级工厂投产!巨头「闭环」汽车电子全产业链

随着汽车电动化程度的提升,汽车电子部件占整车成本比重逐步升高,已经从2012年的25%上升到2021年的55%。 且汽车电子电气架构向整车集中演进,智能汽车已经进入了软件及数据定义时代,底层硬件打破了过去几十年围绕特定应用不断增加…...

智能穿戴AR眼镜主板方案定制_MTK平台AR智能眼镜PCB板开发

AR智能眼镜,是采用了多种技术实现增强现实效果,是将虚拟信息和现实场景相结合的智能设备。 AR智能眼镜硬件上,包括多个传感器、显示装置和处理器等。其中,传感器用于捕捉用户的动作和环境信息,如摄像头、陀螺仪、加速…...

【入门Flink】- 11Flink实现动态TopN

基本处理函数(ProcessFunction) stream.process(new MyProcessFunction())方法需要传入一个 ProcessFunction 作为参数,ProcessFunction 不是接口 , 而是一个抽象类 ,继承了AbstractRichFunction,所有的处…...

现在做跨境电商还需要全球代理IP吗?全球代理IP哪家靠谱?

随着全球互联网的发展,电商平台的发展和跨境贸易的便利化,跨境电商在过去几年中也一直呈现增长趋势,吸引了越来越多的企业和个体创业者入行。 然而,行业竞争也在不断加剧,跨境电商面临更多的越来越多的挑战&#xff0…...

微服务的常用组件

1、注册中心组件 Eureka、Nacos、Zookeeper、Consul 2、负载均衡组件 Ribbon 3、远程调用组件 OpenFeign 4、网关组件 Zuul、Gateway 5、服务保护组件 Hystrix、Sentinel 6、服务配置管理组件 SpringCloudConfig、Nacos、Apollo(阿波罗)配置中…...

Android问题笔记四十五:解决SeekBar操作thumb周围产生的圆形阴影/灰色阴影/白色圆圈的解决办法

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列点击跳转>ChatGPT和AIGC 👉关于作者 专…...

AI从入门到精通,什么是LLMs大型语言模型?

大型语言模型是指由大量文本数据训练而成的自然语言处理模型,它可以生成高质量的文本内容,并能够理解和回答人类提出的问题。 这种模型通常基于深度学习技术,如循环神经网络(RNN)或变换器(Transformer&…...

优测云测试平台 | 有效的单元测试(下)

接着上一篇内容,我们继续~ 四、测试的目标之三:快速反馈 测试的快速反馈有两个方面的含义: 1.测试运行要快速出结果。 2.当测试失败时,要能快速定位失败原因。 测试运行效率决定了开发的工作周期运转的快慢。在理想的 TDD 模型中&#x…...

CUDA安装

在cmd中输入nvidia-smi。显示CUDA Version:12.3,所以只能下载小于等于12.3的版本。如下图: 进这个网址:https://developer.nvidia.com/cuda-toolkit-archive 选择一个版本下载。 选择完后之后这样选择: 最后点击下载即…...

【XTDrone Ubuntu18.04】XTDrone + Ubuntu18.04 + PX4 安装过程

重新配置所有的软件 卸载之前安装的ROS GAZEBO 记得把/home下的.ros和.gazebo也删除,删就删干净 参考链接:ROS的卸载与安装 血泪总结!亲测有效 卸载ROS方法 正式安装 安装依赖 sudo apt install ninja-build exiftool ninja-build protobuf…...

网站使用什么协议比较好

网站协议大多数使用HTTP和HTTPS HTTP协议,超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议。 HTTP是应用层协议,同其他应用层协议一样,是为了实现某一类具体应用的协议&…...

18. 机器学习——集成学习

机器学习面试题汇总与解析——集成学习 本章讲解知识点 什么是集成学习AdaBoost梯度提升树(Gradient Boosting Decision Tree, GBDT)随机森林(Random Forest,简称RF)XGBoostLightGBM本专栏适合于Python已经入门的学生或人士,有一定的编程基础。 本专栏适合于算法工程师、机器…...

SimaPro生命周期评估建模与碳足迹分析流程

SimaPro以系统和透明的方式轻松建模和分析复杂的生命周期,通过确定供应链中每个环节的热点,从原材料的提取到制造,分销,使用和处置,衡量所有生命周期阶段的产品和服务对环境的影响。SimaPro是过去25年评估生命周期的最…...

我的项目分享(不喜勿喷)

我要分享的项目是大喇叭C2C电商平台系统,一个面向移动端的电子商务平台,为个体消费者和商家提供直接交易和沟通的便利,丰富了人们的生活。 主要功能模块: 该项目的主要功能包括: 1. 用户注册功能:使用正则…...

PyTorch:张量与矩阵

PyTorch 是一个基于 Python 的科学计算包,专门针对深度学习研究,提供了丰富的工具和库。在 PyTorch 中,张量(tensor)是深度学习的核心数据结构,它可以看作是可以进行自动微分的多维数组。张量不仅可以代表标…...

别再只盯着find提权了!盘点Linux下5种更隐蔽的权限维持姿势与排查手册

超越find提权:Linux系统下5种高阶权限维持技术与深度排查指南 当攻击者成功获取Linux系统权限后,权限维持(Persistence)往往成为攻防对抗的核心战场。传统安全培训常聚焦于SUID提权等基础手段,但真实APT攻击中&#xf…...

Python农业物联网开发正在淘汰Django!FastAPI+Redis Stream+TimescaleDB构建毫秒级响应灌溉调度中枢(压测QPS达42,800)

第一章:Python农业物联网开发Python凭借其简洁语法、丰富生态和强大的硬件交互能力,已成为农业物联网(Agri-IoT)系统开发的主流语言。从土壤温湿度传感器数据采集到云端可视化决策支持,Python贯穿设备端、网关层与应用…...

STK 实战:多类型传感器(Sensor)协同探测与可见性分析

1. STK与多传感器协同探测基础 STK(Systems Tool Kit)是航天领域广泛使用的仿真分析软件,它能够对复杂系统中的传感器进行高精度建模。在实际应用中,单个传感器往往难以满足全方位监测需求,这时就需要多传感器协同工作…...

3步打造跨设备开发工作站:code-server全场景部署指南

3步打造跨设备开发工作站:code-server全场景部署指南 【免费下载链接】code-server VS Code in the browser 项目地址: https://gitcode.com/GitHub_Trending/co/code-server 作为开发者,你是否曾面临设备限制带来的开发困境?高性能电…...

当电力系统遇上MATLAB:手把手玩转SVC设计

基于MATLAB的静止无功补偿系统设计 本设计包括设计报告,仿真工程。 静止无功补偿系统(Static Var Compensator,简称SVC)是一种用于电力系统中动态调节无功功率的装置,主要由以下几个核心组件构成:晶闸管控制…...

【实战】VSCode插件离线安装全攻略:从下载到部署

1. 为什么需要离线安装VSCode插件 作为一名在开发一线摸爬滚打多年的老码农,我遇到过太多因为网络问题导致插件安装失败的场景。比如去年在某大型制造企业的工厂MES系统升级项目中,开发环境完全隔离外网,但团队又急需使用GitLens和Python插件…...

run-aspnetcore-microservices 购物车微服务:Redis分布式缓存与Grpc同步通信实现

run-aspnetcore-microservices 购物车微服务:Redis分布式缓存与Grpc同步通信实现 【免费下载链接】run-aspnetcore-microservices aspnetrun/run-aspnetcore-microservices: 是一个用于部署和运行 ASP.NET Core 微服务应用程序的开源项目,提供了一个简单…...

动态数据源配置加密终极指南:如何选择最安全的填充模式保护敏感数据 [特殊字符]️

动态数据源配置加密终极指南:如何选择最安全的填充模式保护敏感数据 🛡️ 【免费下载链接】dynamic-datasource dynamic datasource for springboot 多数据源 动态数据源 主从分离 读写分离 分布式事务 项目地址: https://gitcode.com/gh_mirrors/dy/…...

保姆级教程:手把手教你用ONNX Runtime部署YOLOv8-OBB旋转框检测模型(附完整代码)

从零实现YOLOv8-OBB旋转框检测:ONNX Runtime部署全流程实战 旋转目标检测在遥感图像、文档分析等场景中具有独特优势。YOLOv8-OBB作为Ultralytics推出的旋转框检测版本,其部署过程与传统水平框检测存在显著差异。本文将彻底拆解从模型导出到推理优化的完…...

别再死磕MIG了!ZYNQ PS端DDR3做帧缓存,用VDMA+HP接口实战指南

ZYNQ视频处理架构革命:VDMAHP接口实战全解析 从传统FPGA到ZYNQ的思维转换 在传统FPGA视频处理项目中,工程师们早已习惯使用MIG IP核管理DDR控制器,通过用户接口实现帧缓存功能。这种模式在纯FPGA环境中运行良好,但当转向ZYNQ平台…...