Day15_http协议

每日一题

面试题:
请解释以下问题:

  1. HTTP/2 的主要改进有哪些?与 HTTP/1.1 相比,它如何解决“队头阻塞”问题?
  2. HTTPS 是如何实现数据加密的?详细说明 TLS 握手过程。
  3. HTTP/3 为什么选择基于 UDP 的 QUIC 协议?它解决了哪些传统 TCP 协议的缺陷?

解答:

1. HTTP/2 的改进与队头阻塞问题

主要改进:

  • 多路复用(Multiplexing):单个 TCP 连接上可并行传输多个请求/响应,避免 HTTP/1.1 中管道化(pipelining)的队头阻塞问题。
  • 二进制分帧:将数据拆分为更小的二进制帧(如 HEADERS 帧、DATA 帧),提升解析效率。
  • 头部压缩(HPACK):使用静态 Huffman 编码压缩重复的 HTTP 头部,减少冗余数据传输。
  • 服务器推送(Server Push):服务器可主动向客户端推送资源(如 CSS/JS),减少额外请求延迟。

队头阻塞的解决

  • HTTP/1.1 中,若某个请求响应延迟,后续请求会被阻塞(即使资源已就绪)。
  • HTTP/2 通过多路复用和二进制分帧,允许不同请求/响应的帧交织传输,避免因单个请求阻塞整个连接。

2. HTTPS 加密与 TLS 握手过程

加密机制
HTTPS = HTTP + TLS/SSL,通过以下两种加密结合实现安全传输:

  • 非对称加密:用于身份认证和密钥交换(如 RSA、ECC)。
  • 对称加密:用于加密实际传输数据(如 AES、ChaCha20),效率更高。

TLS 握手流程(以 TLS 1.3 为例):

  1. Client Hello:客户端发送支持的 TLS 版本、加密套件列表和随机数。
  2. Server Hello:服务器选择加密套件、发送证书和随机数,并生成密钥交换参数(如公钥)。
  3. 密钥交换:客户端验证证书后,生成预主密钥,用服务器公钥加密后发送。
  4. 会话密钥生成:双方基于随机数和预主密钥生成对称加密的会话密钥。
  5. Finished:双方交换加密后的完成消息,验证握手完整性,随后开始加密通信。

3. HTTP/3 与 QUIC 协议

选择 QUIC 的原因
HTTP/3 基于 QUIC(Quick UDP Internet Connections),主要解决 TCP 的以下缺陷:

  • TCP 队头阻塞:TCP 要求数据按序到达,单个丢包会阻塞后续所有数据。QUIC 在应用层实现多路复用,各流独立传输。
  • 连接迁移:QUIC 使用连接 ID(而非 IP/端口),网络切换时(如 Wi-Fi 转 4G)无需重新握手。
  • 更快的握手:QUIC 将 TLS 1.3 集成到协议中,0-RTT(零往返时间)即可恢复会话。

实际优势

  • 减少延迟,提升弱网环境(如高丢包率)下的性能。
  • 避免中间设备(如 NAT)对 TCP 协议的干扰。

总结:HTTP/2 优化传输效率,HTTPS 保障安全,HTTP/3 通过 QUIC 突破 TCP 限制,三者共同推动 Web 性能与安全的演进。

VHDL

D触发器

奇偶校验电路

百词斩

posted @ 2025-03-16 23:55  Pikature  阅读(50)  评论(0)    收藏  举报