外观
Keep-Alive 是什么
TCP
中的 Keep-Alive
机制
- 定义:是
TCP
协议中用于检测死连接的机制。 - 作用:常用于长连接场景,避免因一方意外断电、死机、崩溃、重启或中间路由网络无故断开等情况,导致的异常连接无法释放,造成系统资源的消耗与浪费。
- 工作原理:当
TCP
连接空闲了一定时间(由tcp_keepidle
参数指定)后,会发送探测包给对方。如果主机可达,对方就会响应 ACK 应答,表明连接存活;如果可达但应用程序退出,对方会发FIN
应答,发送TCP
撤消连接;如果可达但应用程序崩溃,对方就发RST
消息;如果对方主机不响应ack
、rst
,会继续发送直到超时,就撤消连接。
HTTP
协议中的 Connection: Keep-Alive
字段
- 定义:是
HTTP
协议中的一个头部字段。 - 作用:用于指示客户端和服务器之间的连接是否保持活跃状态,即实现持久连接。
- 工作原理:当客户端发送一个
HTTP
请求给服务器时,若请求头部中包含Connection: keep-alive
字段,表明客户端希望与服务器保持持久连接。服务器响应完请求后,连接不会立即关闭,而是保持打开状态一段时间,以便后续可能发送的请求可以在同一连接上进行,减少因频繁建立和关闭连接而产生的性能开销。