HTTP2.0

二进制分帧

将流的消息分贞编码,每个流有编号,每个贞有顺序编号。这样就可以实现多路复用。

首部压缩

通过在服务器和客户端维护头部表,每次只携带差异化部分更新头部表,来实现头部压缩。

流量控制

HTTP2.0为数据流和连接的流量提供了一个简单的机制:

  • 流量基于HTTP链接的每一跳进行,而非端到端的控制
  • 流量控制基于窗口更新帧进行,即接收方广播自己准备接收某个数据流的多少字节,以及对整个链接要接收多少个字节。
  • 流量控制有方向性,即接收方可能根据自己的情况为没个流乃至整个链接设置任意窗口大小
  • 流量控制可以由接收方禁用,包括针对个别的流和针对整个链接。
  • 帧的类型决定了流量控制是否适用于帧,目前只有DATA帧服从流量控制,所有* 其他类型的帧并不会消耗流量控制窗口的空间。这保证了重要的控制帧不会被流量控制阻塞

多路复用

基于二进制分帧层,HTTP2.0可以在共享TCP链接的基础上同时发送请求和响应。HTTP消息被分解为独立的帧,而不破坏消息本身的语义,交错发出去,在另一端根据流标识符和首部将他们重新组装起来。

请求优先级

每个资源对应一个流,流可以设置不同的优先级,服务器根据不同的优先级来分配资源以及控制响应的顺序。

服务器推送

参考

SPDY(SPeeDY)
SSL
请求优先级

推荐阅读更多精彩内容