互联网协议 第12.7章 TCP-TCP和HTTP的keepalive 互联网协议 第12.7章 TCP-TCP和HTTP的keepalive

2小时前

TCP 和 HTTP 都有各自的 keepalive 机制,但它们的目的和实现方式有所不同。

一、TCP Keepalive

①、目的:

TCP 的 keepalive 主要用于检测空闲连接是否仍然活跃,帮助识别那些因网络故障或对端崩溃导致的死连接。

②、实现方式:

TCP keepalive 是在 TCP 层实现的。

如果启用了keepalive,在连接保持空闲一段时间(通常是 2 小时)后,TCP 会发送一个探测包(keepalive probe)给对方。

如果对方没有响应,TCP 会继续发送探测包(通常每 75 秒发送一次),在连续多次(通常是 9 次)没有收到对方的响应后,TCP 会认为连接已经断开,并通知应用程序。

③、场景:

适用于长时间空闲的 TCP 连接,例如长期保持的 SSH 会话或数据库连接。

二、HTTP Keepalive

①、目的:

HTTP 的 keepalive(也称为持久连接)用于在同一 TCP 连接上复用多个 HTTP 请求,减少连接建立和关闭的开销,提高性能。

②、实现方式:

HTTP keepalive 是在应用层实现的。

默认情况下,HTTP/1.1 的连接是持久的,除非客户端或服务器明确关闭连接(通过在响应头中设置 Connection: close)。

通过保持连接,客户端可以在同一个 TCP 连接上发送多个 HTTP 请求,而不必为每个请求都建立一个新的 TCP 连接。

连接在一段时间后(通常由服务器配置)会自动关闭,或者在请求处理完后明确关闭。

③、场景:

适用于需要频繁请求资源的 HTTP 连接,比如浏览器与 Web 服务器之间的通信。

三、区别总结

①、层次不同:

TCP keepalive 工作在传输层,HTTP keepalive 工作在应用层。

②、目的不同: 

TCP keepalive 用于检测连接的健康状态,防止死连接。

HTTP keepalive用于提高性能,减少连接建立和关闭的开销。

③、实现方式:

TCP keepalive 通过发送探测包检测连接是否仍然有效。

HTTP keepalive 通过在同一 TCP 连接上复用多个请求来减少资源消耗。


TCP keepalive 更多是用于长时间保持的底层连接的稳定性,而 HTTP keepalive 则是为了优化短时间内多次请求的效率。

阅读 5

互联网协议文章
带到手机上看