【发布时间】:2019-07-06 06:51:11
【问题描述】:
QUIC 和 HTTP/3 多路复用(通过 UDP)与 HTTP/2(通过 TCP)带来的多路复用有何不同?
【问题讨论】:
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 到应用层的传递!
【讨论】: