keep-alive

HTTP keep-alive

HTTP Keep-Alive,也称为持久连接(Persistent Connection),是HTTP协议的一部分,用于控制在同一TCP连接上连续发送和接收多个HTTP请求和响应,而不是每个请求/响应都打开一个新的连接。它的目的是减少每次请求所需的握手次数,从而减少总体的延迟,提高网络通信的效率

  • 作用层次:应用层。

  • 主要目的:减少因建立和关闭TCP连接所产生的开销和延迟,提高页面加载速度。

  • 工作机制:在HTTP 1.1中,默认开启Keep-Alive。客户端和服务器在HTTP头部使用 Connection: keep-alive 标志来通知对方保持连接打开,以便后续的请求可以复用现有的连接。

  • 优点:减少TCP连接的建立和关闭次数,降低延迟,提高性能。

  • 缺点:长时间保持连接可能会占用服务器资源,特别是在高并发环境下

如何关闭 HTTP keep-alive

  1. 如果服务端 Response Header 设置了 Keep-Alive:timeout={timeout},客户端会就会保持此连接 timeout(单位秒)时间,超时之后关闭连接。

Keep-Alive: timeout=5, max=1000

  1. 客户端发送Header头:Connection: close

tcp keep-alive

TCP Keep-Alive是一种网络协议机制,用于检测TCP连接上的另一端是否仍然可达,即对方是否还“活着”。它通过在连接上发送探测包来实现,如果在指定的时间内没有收到响应,就认为连接已经断开。

  • 作用层次:传输层。

  • 主要目的:检测死链接,确保连接的双方仍然可达。

  • 工作机制:在TCP连接空闲一段时间后,通过发送探测包给对方。如果连续几次探测都没有响应,则认为连接已经断开,TCP层会关闭这个连接。

  • 优点:能够自动检测并关闭无效的连接,释放资源。

  • 缺点:如果配置不当,可能会导致不必要的流量和功耗。

Last Updated:
Contributors: 156081289@qq.com