HTTP/2
HTTP/2 的核心为 Binary framing layer
“layer” 表明 binary framing layer 是一个新的层级, 该层级处于 socket interface 和 HTTP API 之间, 作为中间层级
binary framing layer 不会改变 HTTP 请求/响应的语义: 如我们常说的头, 方法
binary framing layer 只改变了传输过程中的编码方式
HTTP/1.x 明文传输通过换行符分割的信息
HTTP/2 将信息分割为二进制编码的 frames(帧)
定义以下概念:
- Stream: 双向字节流, 可承载多个 messages
- Message: 完整的顺序帧(frames), 映射为请求/响应消息(message)
- Frame: HTTP/2协议的最小传输单位, 每帧(frame)包括一个帧头(frame header), 帧头至少包含 frame 属于哪条 stream
其关系如下:
- 所有的通讯建立在一条 TCP 连接上, 该连接可承载数条 Stream
- 每条 Stream 具有唯一的标识和可选的优先级信息, 可承载数个 Message
- 每个 Message 是标准的 HTTP 消息, 比如请求/响应, 包含一个或多个 Frame