Http请求和TCP连接

时间:2018-07-21 11:40:18

标签: http networking https tcp ip

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

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

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

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

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

1 个答案:

答案 0 :(得分:2)

  

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

不,不是。默认情况下,HTTP 1.1使用持久连接,而HTTP 1.0使用非官方的Connection: keep-alive头之前,HTTP 1.0在差不多二十年前就完成了同样的事情。

  

问:那有效率吗?

不是,这就是为什么它不会发生。

  

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

是的,默认情况下就是这样。