[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的主要知识点整理的主要内容,如果未能解决你的问题,请参考以下文章

带你整理面试过程中关于HTTP1.0 HTTP1.1 和 HTTP2.0 的相关知识点

HTTP2和HTTPS来不来了解一下?

运维童鞋:HTTP2 和 HTTPS 不来多了解下麽??

HTTP2和HTTPS来不来了解一下?

「知识拾遗」 http2/http3总结

HTTP2.0入门