HTTP/2 为 HTTP 语义提供了优化的传输。HTTP/2 支持 HTTP/1.1 的所有核心功能,但旨在以多种方式提高效率。
它源自早期的实验性 SPDY 协议,最初由 Google 开发。HTTP/2 由Internet 工程任务组的超文本传输协议工作组 httpbis(其中 bis 表示“第二”)开发。HTTP/2 规范于 2015 年 5 月作为RFC 7540发布。
HTTP/2 是二进制的,使框架更容易。确定帧的开始和结束是 HTTP 1.1 中真正复杂的事情之一,实际上,在一般的基于文本的协议中也是如此。通过摆脱可选的空白和不同的方式来编写相同的东西,实现变得更简单。
单个 HTTP/2 连接可以包含多个同时打开的流,其中任一端点交错来自多个流的帧。流可以单方面建立和使用,也可以由客户端或服务器共享,并且可以由任一端点关闭。多路复用流意味着来自多个流的包在同一连接上混合。
HTTP/2 减少了必要的网络往返次数,并且通过多路复用和快速丢弃不需要的流,完全避免了头部阻塞的困境。
HTTP/2 是为 HTTP URI(即没有加密)和 HTTPS URI(通过 TLS 使用 ALPN 扩展,其中需要 TLS 1.2 或更新版本)定义的。