关于http2的学习

一、http1.1 的缺陷

1、Header 头部过大

2、明文传输

3、不支持服务器推送

二、http2 的新特性

http2 是基于 SPDY 协议的,主要的特性有:

1、压缩header

http2 中没有采用原来的压缩算法,开发有专门的 "PACK" 算法来压缩请求和响应头元数据,这种压缩方式可以达到 50%-90% 的高压缩率。

2、二进制传输

http2 采用二进制格式传输数据,而非 http1.x 里纯文本形式的报文 ,二进制协议解析起来更高效。 http2 将请求和响应数据分割为更小的帧,并且它们采用二进制编码。

http2 中,同域名下所有通信都在单个连接上完成,该连接可以承载任意数量的双向数据流。每个数据流都以消息的形式发送,而消息又由一个或多个帧组成。多个帧之间可以乱序发送,根据帧首部的流标识可以重新组装。

3、多路复用

在 http2 中引入了多路复用的技术。多路复用很好的解决了浏览器限制同一个域名下的请求数量的问题,同时也接更容易实现全速传输,毕竟新开一个 TCP 连接都需要慢慢提升传输速度。(chrome 限制在同一域名下最多同时建立6个 TCP 连接)

在 http2 中,有了二进制分帧之后,http2 不再依赖 TCP 链接去实现多流并行了,在 http2 中,

  • 同域名下所有通信都在单个连接上完成。

  • 单个连接可以承载任意数量的双向数据流。

  • 数据流以消息的形式发送,而消息又由一个或多个帧组成,多个帧之间可以乱序发送,因为根据帧首部的流标识可以重新组装。

4、服务器推送

 在 http2 中服务器不再是完全被动地响应请求,也可以新建“流”主动向客户端发送消息。

当然,服务端可以主动推送,客户端也有权利选择是否接收。如果服务端推送的资源已经被浏览器缓存过,浏览器可以通过发送RST_STREAM帧来拒收。主动推送也遵守同源策略,也就是说,服务器不能随便将第三方资源推送给客户端,而必须是经过双方确认才行。

原文地址:https://www.cnblogs.com/czz-zone/p/13438809.html