据说 QUIC 是建立在 UDP 之上并使用 TLS 数据包的。
QUIC(RFC 9000)不使用 TLS“数据包”。
从技术上讲,TLS 使用术语“记录”来指示定义协议如何构建的字节块。记录指定 TLS 协议版本、记录长度等。TLS 帧内有一个或多个指定加密信息或命令的TLS消息。
TLS 记录通过 TCP 传输。
相反,QUIC 所做的是重用一些 TLS消息,但不重用 TLS 记录层。
例如,在 TCP 中,客户端发送的第一个字节通常是包装消息的 TLS 记录ClientHello。
相反,在 QUIC 中,第一个字节是 QUICInitial数据包,它包装一个CRYPTO帧,包装ClientHello消息,并且所有这些字节必须适合 UDP 数据报(通常都是这样,数据Initial包甚至携带一个PADDING帧来使初始至少 1200 字节)。有关如何在 QUIC 中使用 TLS 的更多详细信息,
请参阅RFC 9001 。
更广泛地讲,QUIC 基于 UDP,但借用了许多 TCP 功能(重传、流量控制等),这些功能基本上使其成为 TCP 的替代品,因为它是一种可靠的网络协议,并具有附加的安全(加密)功能内置,由 TLS 借用。
TCP 是明文的,依赖于顶层的 TLS 来提供加密。QUIC 是 TCP 功能和 TLS 功能的混合(没有明文 QUIC),没有分层。
当你说“为什么 QUIC 不说是建立在 TCP 上的?”时,我说“QUIC 不是建立在 TCP 上的,它是建立在 UDP 上的。但是,QUIC 借用了 TCP 的特性,这使得 QUIC 提供了与 TCP 类似的功能,特别是UDP 不提供可靠性和流量控制”。
例如,在Jetty中,我们使用单个持久的 QUIC 流在 QUIC 之上实现了 HTTP/1.1 和 HTTP/2(基于 TCP 的协议)。
这表明 QUIC 确实可以替代 TCP,因为它可以承载为 TCP 设计的协议。
| 归档时间: |
|
| 查看次数: |
2042 次 |
| 最近记录: |