标签:blog 帧结构 格式 解决 利用 alt inf 相同 flags
[classic_tong @ https://www.cnblogs.com/hugetong/p/12694322.html]
为了解决HTTP1的性能问题,HTTP2出现了。
1. 半双工的。请求与回应一来一回,彼此等待对方到底。
2. 不能并发,一个TCP隧道只能处理一个 请求回应 队列。
3. 隧道利用率低。大部分TCP连接,握手之后只通讯一次就结束了。
1. 在传输层与应用层直接,增加分帧层。
2. 增加流控制。
3. 增加服务器推送。
4. 增加头压缩。
1 分帧层使半双工变成了全双工。
2 分帧层在传输层之上实现了多条全双工隧道。
3 隧道支持优先级。
为了实现多个全双工隧道的功能,引入以下三个概念:
1. 流 stream
2. 消息 message
3. 帧 frame
参考: https://developers.google.com/web/fundamentals/performance/http2?hl=zh-cn
应用层,也就是分帧层之上的一层。在逻辑结构和内容上,与http1相同。具体实现上有所差别。
+-----------------------------------------------+ | Length (24) | +---------------+---------------+---------------+ | Type (8) | Flags (8) | +-+-------------+---------------+-------------------------------+ |R| Stream Identifier (31) | +=+=============================================================+ | Frame Payload (0...) ... +---------------------------------------------------------------+
详见: https://tools.ietf.org/html/rfc7540#section-4.3
HEADER就是HTTP中的HEADER,它是有压缩的。
第一步,把常用的header name + value 用数组进行了替换,使用查表的方式进行约定,
表在这里: https://tools.ietf.org/html/rfc7541#appendix-A
表中没有约定的内容,仍然使用ascii码的形式。
第二步,使用哈夫曼编码进行字符压缩。
http2c.pcap
使用nginx + hghttp2工具实验,抓到的包,截图在这里:
[classic_tong @ https://www.cnblogs.com/hugetong/p/12694322.html]
标签:blog 帧结构 格式 解决 利用 alt inf 相同 flags
原文地址:https://www.cnblogs.com/hugetong/p/12694322.html