为什么80%的码农都做不了架构师?>>>   

跳包之所以叫心跳包是因为:它像心跳一样每隔固定时间发一次,以此来告诉服务器,这个客户端还活着。事实上这是为了保持长连接,至于这个包的内容,是没有什么特别规定的,不过一般都是很小的包,或者只包含包头的一个空包。

在TCP的机制里面,本身是存在有心跳包的机制的,也就是TCP的选项:SO_KEEPALIVE。系统默认是设置的2小时的心跳频率。但是它检查不到机器断电、网线拔出、防火墙这些断线。而且逻辑层处理断线可能也不是那么好处理。一般,如果只是用于保活还是可以的。

心跳包一般来说都是在逻辑层发送空的echo包来实现的。下一个定时器,在一定时间间隔下发送一个空包给客户端,然后客户端反馈一个同样的空包回来,服务器如果在一定时间内收不到客户端发送过来的反馈包,那就只有认定说掉线了。

其实,要判定掉线,只需要send或者recv一下,如果结果为零,则为掉线。但是,在长连接下,有可能很长一段时间都没有数据往来。理论上说,这个连接是一直保持连接的,但是实际情况中,如果中间节点出现什么故障是难以知道的。更要命的是,有的节点(防火墙)会自动把一定时间之内没有数据交互的连接给断掉。在这个时候,就需要我们的心跳包了,用于维持长连接,保活。

在获知了断线之后,服务器逻辑可能需要做一些事情,比如断线后的数据清理呀,重新连接呀……当然,这个自然是要由逻辑层根据需求去做了。

总的来说,心跳包主要也就是用于长连接的保活和断线处理。一般的应用下,判定时间在30-40秒比较不错。如果实在要求高,那就在6-9秒。

心跳检测步骤:

1 客户端每隔一个时间间隔发生一个探测包给服务器

2 客户端发包时启动一个超时定时器

3 服务器端接收到检测包,应该回应一个包

4 如果客户机收到服务器的应答包,则说明服务器正常,删除超时定时器

5 如果客户端的超时定时器超时,依然没有收到应答包,则说明服务器挂了

转载于:https://my.oschina.net/suyain/blog/1858749

面试宝典系列-什么是心跳包机制相关推荐

  1. socket心跳机制图片_socket心跳包机制

    心跳包 心跳包就是在客户端和服务器间定时通知对方自己状态的一个自己定义的命令字,按照一定的时间间隔发送,类似于心跳,所以叫做心跳包 心跳包的作用 网络中的接收和发送数据都是使用SOCKET进行实现.但 ...

  2. 【Java 网络编程】客户端 Socket 配置 ( 超时时间 | 端口复用 | Nagle 算法 | 心跳包机制 | 连接关闭机制 | 缓冲区大小 | 性能权重设置 | 紧急数据设置 )

    文章目录 I 设置读取超时时间 II Socket 复用绑定端口设置 III 开启 Nagle 算法 ( 沾包 ) IV 心跳包机制 V 连接关闭处理 VI Socket 紧急数据内敛设置 VII S ...

  3. Socket心跳包机制

    心跳包的发送,通常有两种技术 方法1:应用层自己实现的心跳包 由应用程序自己发送心跳包来检测连接是否正常,大致的方法是:服务器在一个 Timer事件中定时 向客户端发送一个短小精悍的数据包,然后启动一 ...

  4. Socket心跳包机制 .

    心跳包的发送,通常有两种技术 方法1:应用层自己实现的心跳包 由应用程序自己发送心跳包来检测连接是否正常,大致的方法是:服务器在一个 Timer事件中定时 向客户端发送一个短小精悍的数据包,然后启动一 ...

  5. 心跳检测以及应用层心跳包机制设计

    博主联系方式: QQ:1540984562 微信:wxid_nz49532kbh9u22 QQ交流群:892023501(嵌入式方向) QQ交流群:856398158(后端方向) 目录 心跳检测应用场 ...

  6. linux心跳包检测代码_Socket心跳包机制

    心跳包的发送,通常有两种技术 方法1:应用层自己实现的心跳包 由应用程序自己发送心跳包来检测连接是否正常,大致的方法是:服务器在一个 Timer事件中定时 向客户端发送一个短小精悍的数据包,然后启动一 ...

  7. 即时通讯应用开发之网络心跳包机制

    一般来说,没有真正动手做过网络通信应用的开发者,很难想象即时通讯应用中的心跳机制的作用.但不可否认,作为即时通讯应用,心跳机制是其网络通信技术底层中非常重要的一环,有没有心跳机制.心跳机制的算法实现好 ...

  8. C++ Socket心跳包机制(Windows环境下)

    https://www.csdn.net/gather_2d/NtzaMg1sMTktYmxvZwO0O0OO0O0O.html 参考文件 心跳包机制 跳包之所以叫心跳包是因为:它像心跳一样每隔固定时 ...

  9. python心跳包原理_心跳包机制设计详解 转载

    存在下面两种情形: 情形一:一个客户端连接服务器以后,如果长期没有和服务器有数据来往,可能会被防火墙程序关闭连接,有时候我们并不想要被关闭连接.例如,对于一个即时通讯软件,如果服务器没有消息时,我们确 ...

最新文章

  1. Spring Cloud(十)高可用的分布式配置中心 Spring Cloud Config 中使用 Refresh
  2. 【iOS报错】“The operation couldn’t be completed (LaunchServicesError erro
  3. CMake手册详解 (十二)
  4. 前端学习(2411):name属性的作用
  5. 从信号与系统,数字信号处理的角度看目前手头研发的蓝牙耳机
  6. 动态更换 Shape 的颜色
  7. 决策树中的基尼系数、 熵之半和分类误差率
  8. IAR For MSP430编译后菜单栏丢失解决方法
  9. 联想计算机CDROM启动,光驱启动,联想电脑光驱启动
  10. 微信的原创保护机制到底是如何实现的?
  11. ubuntu下载安装google浏览器
  12. 普乐蛙小型5d电影设备|5d电影动感电影体验馆|VR景区影院设备
  13. PyTorch Tensor 的形状
  14. HTML综合之实现耀炎食品有限公司网页
  15. 清华EMBA课程系列思考之七 -- 财务会计控制
  16. eclipse是什么工具?
  17. java毕业设计成品基于SSM项目+Vue.js的SSM学业预警平台信息管理系统
  18. 技术寻道,生态裂变:2020百度地图“点石成金”的这一年
  19. 公务员考试信息管理系统设计与实现-计算机毕业设计源码+LW文档
  20. 深度学习——图像锐化

热门文章

  1. 光动能表怎么维护_[腕表]西铁城CITIZEN AT814451E 光动能 电波表 开
  2. C语言之32个关键字
  3. 易语言通过服务器发送文件,易语言局域网文件传输带聊天功能例程
  4. linux 中添加kvm虚拟化,在 Centos7 的KVM上启用嵌套虚拟化
  5. miniui 样式第一次加载不出来_matplotlib--修改样式
  6. oracle表的管理,Oracle表的管理
  7. c# oldb连接_(转)C#连接OleDBConnection数据库的操作
  8. java return true false_javascript中return,return true,return false三者的用法及区别
  9. 陕西师范大学计算机科学学院保研院校,陕西师范大学计算机科学学院量子信息学保研细则...
  10. java stream Interface BiFunction<T,U,R>