HTTP/2

HTTP2

一、HTTP发展历程

二、HTTP/1.1有哪些问题?

1、线头阻塞

2、不支持多路复用

3、头部冗余

4、仅支持单向请求

三、HTTP/2有哪些改进?

HTTP/1.1与HTTP/2的性能对比:demo

涉及到的概念:

  • 流(Stream):可以承载一个或多个消息,一个TCP连接上可以有任意数量的流。

  • 消息(Message):一个消息由一个或多个帧组成。一个完整的HTTP请求或响应就是一个消息,同一个HTTP的消息只能在同一个流上发送。

  • 帧(Frame):通信的基本单位。

现实情景类比:

  • 物流车 -> 客户端(浏览器)

  • 物流仓库 -> 服务器

  • 物流车停在物流仓库口 -> 建立的 TCP 连接

  • 传送带 -> 流 (可能有多条传送带给物流车提供装卸服务)

  • 传送带上的包裹 -> 消息 (如果是卸货则就request消息,如果是装货则就是response消息)

  • 包裹里的物品 -> 帧

1、二进制分帧

HTTP/2将消息划分为两个帧:HEADERS、DATA,并应二进制进行编码;HTTP/1.1采用的是文本格式

2、多路复用

一个TCP可以同时支持多个流存在,这是HTTP/2其他功能和性能优化的基础

3、头部压缩

首次请求后,客户端和服务端会建立一个关于header字段的字典,后续再请求只需传输对应字段的索引即可。

4、服务端推送

再也不需要额外增加webscoket协议了

参考:

Last updated