每日一题
面试题:
请解释以下问题:
- HTTP/2 的主要改进有哪些?与 HTTP/1.1 相比,它如何解决“队头阻塞”问题?
- HTTPS 是如何实现数据加密的?详细说明 TLS 握手过程。
- 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 为例):
- Client Hello:客户端发送支持的 TLS 版本、加密套件列表和随机数。
- Server Hello:服务器选择加密套件、发送证书和随机数,并生成密钥交换参数(如公钥)。
- 密钥交换:客户端验证证书后,生成预主密钥,用服务器公钥加密后发送。
- 会话密钥生成:双方基于随机数和预主密钥生成对称加密的会话密钥。
- 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触发器
奇偶校验电路