Qwark Asked: 2024-09-26 01:57:32 +0800 CST2024-09-26 01:57:32 +0800 CST 2024-09-26 01:57:32 +0800 CST QUIC/HTTP3 如何使用 UDP 来提高速度? 772 QUIC 表示由于加载页面性能原因,它使用 UDP 而不是 TCP。 鉴于 UDP 没有内置“ACK”功能,我假设它们在等待数据包时会实现超时,因为您可能会在不注意的情况下错过 UDP 数据包。实现超时怎么会比使用 TCP 更快呢? networking 2 个回答 Voted Best Answer grawity_u1686 2024-09-26T02:14:26+08:002024-09-26T02:14:26+08:00 QUIC 不会“使用 UDP”来代替 TCP——这一点经常被重复,但这只是对‘OSI 层’的“逐字”解释。 更准确的说法是,QUIC本身代替了 TCP,因为它实现了传输协议的所有必要功能 - ACK和重传、流量控制、拥塞控制等 - 而 UDP 层仅用于端口复用,实际上并不占用“传输协议”插槽。 (对于大多数目的,您可以将“X over UDP”视为与“X over raw IP”相同,因为两者都提供完全相同的“原始数据报”服务,可通过该服务实现可靠的传输;实际上,SCTP 是一种常用于 UDP 或原始 IP 的传输协议。 因此,如果 TCP 可以在没有 ACK 的 IP 上实现 ACK,那么 QUIC 或 μTP 或 RTP 也可以同样好地在没有 ACK 的 UDP 上实现 ACK。) Spiff 2024-09-26T03:04:14+08:002024-09-26T03:04:14+08:00 大致来说,您可以将 QUIC 视为“通过 UDP 重新实现的 TCP(和 HTTP)”。 这允许应用程序带来自己的“TCP”实现,而不是被迫使用主机操作系统提供的任何 TCP 实现。 这就是谷歌开发 QUIC 的原因;这样谷歌的应用程序(如 Chrome、谷歌地图、YouTube 等)都可以拥有一个由谷歌控制的可靠的“HTTP”传输实现,而不必处理 Windows、macOS、iOS、各种 Linux 发行版等中不同 TCP 堆栈的不同功能集和不同错误。 它还允许 Google 的应用和其他使用 QUIC 的应用使用可能尚未在每个操作系统的 TCP 堆栈上提供的现代化功能。例如,您可以使用 QUIC 执行低延迟 0-RTT 操作,而这些操作在尚不支持 TCP Fast Open (TFO) 的 TCP 堆栈上无法执行。或者,您可以使用比主机操作系统的 TCP 堆栈支持的更合适的拥塞控制算法。或者,即使您的主机操作系统的 TCP 堆栈尚不支持多路径 TCP (MPTCP),您也可以支持多路径流。 因此,QUIC 不一定比适当的现代 TCP 堆栈更快;它基本上是相同的东西,只是在应用程序的一部分代码中实现,因此应用程序开发人员不会被困在使用操作系统网络堆栈提供的 TCP 代码上。
QUIC 不会“使用 UDP”来代替 TCP——这一点经常被重复,但这只是对‘OSI 层’的“逐字”解释。
更准确的说法是,QUIC本身代替了 TCP,因为它实现了传输协议的所有必要功能 - ACK和重传、流量控制、拥塞控制等 - 而 UDP 层仅用于端口复用,实际上并不占用“传输协议”插槽。
(对于大多数目的,您可以将“X over UDP”视为与“X over raw IP”相同,因为两者都提供完全相同的“原始数据报”服务,可通过该服务实现可靠的传输;实际上,SCTP 是一种常用于 UDP 或原始 IP 的传输协议。
因此,如果 TCP 可以在没有 ACK 的 IP 上实现 ACK,那么 QUIC 或 μTP 或 RTP 也可以同样好地在没有 ACK 的 UDP 上实现 ACK。)
大致来说,您可以将 QUIC 视为“通过 UDP 重新实现的 TCP(和 HTTP)”。
这允许应用程序带来自己的“TCP”实现,而不是被迫使用主机操作系统提供的任何 TCP 实现。
这就是谷歌开发 QUIC 的原因;这样谷歌的应用程序(如 Chrome、谷歌地图、YouTube 等)都可以拥有一个由谷歌控制的可靠的“HTTP”传输实现,而不必处理 Windows、macOS、iOS、各种 Linux 发行版等中不同 TCP 堆栈的不同功能集和不同错误。
它还允许 Google 的应用和其他使用 QUIC 的应用使用可能尚未在每个操作系统的 TCP 堆栈上提供的现代化功能。例如,您可以使用 QUIC 执行低延迟 0-RTT 操作,而这些操作在尚不支持 TCP Fast Open (TFO) 的 TCP 堆栈上无法执行。或者,您可以使用比主机操作系统的 TCP 堆栈支持的更合适的拥塞控制算法。或者,即使您的主机操作系统的 TCP 堆栈尚不支持多路径 TCP (MPTCP),您也可以支持多路径流。
因此,QUIC 不一定比适当的现代 TCP 堆栈更快;它基本上是相同的东西,只是在应用程序的一部分代码中实现,因此应用程序开发人员不会被困在使用操作系统网络堆栈提供的 TCP 代码上。