【已解决】什么是心跳包?

本文作者:天析

看到经常有小伙伴(刚踏入行业)问我,什么是心跳包,干啥用的?

心跳包就是在客户端和服务器间定时通知对方自己状态的一个自己定义的命令字,按照一定的时间间隔发送,类似于心跳,所以叫做心跳包。
摘抄来源:张迁的博客

套接字

实际上,因为在网络中发送数据于接收数据都是使用了 socket(套接字) 进行实现,于是便扯到了 套接字 这个概念,套接字实现的是在传输层进行端到端的通信,因此在进行通信时,我们就需要考虑这个套接字是否可用,即判断套接字是否断开,为了保持通信的建立而不被中断,于是便有了心跳包(因类似于心脏的跳动而命名),心跳包是属于TCP协议底层的检测机制。

一般流程

而在TCP协议里,是支持心跳包机制的,即 SO_KEEPALIVE ,默认2小时检测一次,具体流程是向对方发一个 ACK 空数据包,对方收包后,如连接一切正常,则返回一个 ACK ,如果连接状态丢失,则返回RST,如果未返回任何包,再次尝试发送 ACK 无果,说明连接断开了。

没有真正无用的事情,永远保持好心态去做事