服务端/客户端会定期发送探测报文来检测客户端的存活状态。

由三个内核参数控制:

  • 首次发送探测报文时间:net.ipv4.tcp_keepalive_time有报文传输时重置

  • 探测报文的发送间隔:net.ipv4.tcp_keepalive_intvl

  • 探测报文的最大重试次数:net.ipv4.tcp_keepalive_probes


内核配置

# sysctl -a | grep tcp_keepalive_
net.ipv4.tcp_keepalive_intvl = 75
net.ipv4.tcp_keepalive_probes = 9
net.ipv4.tcp_keepalive_time = 7200

注意,在默认情况下可能是禁用的,需要应用层设置开启。

Nginx 开启tcp探活机制:

so_keepalive=30m::10

将空闲超时 (TCP_KEEPIDLE) 设置为 30 分钟,将探测间隔 (TCP_KEEPINTVL) 保留为系统默认值,并将探测计数 (TCP_KEEPCNT) 设置为 10 个探测。


客户端设置,示例:

int sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0) {
perror("socket creation failed");
exit(EXIT_FAILURE);
} int enable = 1;
if (setsockopt(sockfd, SOL_SOCKET, SO_KEEPALIVE, &enable, sizeof(enable)) < 0) {
perror("setsockopt: SO_KEEPALIVE failed");
exit(EXIT_FAILURE);
} int idle_time = 60; // 设置空闲时间为60秒
if (setsockopt(sockfd, IPPROTO_TCP, TCP_KEEPIDLE, &idle_time, sizeof(idle_time)) < 0) {
perror("setsockopt: TCP_KEEPIDLE failed");
exit(EXIT_FAILURE);
} int interval = 10; // 设置探测报文的发送间隔为10秒
if (setsockopt(sockfd, IPPROTO_TCP, TCP_KEEPINTVL, &interval, sizeof(interval)) < 0) {
perror("setsockopt: TCP_KEEPINTVL failed");
exit(EXIT_FAILURE);
} int max_retries = 3; // 设置最大重试次数为3次
if (setsockopt(sockfd, IPPROTO_TCP, TCP_KEEPCNT, &max_retries, sizeof(max_retries)) < 0) {
perror("setsockopt: TCP_KEEPCNT failed");
exit(EXIT_FAILURE);
} // 连接到服务器
// ... // 可选步骤:获取套接字选项的当前值进行验证
// ...

