HTTP/2 優(yōu)勢
-
HTTP/2
采用二進制格式傳輸數(shù)據(jù)丈钙,而非HTTP/1.x
的文本格式。二進制格式在協(xié)議的解析和優(yōu)化擴展上帶來更多的優(yōu)勢和可能每辟。 -
HTTP/2
對消息頭采用HPACK
進行壓縮傳輸汉规,能夠節(jié)省消息頭占用的網(wǎng)絡(luò)的流量。 - 多路復(fù)用屏镊,直白的說就是所有的請求都是通過一個 TCP 連接并發(fā)完成。同時痰腮,多路復(fù)用流還支持優(yōu)先級和流量控制闸衫。
-
Server Push
:服務(wù)端能夠更快的把資源推送給客戶端。
HTTP/2 底層數(shù)據(jù)格式 Frame(分為 HEADERS frame
DATA frame
)
+-----------------------------------------------+
| Length (24) |
+---------------+---------------+---------------+
| Type (8) | Flags (8) |
+-+-------------+---------------+-------------------+
|R| Stream Identifier (31) |
+=+=================================================+
| Frame Payload (0...) ...
+---------------------------------------------------+
HTTP/2 兼容 HTTP/1.x
非加密HTTP兼容
利用HTTP/1.x
的Upgrade
進行兼容
Request
GET / HTTP/1.1
Host: server.example.com
Connection: Upgrade, HTTP2-Settings
Upgrade: h2c
HTTP2-Settings: <base64url encoding of HTTP/2 SETTINGS payload>
Response
服務(wù)端支持HTTP/2
HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Upgrade: h2c
[ HTTP/2 connection ...
服務(wù)端不支持HTTP/2
HTTP/1.1 200 OK
Content-Length: 243
Content-Type: text/html
...
經(jīng)由代理流如服務(wù)端, 如果代理不支持HTTP/2
, 會將Request Header
中的關(guān)于HTTP/2
的頭信息去除, 變成HTTP/1.x
請求
加密TLS兼容
TLS-ALPN定義了在TLS握手階段
完成兼容性協(xié)定, 可以直接收發(fā)HTTP/2