流 (Stream)
HTTP/2规范对流的定义是:HTTP/2连接上独立的,双向的帧序列交换。你可以将流看作连接上的一系列帧。
消息
GET / HTTP/1.1
Host: www.abc.com
User-agent: Chrome
Accept-Encoding: compress, gzip
HTTP/1.1 200 OK
Content-type: text/plain
Content-length: 2
:scheme: https
:method: GET
:path: /
:authority: www.abc.com
User-agent: Chrome
Accept-Encoding: compress, gzip
:status: 200
Content-type: text/plain
流量控制
优先级
服务端推送
首部压缩(HPACK)
为什么不直接使用GZIP做首部压缩
CRIME攻击告诉我们,GZIP也有泄漏加密信息的风险。CRIME的原理是这样的,攻击者在请求中添加数据,观察压缩加密后的数据量是否会小雨预期。如果变小了,攻击者就知道注入的文本和请求中的其他内容(比如私有的session cookie)有重复。在很短的时间内,经过加密的数据内容就可以全部搞清楚。因此大家放弃了已有的压缩方案,研发出HPACK。