TCP保活机制
what(保活机制是什么):
服务器端设置一个保活定时器,当定时器开始工作时,就会定时的向网络通信的另一端发送保活探测的TCP报文。如果服务器接收到了ACK报文,那么对方是存活的,否则网络存在故障。
why(保活机制为何要存在):
1、通过保活机制可以保证通信双方连接不被释放,即:长连接的场景;
2、确保网络连接出问题的TCP连接能够被释放掉。如:客户端或者服务器端发生了错误或者宕机;
how(保活机制是如何工作的):
如果一个连接在最大非活跃时间(tcp_keepidle或者net.ipv4.tcp_keepalive_time)内没有动作,则向客户端发送探测报文(以后间隔tcp_keepintvl或者net.ipv4.tcp_keepalive_intvl再发送)。客户端必须处理以下4种状态:
1、客户端正常,并且可达,服务器在两小时(tcp_keepidle或者net.ipv4.tcp_keepalive_time)后,服务端的保活定时器复位。如果两小时(tcp_keepidle或者net.ipv4.tcp_keepalive_time)之间,有应用程序的通讯通过该连接,定时器在交换完数据后会复位;
2、客户端已经崩溃,并且关闭或者正在重新启动。这种情况下,客户端是没有反应的,服务器会在75秒(tcp_keepintvl或者net.ipv4.tcp_keepalive_intvl)后超时重试,服务器一共重试10次(tcp_keepcnt 或者net.ipv4.tcp_keepalive_probes)。如果服务器没有收到一个响应,它就认为客户主机已经关闭,并终止连接;
3、客户端崩溃后,已经重启动。这时服务器会收到一个复位响应,那么服务器将会终止这个连接;
4、客户端正常,但是客户端和服务器相互不可达。处理和2相同;
原文地址:https://www.cnblogs.com/sfzlstudy/p/15174662.html
- Codeforces Round #410 (Div. 2)(A,字符串,水坑,B,暴力枚举,C,思维题,D,区间贪心)
- 关于int *a[常量]与int (*a)[常量]的分析与区分(详解)
- python笔记3-发送邮件(smtplib)
- 关关的刷题日记01—Leetcode 169. Majority Element
- 关小刷刷题02——Leetcode 169. Majority Element 方法2和3
- 树链剖分简单分析及模板(杂谈)
- 第十五届北京师范大学程序设计竞赛现场决赛题解&源码(A.思维,C,模拟,水,坑,E,几何,思维,K,字符串处理)
- python+requests接口自动化项目完整框架设计
- POJ 1804 Brainman(5种解法,好题,【暴力】,【归并排序】,【线段树单点更新】,【树状数组】,【平衡树】)
- 关关的刷题日记03—Leetcode 448. Find All Numbers Disappeared in an Array
- 关关的刷题日记04——Leetcode 283. Move Zeroes
- UESTC 1591 An easy problem A【线段树点更新裸题】
- 关关的刷题日记05 —— Leetcode 219. Contains Duplicate II
- 关关的刷题日记05 —— Leetcode 217. Contains Duplicate 方法1和方法2
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 分析B站弹幕,川普同志暴露的那一天,没有一个鬼畜up是无辜的
- python-爬取地理坐标
- Python基础第一个案例:猜数字游戏,这个都写不出,那就放弃吧
- 现在听歌要各大平台到处跑,嫌麻烦?制作个人专属的音乐下载器
- 爬取上市公司数据、分析数据,并用可视化现实全国各地区公司数量
- 今天刚上手爬虫,当然要从最简单的开始啦,验证一下所学的知识
- Python数据可视化入门:使用Matplotlib绘图
- 有了音乐下载器,怎么能没有音乐播放器呢,打造自己的音乐播放器
- 七夕节到了,单身狗程序员要对自己好点,用代码送自己点安慰
- 面向对象视角下的前端工程体系
- 使用 Python破解大众点评字体加密(SVG反爬虫)
- Python爬虫练习:爬取高清4K桌面壁纸
- 爬取B站18000条《黑神话:悟空》实机演示弹幕,做成词云
- Python爬虫实战:自动化登录网站,爬取商品数据
- 符合自己的工作难找?取招聘网站数据,让你找到心仪的工作