QUIC 多路复用与 HTTP/2 有何不同

ton*_*o.j 6 http spdy quic http3

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

Lio*_*hen 7

好问题!

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 到应用层的传送!