Keep-alive 标头澄清

问题描述 投票:0回答:1

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

嗯,我读了很多相关内容,但我仍然有疑问。

msdn ->

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

看着

enter image description here

  • 当 IIS (F) 发送
    keep alive
    标头(或用户发送 keep-alive)时,是否意味着 (
    E
    ,
    C
    ,
    B
    ) 保存仅用于我的会话的连接?
  • 此信息保存在哪里(“此连接属于“Royi”)?
  • 这是否意味着其他人无法使用该连接
  • 如果是这样 - 是否意味着保持活动标头 - 减少重叠连接用户的数量?
  • 如果是这样,该连接会保存多久? (换句话说,如果我设置保持活动-“保持”到什么时候?)

附注对于那些有兴趣的人:

单击此示例页面将返回保持活动标题

http http-headers keep-alive
1个回答
150
投票

此信息保存在哪里(“此连接位于计算机

A
和服务器
F
之间”)?

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

HTTP 采用请求-响应模式:客户端连接到服务器,执行请求并获取响应。如果没有保持活动状态,与 HTTP 服务器的连接将在每次响应后关闭。通过 HTTP keep-alive,您可以保持底层 TCP 连接打开,直到满足某些条件。

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

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

不。路由器不需要记住会话。事实上,属于同一个 TCP 会话的多个 TCP 数据包不需要全部经过相同的路由器 - 这是由 TCP 管理的。路由器只是选择最佳的IP路径并转发数据包。保持活动状态仅适用于客户端、服务器和任何其他中间会话感知设备。

这仅适用于我的会话?

这是否意味着其他人无法使用该连接

这就是 TCP 连接的意图:它是仅适用于这两方的端到端连接。

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

定义“重叠连接”。请参阅HTTP持久连接了解一些优点和缺点,例如:

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

如果是这样,该连接会保存多久? (换句话说,如果我设置保持活动-“保持”到什么时候?)

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

Keep-Alive: timeout=15, max=100

请参阅 超文本传输协议 (HTTP) Keep-Alive 标头(HTTP/2 草案,其中对 keep-alive 标头的解释比 26162086 更详细):

  • 主机将

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.