计算机网络面试题 — HTTP/3.0 有了解过吗?它与之前的版本有哪些主要不同?

155 阅读3分钟

Author : Cyan_RA9
Source : 【卡码笔记】网站
Question : HTTP/3.0 有了解过吗?它与之前的版本有哪些主要不同?

【简要回答】

  1. 传输层协议革新:HTTP/3.0 基于 QUIC 协议(UDP),替代 TCP,解决队头阻塞,降低连接延迟。
  2. 彻底解决队头阻塞:QUIC 直接在传输层实现多路复用,单个流的数据包丢失不影响其他流。
  3. 头部压缩优化:采用 QPACK 算法,允许乱序传输动态表更新,避免解码阻塞。
  4. 强制加密与快速握手:默认集成 TLS 1.3,合并 TLS 和 QUIC 握手,支持 0-RTT 连接

【详细回答】

  1. 传输层协议革新:QUIC 替代 TCP
    • 核心改进
      HTTP/3.0 弃用了 TCP,而是改用基于 UDP 的 QUIC 协议,解决了 TCP 的队头阻塞和连接延迟问题。
    • 技术细节
      0-RTT 连接:通过缓存会话密钥,首次连接即可发送数据(类似 TLS 1.3 的 0-RTT)。
      连接迁移:它使用连接 ID(而非 IP+端口 的格式)来标识连接,进行网络切换(如 Wi-Fi→5G)不需要重新建立连接。
      抗丢包优化:QUIC 协议内置前向纠错(FEC)和快速重传机制,减少了重传延迟。
    • 对比 HTTP/2.0
      HTTP/2.0 仍依赖 TCP,丢包时所有流被阻塞,而 QUIC 协议在传输层避免此问题。
  2. 彻底解决队头阻塞
    • 核心改进
      QUIC 协议直接在传输层实现多路复用,每个流独立处理,数据包丢失仅影响当前流,不会对其他流造成干扰。
    • 技术细节
      流的独立性:每个 HTTP/3.0 流拥有独立的数据包序列和拥塞控制,避免全局阻塞。
      应用场景:视频流、多资源页面加载时性能显著提升(如 YouTube 已部署 HTTP/3.0)。
    • 对比 HTTP/2.0
      HTTP/2.0 在应用层实现多路复用,但 TCP 层的丢包仍导致所有流阻塞。
  3. 头部压缩算法升级:QPACK
    • 核心改进
      采用 QPACK 替代 HTTP/2.0 的 HPACK,允许乱序传输动态表更新指令。
    • 技术细节
      动态表的传输:QPACK 将动态表更新指令与头部块分离,避免因丢包导致解码失败。
      性能提升:减少头部大小约 5%~10%,尤其在高延迟网络中效果显著。
    • 对比 HTTP/2.0
      HPACK 算法要求动态表更新按顺序到达,丢包时解码器需等待重传。
  4. 强制加密和快速握手
    • 核心改进
      QUIC 强制使用 TLS 1.3,合并了加密与连接握手的步骤,减少了延迟。
    • 技术细节
      1-RTT 握手:首次连接合并 QUIC 和 TLS 握手,仅需 1 个往返。
      0-RTT 重连:通过会话恢复实现 0 往返延迟,提升用户体验(如移动端页面刷新)。
    • 对比 HTTP/2.0
      HTTP/2.0 的 TLS 握手与 TCP 握手分离,通常需 2-RTT(TCP + TLS)。

【知识拓展】

  • HTTP/2 and HTTP/3 are architecturally different, as the following picture show : HTTP_architecturally_different.jpg
  • An image depicts an overview of how these layers relate to one other is following : HTTP_overview_about_layers.jpg
  • HTTP semantics are the resource metadata attached to requests and responses. They include request header fields and response status codes. HTTP/3 and HTTP/2 semantics are similar in terms of data format and request/response types. However, their arrangement order differs.
    • HTTP/2 has a distinct application layer (HTTPS,) an optional security layer (TLS,) and a transport layer (TCP), stacked in that order.
    • The layers in HTTP/3 are less distinct, with HTTPS being the application layer, both HTTPS and QUIC forming a built-in security layer, and both QUIC and UDP forming the transport layer.
  • Server Push and Prioritization
    • Server push involves servers preemptively sending resources to clients in order to reduce latency. Both HTTP/2 and HTTP/3 support server push. However, in HTTP/3, clients can set the number of acceptable pushes via the push stream ID to reduce wasted bandwidth.