HTTP2 协议前瞻

HTTP/2 优势

  • HTTP/2 采用二进制格式传输数据,而非 HTTP/1.x 的文本格式。二进制格式在协议的解析和优化扩展上带来更多的优势和可能。
  • HTTP/2 对消息头采用 HPACK 进行压缩传输,能够节省消息头占用的网络的流量。
  • 多路复用,直白的说就是所有的请求都是通过一个 TCP 连接并发完成。同时,多路复用流还支持优先级和流量控制。
  • Server Push:服务端能够更快的把资源推送给客户端。

HTTP/2 底层数据格式 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.xUpgrade进行兼容
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
服务端支持HTTP/2

HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Upgrade: h2c

[ HTTP/2 connection ...

服务端不支持HTTP/2

HTTP/1.1 200 OK
Content-Length: 243
Content-Type: text/html
...

经由代理流如服务端, 如果代理不支持HTTP/2, 会将Request Header中的关于HTTP/2的头信息去除, 变成HTTP/1.x请求

加密TLS兼容

TLS-ALPN定义了在TLS握手阶段完成兼容性协定, 可以直接收发HTTP/2

参考

    原文作者:KeKeMars
    原文地址: https://www.jianshu.com/p/7f11dd806b5d
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