摘要
这份规范描述了一种超文本传输协议(HTTP)语义的优化表示,被称为HTTP 版本 2(HTTP/2)。HTTP/2通过引入首部字段压缩,及允许在相同的连接上并发的进行多个数据交换,而使得更高效地使用网络资源,且获得可感知的延迟降低成为可能。它还引入了服务器向客户端未经请求的推送语义。
这份规范对于HTTP/1.1消息语法是一个可供选择的替代品,而不是废弃后者。HTTP既有的语义保持不变。
1. 简介
超文本传输协议(HTTP)是一个取得了广泛成功的协议。然而,HTTP/1.1使用底层传输模块([RFC7230] ,Section 6)的方式具有一些特性,那对今天的应用的整体性能产生了负面的影响。
特别地,同一时间在一个给定的TCP连接上,HTTP/1.1只允许发起一个请求。虽然HTTP/1.1加入了请求管线,但这只是部分地解决了请求并发执行的问题,且依然会被队头阻塞问题困扰。因此,那些需要发起大量请求的HTTP/1.0和HTTP/1.1客户端会通过与同一个服务器建立多个连接的方式来实现并发从而降低延迟。
此外,HTTP首部字段常常是重复而冗长的,这导致了不必要的网络流量消耗,且导致初始的TCP[TCP]拥塞窗口被快速填满。在一个新的TCP连接上发起多个请求时,这导致过多的延迟。
HTTP/2解决了这些问题,它定义了一种优化的HTTP语义到一个底层连接的映射。特别地,它允许同一个连接上请求和响应消息的交叉,并使用了一种HTTP首部字段高效的编码。它也允许请求优先级,使得更重要的请求更快地完成,这进一步提高了性能。
产生的协议相对于HTTP/1.x而言,由于使用了更少的TCP连接而对网络更加友好。这意味着与其它流和存活的更久的连接更少的竞争,这反过来又导致对于可用网络能力更好的利用。
最后,HTTP/2也通过使用二进制格式的消息帧而使得对消息的处理更高效。