http - QUIC 多路复用与 HTTP/2 的多路复用有何不同
问题描述
QUIC 和 HTTP/3 多路复用(通过 UDP)与 HTTP/2(通过 TCP)带来的多路复用有何不同?
解决方案
好问题!
基于 TCP 的 HTTP/2 受到 TCP 造成的轻微效率低下的影响。考虑以下示例:假设您有 3 个流 A、B 和 C。用小写字母(a、b、c)和序列号表示每个流的数据包(帧)。让我们看看在发送以下序列时 HTTP/2 over TCP 会发生什么:
服务器 ---> a2、c2、b2、*c1、b1、a1 ---> 客户端
其中 *c1 表示此帧丢失。接收端(客户端)必须等待重新传输丢失的 *c1 帧,然后才能将后面的帧传递给应用层(即 b2,c2,a2),因为通信是通过 TCP 进行的,并且 TCP 保证有序送货!
这与 HTTP/3 和 QUIC 不同,在 UDP 上这些只是独立的数据包,因此 *c1 的丢失不会延迟 b2、c2 和 a2 到应用层的交付!
推荐阅读
- android - Android截图错误:RGBA覆盖BLOB格式缓冲区应该有高度==宽度
- javascript - 如何将嵌套主体添加到 fetch()
- angular-material2 - MatCalendar:使用 DateRange 但不显示范围,selectChange 触发 Date 而不是 DateRange
- javascript - 如何制作递归方法
- java - Selenium Java - 如何在 Web 元素路径中存储变量以循环多个元素
- python - 有没有一种 Pythonic 方法来获取导入模块的 git 标签
- elixir - 我正在尝试对长生不老药中的输入数据执行数学运算,但它会引发算术错误
- python - 如何从文件名中提取元素并将它们移动到不同的列?
- java - Liquibase 生成的更改日志引发 SQL 语法异常
- excel - 当单元格中没有进行任何更改时,会出现一个 MessageBox,Excel?