HTTP 请求和 TCP 连接

2 ip https networking tcp http

到目前为止我的理解是,当有人尝试访问网页时会发生以下情况:

  1. HTTP 请求已形成
  2. 新套接字已打开
  3. HTTP 请求已发送

如果一切顺利,Web 浏览器会接受 HTTP 响应并根据收到的 HTML 构建 DOM 树。如果缺少任何资源,则需要为每个资源单独发出新的 HTTP 请求。

每个 HTTP 请求都需要打开另一个套接字(与服务器建立新的虚拟连接)。

:效率如何?我知道这些资源可能位于另一台主机上(这确实需要新的 TCP 连接),但如果它们都位于同一主机上,那么在单个 TCP 连接中传输所有数据是否会更有效。

use*_*421 5

每个 HTTP 请求都需要打开另一个套接字(与服务器建立新的虚拟连接)。

不,没有。HTTP 1.1 默认使用持久连接,而 HTTP 1.0 之前有非官方Connection: keep-alive标头,它在近二十年前完成了同样的事情。

问:效率如何?

事实并非如此,这就是为什么它不会发生。

我知道这些资源可能位于另一台主机上(这确实需要新的 TCP 连接),但如果它们都位于同一主机上,那么在单个 TCP 连接中传输所有数据是否会更有效。

是的,这就是默认情况下发生的情况。