Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

你需要了解的 HTTP 2.0 #20

Open
Leo-lin214 opened this issue Feb 1, 2020 · 0 comments
Open

你需要了解的 HTTP 2.0 #20

Leo-lin214 opened this issue Feb 1, 2020 · 0 comments

Comments

@Leo-lin214
Copy link
Owner

Leo-lin214 commented Feb 1, 2020

先参考一下别人文章,后期单独总结。
面试官问:你了解HTTP2.0吗?

HTTP 1.x 缺陷

  1. 请求阻塞。
    在 HTTP 1.0 中,一个TCP连接只能发送一个请求,当接收到响应后便会立马断开连接,由于消耗性能缘故。在 HTTP 1.1 后支持使用Connection: Keep-Alive保持一个TCP连接一直打开状态,因此在 HTTP 1.1 之后,一个TCP连接可以发送多个请求响应(不过需要注意的是,由于浏览器限制原因,同一个Host的TCP连接最多只能并行处理6个请求,为此超出6个的话,就必须等待这6个完成了才能发送请求)

  2. 多个TCP连接
    浏览器会有一个并行下载资源的限制,在同域名下的请求最多只能处理6个,一旦超出6个便会出现上述的所说的请求阻塞问题。
    为此,就会有了多个不同域名的TCP连接,以及CDN的出现。但是建立TCP连接成本很高,也需要成本去进行管理

  3. 头部请求响应字段均采用文本格式
    计算机之间的通信最终都会以二进制的形式进行通信,由于 HTTP 1.x 均采用文本格式,在数据到达计算机时都会需要转化成响应的二进制形式。但文本格式唯一很好方式便是方便开发者调试。

  4. 客户端需要主动请求

HTTP 2.0 关键点

  1. 采用二进制格式
    在请求响应字段均采用二进制方式,能更加有效在两个计算机之间进行通信。

  2. 多路复用
    主要解决了 HTTP 1.x 线头阻塞和多个TCP连接问题。在 HTTP 2.0 开始,一个TCP可以进行所有的通信,简单地说,就是不管是否为同一个Host域名的都可以在同一个TCP连接中进行通信。

  3. 请求响应头部压缩

  4. 服务端推送

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant