likes
comments
collection
share

面试官 🤔:了解过 HTTP/2 中的二进制分帧吗…HTTP/2 核心的一个变化就是二进制分帧 加了一层 在供给应用的

作者站长头像
站长
· 阅读数 13

HTTP/2 核心的一个变化就是二进制分帧

加了一层

供给应用的HTTP API套接字接口之间,加了这么一层:二进制分帧层。之前HTTP的请求形式完全不用变,所有HTTP请求数据到这一层,拆成一个个二进制形式(而非之前的文本)的帧,传给下面(TLS TCP IP)并到达目标

面试官 🤔:了解过 HTTP/2 中的二进制分帧吗…HTTP/2 核心的一个变化就是二进制分帧 加了一层 在供给应用的

之前每个域名最多6个TCP连接,多个域名就十几个连接,如果带宽不够也没法让重要的先走 现在,一个域名就只需一个TCP长连接,不同的请求内容被转化为帧的形式都进到这个TCP连接里来。可以对帧进行标记,从而识别出重要的请求

TCP连接在刚发起后,数据传输有一个从慢到快加速过程。现在一个域名只需要一个TCP长连接,省了连接就省了建立连接的时间,也省了加速的过程

之前在一个TCP连接中的请求,同时只能走一个,后面的请求得排队。现在请求到二进制分帧层后被切成了小单元(帧),来一部分就发一部分,请求内容被交错着发出去(当然,每个帧带着id用于识别),服务器一个个接收,再拼起来(利用这个id),不用排队等着,直接把带宽利用足了

面试官 🤔:了解过 HTTP/2 中的二进制分帧吗…HTTP/2 核心的一个变化就是二进制分帧 加了一层 在供给应用的

除此之外

二进制分帧让HTTP 实现了多路复用的效果,HTTP/2还有一些其他改进:

  • 优先级:这也是基于这个帧的这个单元去实现的,可以在这个单元上添加优先级标识。想要有更细粒度的处理,就需要有更细的粒度

  • 服务器推送:服务器收到文档的请求之后,无需等其他资源的请求,直接把各种资源按优先级响应出去。但是 chrome 已不再支持

警告Chrome 不再支持 HTTP/2 服务器推送。无论其他浏览器和 HTTP/2 实现是否支持此功能,您都应将其视为不再可用。

  • 请求头压缩:请求多了,头部的数据加起来也不少。压缩之后就节省很多开锁。采用了HPACK这种压缩格式,它会对这些 header 字段进行索引,下一个请求如果用到同样的字段,那就直接用索引,省掉内容

面试官 🤔:了解过 HTTP/2 中的二进制分帧吗…HTTP/2 核心的一个变化就是二进制分帧 加了一层 在供给应用的

参考:

web.dev/articles/pe…

time.geekbang.org/column/arti…

转载自:https://juejin.cn/post/7413586285954105370
评论
请登录