HTTP2 协议

目前HTTP协议大部分是1.1版本,2版本在逐渐推广。HTTP2 引入了一个二进制分帧层,所以无法与http 1.1的server/client兼容,所以升到了版本2.

http/2 中定义了 Frame,是最小的通信单位,一个消息由多个Frame组成,可能http 1.1中一个请求的header分成了多个Frame,body又分成了多个Frame。同时定义了流,是基于连接的一个虚拟通道,可以承载双向消息,每个流都有 一个唯一的id。在http/2下,同域名下的通信都是基于一个连接完成的。

http/2的特点:

  1. 使用二进制格式传输数据,更加高效,但是也导致了无法兼容http1.x

  2. 多路复用,所有的请求通过一个tcp连接完成,在一个连接上同时打开多个流,每次请求/相应使用不同的stream id。

  3. Header压缩。Header的大小可能会拖慢发送请求的速度,特别是cookie也属于header里,http/2对header采用了HPACK,一种专门为http2的header设计的压缩格式进行压缩传输,能够有效节省header占用的流量。HPACK的简要概述是 使用了静态霍夫曼编码对header里的字段进行编码,

  4. server推送,server可以主动推送资源

Written on August 5, 2019