http keep-alive 和 tcp keepalive

来源:互联网 发布:免费铺砖软件 编辑:程序博客网 时间:2024/06/09 22:53

http keep-alive

http1.0中,connect 请求头的值是close

Connection: close

从http1.1协议开始,http request header 中connection的值默认为keep-alive。

Connection: keep-alive

这意味着,http client可以复用一个连接来多次发起请求或接收消息。http client 向 http server 发起一个请求,建立一个新的连接,http server 根据请求头中的 Connection: keep-alive,在返回消息后并不会立即断开连接(本次http请求所建立tcp连接),而是等待一段时间关闭tcp连接。在这段时间内,http client 可以在这个tcp连接上继续发送请求。

等待时长timeout的值可以在http client和http server中指定。比如在请求头(request header)中加入:

Keep-Alive: timeout=5, max=1000

表示让http server保持连接5秒钟,本次连接最大请求数1000次。如果http server也设置来http keep alive 的timeout值,那么以两者最小的时间为准。比如http server设置了timeout=3,则会在返回头(response header)中添加:

Keep-Alive: timeout=3, max=1000

这次连接会在接收到最后一次请求后的3秒钟,被http server断开。

tcp keepalive

tcp keepalive 和 http keep-alive完全不是一回事儿。
tcp keepalive 指的是 一端通过发送小的数据包(packets)给另一端,来保持tcp连接的连接状态。通过keepalive探测( keepalive probe),可以
* 检测对方是否存活(Checking for dead peers)
* 防止网络失效造成的传输中断(Preventing disconnection due to network inactivity)

tcp keepalive 详情可参考这里

原创粉丝点击