[http] 有关http2的主要知识点整理
Posted hugetong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[http] 有关http2的主要知识点整理相关的知识,希望对你有一定的参考价值。
一 介绍
[classic_tong @ https://www.cnblogs.com/hugetong/p/12694322.html]
为了解决HTTP1的性能问题,HTTP2出现了。
http1有什么问题
1. 半双工的。请求与回应一来一回,彼此等待对方到底。
2. 不能并发,一个TCP隧道只能处理一个 请求回应 队列。
3. 隧道利用率低。大部分TCP连接,握手之后只通讯一次就结束了。
http2有什么新的
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]
以上是关于[http] 有关http2的主要知识点整理的主要内容,如果未能解决你的问题,请参考以下文章