3. 协议概述
QUIC 负责对数据包提供机密性和完整性保护. 它使用从 TLS 握手派生出的密钥, 但不会像 TCP 上的 TLS 那样在 QUIC 中承载 TLS 记录. TLS 握手消息和告警消息直接由 QUIC 传输承载, QUIC 则承担可靠交付、排序和记录层保护相关职责.
QUIC 还依赖 TLS 执行认证, 并协商对安全性和性能至关重要的参数. 两者不是严格分层关系, 而是协作关系: QUIC 使用 TLS 握手; TLS 使用 QUIC 提供的可靠、有序传输以及 QUIC 的数据包保护.
二者的主要交互有两类: TLS 组件通过 QUIC 组件发送和接收握手消息; TLS 组件向 QUIC 组件提供状态更新, 包括要安装的新数据包保护密钥、握手完成状态、服务器证书等. QUIC 应用发送数据时不使用 TLS Application Data 记录, 而是将数据放入 QUIC STREAM frame 或其他 frame, 再封装进 QUIC packet.