保持活跃的标题澄清

时间:2013-12-15 08:35:10

标签: http http-headers keep-alive

我被要求建立一个网站,其中一位联合开发者告诉我,我需要包含keep-alive标题。

好吧,我读了很多,但我仍有疑问。

msdn ->

  

当客户端创建多个时,打开连接可以提高性能   请求网页内容,因为服务器可以返回   每个请求的内容更快。否则,服务器必须   为每个请求打开一个新连接

看着

enter image description here

  • 当IIS(F)发送keep alive标头(或用户发送保持活动)时,是否意味着(EC,{ {1}})保存仅适用于我的会话的连接?
  • 此信息保存在哪里(“此连接属于”Royi“)?
  • 这是否意味着没有其他人可以使用该连接
  • 如果是这样 - 是否意味着保持alive-header - 减少重叠连接用户的数量?
  • 如果是这样,连接保存多长时间? (换句话说,如果我保持活着 - “保持”直到什么时候?)

P.S。对于那些感兴趣的人:

点击this sample page将返回keep alive header

1 个答案:

答案 0 :(得分:140)

  

此信息保存在何处(“此连接介于计算机A和服务器F之间”)?

源IP和端口以及目标IP和端口可识别TCP连接。您的操作系统,所有中间会话感知设备和服务器的操作系统都将通过此识别连接。

HTTP与请求 - 响应一起工作:客户端连接到服务器,执行请求并获得响应。如果没有keep-alive,则在每次响应后都会关闭与HTTP服务器的连接。使用HTTP keep-alive,您可以保持底层TCP连接处于打开状态,直到满足某些条件。

这允许在单个TCP连接上进行多个请求 - 响应对,从而消除了TCP的一些相对较慢的连接启动。

  

当IIS(F)发送keep alive header(或用户发送keep-alive)时,是否意味着(E,C,B)保存连接

没有。路由器不需要记住会话。实际上,属于同一TCP会话的多个TCP数据包不需要都通过相同的路由器 - 即TCP管理。路由器只选择最佳IP路径并转发数据包。 Keep-alive仅适用于客户端,服务器和任何其他中间会话感知设备。

  

仅适用于我的会话?

     

这是否意味着没有其他人可以使用该连接

这是intention of TCP connections:它是一个端到端连接,仅供这两方使用。

  

如果是这样 - 是否意味着保持alive-header - 减少重叠连接用户的数量?

定义“重叠连接”。有关优缺点,请参阅HTTP persistent connection,例如:

  • 降低CPU和内存使用量(因为同时打开的连接数较少)。
  • 启用请求和响应的HTTP管道。
  • 减少网络拥塞(减少TCP连接)。
  • 减少后续请求的延迟(无握手)。
  

如果是这样,连接保存多长时间? (换句话说,如果我保持活着 - “保持”直到什么时候?)

典型的保持活动响应如下所示:

Keep-Alive: timeout=15, max=100

例如,请参阅Hypertext Transfer Protocol (HTTP) Keep-Alive Header(HTTP / 2的草案,其中详细解释了保持活动标头,而不是26162086):

  • 主机将timeout参数的值设置为主机允许空闲连接在关闭之前保持打开的时间。如果主机没有发送或接收数据,则连接处于空闲状态。

  • max参数表示客户端将发出的最大请求数,或者允许服务器在持久连接上发出的最大请求数。一旦发送了指定数量的请求和响应,包含该参数的主机就可以关闭连接。

但是,服务器可以在任意时间或数量的请求之后自由关闭连接(只要它返回对当前请求的响应)。如何实现这取决于您的HTTP服务器。