TCP的Keep-Alive机制:链接存在但是没有数据传输,内核怎么处理的更多相关文章

  1. TCP的滑动窗口机制【转】

    原文链接:http://www.cnblogs.com/luoquan/p/4886345.html      TCP这个协议是网络中使用的比较广泛,他是一个面向连接的可靠的传输协议.既然是一个可靠的 ...

  2. TCP超时与重传机制

    TCP超时与重传机制    TCP协议是一种面向连接的可靠的传输层协议,它保证了数据的可靠传输,对于一些出错,超时丢包等问题TCP设计的超时与重传机制.其基本原理:在发送一个数据之后,就开启一个定时器 ...

  3. TCP的延迟ACK机制

    TCP的延迟ACK机制 TCP的延迟ACK机制一说到TCP,人们就喜欢开始扯三步握手之类的,那只是其中的一个环节而已.实际上每一个数据包的正确发送都是一个类似握手的过程,可以简单的把它视为两步握手.一 ...

  4. 详解 TCP 超时与重传机制——长文预警

    上一篇介绍 TCP 的文章「TCP 三次握手,四次挥手和一些细节」反馈还不错,还是蛮开心的,这次接着讲一讲关于超时和重传那一部分. 我们都知道 TCP 协议具有重传机制,也就是说,如果发送方认为发生了 ...

  5. TCP超时与重传机制与拥塞避免

    TCP超时与重传机制 TCP协议是一种面向连接的可靠的传输层协议,它保证了数据的可靠传输,对于一些出错,超时丢包等问题TCP设计的超时与重传机制. 基本原理:在发送一个数据之后,就开启一个定时器,若是 ...

  6. [转]Android TCP长连接 心跳机制及实现

    背景知识 智能手机上的长连接心跳和在Internet上的长连接心跳有什么不同 Android系统的推送和iOS的推送有什么区别 几种推送的实现方式 协议 1XMPP简介 2 MQTT简介 3移动端消息 ...

  7. tcp可靠传输的机制有哪些(面试必看

    一.综述 1.确认和重传:接收方收到报文就会确认,发送方发送一段时间后没有收到确认就重传. 2.数据校验 3.数据合理分片和排序: UDP:IP数据报大于1500字节,大于MTU.这个时候发送方IP层 ...

  8. TCP 长连接保活机制&HTTP长连接设置

    TCP KeepAlive Wireshark抓包分析机制 -------------------------------- 如上图所示,TCP保活报文总是成对出现,包括TCP保活探测报文和TCP保活 ...

  9. 闲说HeartBeat心跳包和TCP协议的KeepAlive机制

    很多应用层协议都有HeartBeat机制,通常是客户端每隔一小段时间向服务器发送一个数据包,通知服务器自己仍然在线,并传输一些可能必要的数据.使用心跳包的典型协议是IM,比如QQ/MSN/飞信等协议. ...

  10. TCP的窗口滑动机制

    TCP的滑动窗口主要有两个作用,一是提供TCP的可靠性,二是提供TCP的流控特性.同时滑动窗口机制还体现了TCP面向字节流的设计思路. 可靠:对发送的数据进行确认 流控制:窗口大小随链路变化. 一.t ...

随机推荐

  1. 对dubbo的DubboReference.check的参数进行剖析

    背景 在使用dubbo的时候,发现当消费者启动的时候,如果提供者没有启动,即使提供者后来启动了,消费者也调不通提供者提供的接口了. 注册中心使用都是nacos dubbo版本是3.0.4 例子 接口 ...

  2. 《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(15)-Charles如何配置反向代理

    1.简介 在App开发的过程当中,抓包是一个很常见的需求,而有些app的请求不会在网络设置代理时被抓到数据包,这里若是需要抓包就需要搭建反向代理. 2.什么是代理? 什么是代理,来一张图了解一下. 代 ...

  3. Spring Boot 整合邮件服务

    参考教程 首先参考了 Spring Boot整合邮件配置,这篇文章写的很好,按照上面的操作一步步走下去就行了. 遇到的问题 版本配置 然后因为反复配置版本很麻烦,所以参考了 如何统一引入 Spring ...

  4. 【Python基础】数据类型与类型转换

    五种基本数据类型 在 Python 中,基本数据类型是指不可变对象的数据类型.以下是 Python 中的基本数据类型: 整数类型(int):表示整数,例如 1.2.3 等等. 浮点数类型(float) ...

  5. Java设计模式简介(总结)

    Java设计模式简介(总结) 什么是设计模式 Java设计模式是一组经过验证的解决特定问题的编程技术,这些技术可以帮助开发人员快速.有效地开发高质量的软件.使用设计模式是为了可重用代码.让代码更容易被 ...

  6. Serverless冷扩机器在压测中被击穿问题

    一.现象回顾 在今天ForceBot全链路压测中,有位同事负责的服务做Serverless扩容(负载达到50%之后自动扩容并上线接入流量)中,发现新扩容的机器被击穿,监控如下(关注2:40-3:15时 ...

  7. 为什么 HashMap 会死循环?

    HashMap 死循环发生在 JDK 1.8 之前的版本中,它是指在并发环境下,因为多个线程同时进行 put 操作,导致链表形成环形数据结构,一旦形成环形数据结构,在 get(key) 的时候就会产生 ...

  8. 金三银四抢人季,HR 如何 3 招做到效率为王?

    春招伊始,面对队伍庞大的校招人群,蜂拥而入的简历,HR 如何才能快速搞定呢?Bug君总结了一下过往招聘季的一些比较流行的环节: 通过线上宣讲,节省出行成本.时间,老板更认可了 现在大多数企业都会在直播 ...

  9. liunx操作系统下配置服务器

    centos7 下配置服务器基本步骤 1,yum install  服务器名称 2,关闭防火墙,配置服务器配置文件,开启服务, 3,创建文件,设置访问权限, 4,本地登陆,测试服务器能否连通

  10. 手把手实践丨基于STM32+华为云设计的智慧烟感系统

    摘要:当前基于STM32和华为云,设计了一种智慧烟感系统,该系统可以检测烟雾,同时将检测到的数据上传到云端进行处理和分析. 本文分享自华为云社区<基于STM32+华为云设计的智慧烟感系统> ...