首页 > 解决方案 > QUIC 多路复用与 HTTP/2 的多路复用有何不同

问题描述

QUIC 和 HTTP/3 多路复用(通过 UDP)与 HTTP/2(通过 TCP)带来的多路复用有何不同?

标签: httpspdyquichttp3

解决方案


好问题!

基于 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 到应用层的交付!


推荐阅读