【问题标题】:How does HTTP/3 handle packet loss?HTTP/3 如何处理丢包?
【发布时间】:2021-03-23 00:25:09
【问题描述】:

HTTP/2 和 HTTP/3 之间的主要区别之一是从 TCP 切换到 UDP。

据我了解,TCP 通过验证没有数据包丢失来验证数据完整性。任何丢失的数据包都会再次请求以确保正确接收所有数据。

对于 UDP,没有这样的验证。如果数据包丢失了,那就这样吧。

话虽如此,如果我在 HTTP/3 上发出请求并且数据包丢失,是否有一种机制可以确保我获得所有数据,或者我的响应是否存在丢失数据包的风险?

【问题讨论】:

    标签: http tcp udp http2 http3


    【解决方案1】:

    如果数据包丢失了,那就这样吧。

    不,对于 UDP,它不是 “就这样吧”,但取决于 UDP 之上的协议是否关心数据包丢失、重复和重新排序或不关心。例如,对于 RTP(VoIP 等中的实时音频),丢失一些数据包是可以的,因为无论如何对于后来到达的数据包都没有用(音频必须是低延迟的)。并且在 RTP 中使用协议固有的序列号处理重新排序和复制。

    对于 HTTP/3,数据丢失是不可接受的。 HTTP/3 建立在 QUIC 之上,QUIC 建立在 UDP 之上。丢包在 QUIC 中处理(参见QUIC Loss Detection and Congestion Control)。因此,HTTP/3 基本上建立在可靠传输 (QUIC) 之上,就像 HTTP/1 和 HTTP/2 建立在可靠传输层 (TCP) 之上一样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-30
      • 2018-06-12
      • 2015-05-31
      • 1970-01-01
      • 2012-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多