HTTP/2核心特性
HTTP/1.1服役的这二十余年,互联网发生了翻天覆地的变化,由于各种业务场景的复杂度今非昔比,HTTP/1.1越来越容易遭受“嫌弃”,此时HTTP/2闪亮登场,本文主要列举描述其核心特性。
基于HTTPS
虽然RFC规范并没有约束HTTP/2必须基于HTTPS才能使用,但业界浏览器实现都依赖HTTPS前提条件,如果要升级到HTTP/2,第一步是升级到HTTPS。
二进制分帧
在HTTP/2之前,请求与响应的内容都是直接明文传输,比如客户端发起一个请求,请求的起始行内容GET /res HTTP/1.1
直接传输给服务器,服务器得到的数据就是GET /res HTTP/1.1
。
到了HTTP/2,所有的通信数据都经过了二进制分帧处理,帧就是火车,而数据就是乘客。针对上面的起始行数据,假设其二进制表示为10000000000
,那么我们的火车可能可能是这样的:
|火车|控制室|乘务员|餐车|10000000000|
一列装不下,那就两列:
|火车1号|控制室|乘务员|餐车|100000|
|火车2号|控制室|乘务员|餐车|00000|
到达目的地之后,服务器再从火车中提取“乘客”还原成一个整体10000000000
。
HTTP/2中“火车”的结构:
+-----------------------------------------------+
| Length (24) |
+---------------+---------------+---------------+
| Type (8) | Flags (8) |
+-+-------------+---------------+-------------------------------+
|R| Stream Identifier (31) |
+=+==============