美文网首页前端100问
【前端100问】Q15:简单讲解一下 http2 的多路复用

【前端100问】Q15:简单讲解一下 http2 的多路复用

作者: alanwhy | 来源:发表于2020-12-11 14:06 被阅读0次

写在前面

此系列来源于开源项目:前端 100 问:能搞懂 80%的请把简历给我
为了备战 2021 春招
每天一题,督促自己
从多方面多角度总结答案,丰富知识
简单讲解一下 http2 的多路复用

正文回答

HTTP2 采用二进制格式传输,取代了 HTTP1.x 的文本格式,二进制格式解析更高效。

多路复用代替了 HTTP1.x 的序列和阻塞机制,所有的相同域名请求都通过同一个 TCP 连接并发完成。在 HTTP1.x 中,并发多个请求需要多个 TCP 连接,浏览器为了控制资源会有 6-8 个 TCP 连接都限制。

HTTP2 中

  • 同域名下所有通信都在单个连接上完成,消除了因多个 TCP 连接而带来的延时和内存消耗。
  • 单个连接上可以并行交错的请求和响应,之间互不干扰

在 HTTP/1 中,每次请求都会建立一次 HTTP 连接,也就是我们常说的 3 次握手 4 次挥手,这个过程在一次请求过程中占用了相当长的时间,即使开启了 Keep-Alive ,解决了多次连接的问题,但是依然有两个效率上的问题:

  1. 串行的文件传输。当请求 a 文件时,b 文件只能等待,等待 a 连接到服务器、服务器处理文件、服务器返回文件,这三个步骤。我们假设这三步用时都是 1 秒,那么 a 文件用时为 3 秒,b 文件传输完成用时为 6 秒,依此类推。(注:此项计算有一个前提条件,就是浏览器和服务器是单通道传输)
  2. 连接数过多。我们假设 Apache 设置了最大并发数为 300,因为浏览器限制,浏览器发起的最大请求数为 6,也就是服务器能承载的最高并发为 50,当第 51 个人访问时,就需要等待前面某个请求处理完成。

在 HTTP/2 中,有两个非常重要的概念,分别是帧(frame)和流(stream)

帧代表着最小的数据单位,每个帧会标识出该帧属于哪个流,流也就是多个帧组成的数据流。

多路复用,就是在一个 TCP 连接中可以存在多条流。换句话说,也就是可以发送多个请求,对端可以通过帧中的标识知道属于哪个请求。通过这个技术,可以避免 HTTP 旧版本中的队头阻塞问题,极大的提高传输性能。

简单来说

就是在同一个 TCP 连接,同一时刻可以传输多个 HTTP 请求。

相关文章

  • 【前端100问】Q15:简单讲解一下 http2 的多路复用

    写在前面 此系列来源于开源项目:前端 100 问:能搞懂 80%的请把简历给我[https://github.co...

  • ★ HTTP 协议

    简单讲解一下 http2 的多路复用 HTTP HyperText Transfer Protocol 超文本传输...

  • 简单讲解一下 http2 的多路复用

    HTTP2采用二进制格式传输,取代了HTTP1.x的文本格式,二进制格式解析更高效。 多路复用代替了HTTP1.x...

  • http2的特性;多路复用怎么实现;和长链接的区别

    http2 的特性 多路复用 首部压缩:假定一个页面有 100 个资源需要加载, 而每一次请求都有 1kb 的消息...

  • OkHttp - 源码解析

    特点:支持HTTP2/SPDY黑科技(Http2 优化了头部压缩,多路复用多个http请求共用一个TCP连接)so...

  • grpc与Protobuf&go-micro基础原理

    http2支持多路复用,http1不支持。 Broker:异步通讯Codec:消息编码,比如基于protobuf和...

  • 前端100问

    HTML部分 1.空标签都有哪些?空标签什么特点2.行内元素?3.块级元素? CSS部分 JS部分 HTTP部分

  • Netty http2 多路复用

    Stream http1是一个请求独占一个链接,这也是被人吐槽的原因,也是http2 要解决的一个痛点,解决方法是...

  • 前端开发100问

    开发中有越来越多的困惑,还是要在开发中多问问自己为什么是这样,还有没有更好的办法,这是一种思维习惯,也是摆脱单纯开...

  • http2的多路复用笔记

    学习笔记 HTTP2采用二进制格式传输,取代了HTTP1.x的文本格式,二进制格式解析更高效。多路复用代替了HTT...

网友评论

    本文标题:【前端100问】Q15:简单讲解一下 http2 的多路复用

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