TCP的keepalive
这实际上是TCP的保活机制。它的工作原理:定义一个时间段,在这时间段内,如果没有任何连接相关的活动,TCP保活机制会开始作用,每隔一个时间间隔,发送一个探测报文,该探测报文数据非常少,如果连续几个探测报文都没有得到相应,则认为当前的TCP连接已经死亡,然后系统内核将错误信息传递给上层应用。
主机崩溃情况
没打开TCP keepalive,发生客户端主机崩溃,服务器无法感知到,则一直处于established状态,直到重启进程。
进程崩溃情况
进程崩溃,客户端会发送FIN报文与服务器进行四次握手,即便没有开启TCP keepalive,服务器操作系统是可以感知到的。
HTTP的keep-alive
这其实表示HTTP的长连接。先介绍HTTP的短连接:HTTP基于TCP协议实现,客户端与服务器进行HTTP通信,需要先建立TCP连接,然后客户端才能发送HTTP请求,服务器返回响应,这是[请求-应答]模式,随后释放TCP连接。这个过程可简单描述为:建立TCP->请求资源->相应资源->释放连接,这就是HTTP短连接。
一次连接只能请求一次资源,这时候就引出了HTTP的长连接:在第一个HTTP请求后,保持TCP连接,让后续的HTTP请求继续使用此TCP连接,从而避免建立连接和释放连接的开销。只要任意一端没有明确提出断开连接,则保持着TCP连接状态。
来源:小林coding的文章