美文网首页
HTTP2.0 简介

HTTP2.0 简介

作者: 莫帆海氵 | 来源:发表于2020-10-11 16:19 被阅读0次

    定义

    HTTP/2 是 HTTP 协议的一个升级,它的主要目的是为了解决 HTTP/1.x 中不好实现功能,比如并发访问、TCP连接复用等

    HTTP/2 的实现的主要功能包括通过支持完整的请求与响应复用来减少延迟,通过有效压缩 HTTP 标头字段将协议开销降至最低,增加对请求优先级和服务器推送的支持

    您很可能注意不到任何区别:所有新的低级分帧由客户端和服务器为您执行

    概念

    理解以下的概念有助于学习 HTTP/2

    数据流:已建立连接内的双向字节流,可以承载一条或多条消息

    消息:与逻辑请求或响应消息对应的完整的一系列帧

    帧:HTTP/2通信的最小单位,包含帧头

    它们的关系:

    一个 TCP 连接上承载任意数量的数据流,每个数据流承载双向消息,每条消息包含一个或多个帧,帧是最小单位承载特定的数据

    二进制分帧层

    在应用层新增一个二进制分帧层,用来处理所有 http/2 新增的特性,对于通过 http/2 传输的信息细分为消息和帧,使用二进制格式编码。

    http2_binary_framing.jpg

    它有哪些优点?

    请求与响应复用、服务器推送、标头压缩等。

    请求与响应复用

    HTTP/2 的消息都是在一个 TCP 连接内完成,通过把消息分成一些列的帧,把这些帧交错传输从而达到复用的目的,每个帧都包含数据流标识符,接收端根据其在重新组装成一条消息。

    image.png

    数据流优先级,因为在一个连接中有多个帧交错传输,为了保证传输优先级高的资源,通过给数据流设置权重和依赖关系来实现传输的优先级。

    每个来源一个连接,因为请求与响应的复用,所以通过 HTTP/2 的数据流都可以在一个 TCP 连接传输,所以只需要每个来源一个连接即可,HTTP/2 的链接都是永久的。

    image (1).png

    如图所示可以通过 Network 工具查看请求的 Connection ID 会发现同一个源下面使用 HTTP/2 的请求都是同一个 ID

    服务器推送

    服务器可以对一个客户端请求发送多个响应。有别于 HTTP/1.x 定义的一个请求一个响应,HTTP/2 下服务器可以主动推送内容给客户端,这主要考虑场景是现在的一个网络应用会包含多种资源,可以通过服务器提前推送这些资源,从而减少客户端再次发起资源请求的延迟时间。

    所有服务器推送数据流都是通过 PUSH_PROMISE 帧发起,客户端接受到后可以拒绝、缓存、复用

    image (2).png

    标头压缩

    压缩请求与响应标头的元数据减少传输的字节大小,通过 HPACK 压缩格式,有别于 HTTP/1.x 中每次请求都带上所有的请求头信息,HTTP/2 通过对传输的标头字段编码后传输索引值,然后通过服务端和客户端维护的索引列表来解码重构标头键值对。

    image (3).png

    对于如何查看一个请求是否开启 HTTP/2,可以通过查看请求响应头,":method" 等包含以冒号开头的标头都可以认为是 HTTP/2

    image (4).png

    结论

    简单介绍了 HTTP/2 的一些概念以及一些新特性,总结下来 HTTP/2 主要特性,请求与响应复用、标头压缩、服务端推送。

    了解到了一些特有的关键词,数据流、消息、帧、二进制分帧层,每个来源一个连接,霍夫曼编码

    相关文章

      网友评论

          本文标题:HTTP2.0 简介

          本文链接:https://www.haomeiwen.com/subject/vhuepktx.html