AdrianHu99 / NOTES

0 stars 0 forks source link

TCP request and HTTP #57

Closed AdrianHu99 closed 5 years ago

AdrianHu99 commented 5 years ago

https://mp.weixin.qq.com/s/TfebZ3-atixL61cjNBjU6w

AdrianHu99 commented 5 years ago

默认情况下建立 TCP 连接不会断开,只有在请求报头中声明 Connection: close 才会在请求完成后关闭连接。

AdrianHu99 commented 5 years ago

一个 TCP 连接是可以发送多个 HTTP 请求的。

AdrianHu99 commented 5 years ago

单个 TCP 连接在同一时刻只能处理一个请求

AdrianHu99 commented 5 years ago

在 HTTP/1.1 存在 Pipelining 技术可以完成这个多个请求同时发送,但是由于浏览器默认关闭,所以可以认为这是不可行的。 在 HTTP2 中由于 Multiplexing 特点的存在,多个 HTTP 请求可以在同一个 TCP 连接中并行进行。

AdrianHu99 commented 5 years ago

那么在 HTTP/1.1 时代,浏览器是如何提高页面加载效率的呢?主要有下面两点:

维持和服务器已经建立的 TCP 连接,在同一连接上顺序处理多个请求。

和服务器建立多个 TCP 连接。

AdrianHu99 commented 5 years ago

浏览器对同一 Host 建立 TCP 连接到数量有没有限制?

有。Chrome 最多允许对同一个 Host 建立六个 TCP 连接。不同的浏览器有一些区别。