HTTP/2是HTTP协议自1999年发布HTTP/1.1之后的首个更新,也被称为超文本传输协议2.0。它是由互联网工程任务组(IETF)的Hypertext Transfer Protocol Bis(httpbis)工作小组进行开发的。HTTP/2在多个方面进行了显著的改进,这些改进使应用能够获得更快、更简单、更稳定的效果。
HTTP/2的主要特性包括:
- 头部压缩:HTTP/2使用了专门为头部压缩而设计的HPACK算法。这个算法需要客户端和服务器各自维护一份索引表,压缩和解压缩就是查表和更新表的操作。这种压缩方式有效地减少了传输的数据量,提高了传输效率。
- 多路复用:HTTP/2支持在同一个连接中并行处理多个请求和响应,这是通过流和流ID实现的。这使得网络资源的利用更加高效,减少了延迟。
- 二进制传输:HTTP/2将HTTP/1.x中使用文本方式传递的请求与响应消息分解成为了二进制编码的帧的传递。这种传输方式使得协议更加灵活和高效。
- 支持服务器推送:HTTP/2允许服务器未经客户端许可的情况下,主动向客户端推送内容。这有助于提升用户体验,减少客户端的请求次数。
需要注意的是,尽管HTTP/2在多个方面进行了改进,但它并没有改动HTTP原来的应用层语义。之前熟悉的请求方法、状态码、URI、HTTP headers等概念在HTTP/2中仍然适用。只要服务端和客户端(如浏览器)支持,应用不需要经过任何修改就可以切换到新协议下运行。
目前,许多流行的应用和服务已经开始采用HTTP/2,例如RPC框架gRPC就采用了HTTP/2作为传输方式。同时,为了增加使用加密技术并提供强有力的保护以遏制主动攻击,HTTP/2.0在开放互联网上将只用于“https://”网址,而“http://”网址将继续使用HTTP/1.1。
总的来说,HTTP/2是HTTP协议的一个重要更新,它通过引入新的特性和优化,显著提升了Web应用的性能和用户体验。