[http] 有关http2的主要知识点整理

2021-03-22 17:24

阅读:529

标签:blog   帧结构   格式   解决   利用   alt   inf   相同   flags   

一 介绍

[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的主要知识点整理

标签:blog   帧结构   格式   解决   利用   alt   inf   相同   flags   

原文地址:https://www.cnblogs.com/hugetong/p/12694322.html


评论


亲,登录后才可以留言!