

---

# HTTP 协议版本对比总结

## 一、HTTP/1.1
> 发布于 1997 年，是目前仍然广泛使用的版本。
> 
### 特点

- **长连接（Keep-Alive）**
    - 支持持久连接，多个请求可复用一个 TCP 连接，避免频繁握手。
- **管道化（Pipeline）**
    - 可以在一个 TCP 连接上同时发送多个请求，但**响应必须按顺序返回** → 存在 **队头阻塞（Head-of-Line Blocking）**。
- **明文传输**
    - 默认基于 TCP，数据未加密（可结合 TLS 实现 HTTPS）。
- **请求/响应模型**
    - 一次请求对应一次响应，请求头和响应头通常冗余。

### 功能/不足
- 每个请求都会带上完整的 Header，冗余大。
- 并发能力有限，通常需要开启多个 TCP 连接提升性能。
- 队头阻塞问题严重。

---

## 二、HTTP/2
> 发布于 2015 年，目标是解决 HTTP/1.1 的性能瓶颈。

### 特点
- **二进制分帧（Binary Framing）**
    - 传输不再是文本，而是二进制帧，效率更高。
- **多路复用（Multiplexing）**
    - 同一个 TCP 连接中可同时传输多个流，避免队头阻塞（但仍受 TCP 的 HOLB 影响）。
- **首部压缩（HPACK）**
    - 通过动态表和静态表压缩请求/响应头，大幅减少冗余数据。
- **服务器推送（Server Push）**
    - 服务端可主动推送资源，减少延迟（但实际应用中使用较少）。
- **优先级（Priority）**
    - 支持请求优先级，优化资源调度。


### 功能/不足
- 显著提升带宽利用率和传输效率。
- 依然基于 TCP，**若 TCP 丢包，会阻塞整个连接**（HOLB 依旧存在）。
- 实现复杂度高。

---

## 三、HTTP/3
> 基于 **QUIC（UDP 之上的新传输层协议）** 的 HTTP 新版本，正在逐渐普及。

### 特点
- **基于 QUIC 协议（UDP）**
    - 避免了 TCP 的握手延迟和队头阻塞问题。
- **内置加密（TLS 1.3）**
    - 加密是协议默认部分，不再是扩展。
- **0-RTT 连接建立**
    - 支持快速建立连接，降低延迟。
- **多路复用**
    - 流之间独立，单个流丢包不会阻塞其他流，彻底解决队头阻塞。
- **更好的移动端体验**
    - IP/网络切换时（如 Wi-Fi → 4G），连接可快速恢复，不必像 TCP 那样重新握手。

### 功能/不足
- 传输性能和用户体验更佳，尤其适合移动网络。
- 部署复杂度高，需要操作系统、浏览器、服务端的全面支持。
- UDP 在部分网络环境下可能受限。

---

# HTTP 版本对比表

|特性|HTTP/1.1|HTTP/2|HTTP/3|
|---|---|---|---|
|**传输协议**|TCP|TCP|QUIC（基于 UDP）|
|**连接方式**|长连接（Keep-Alive）|单连接多路复用|单连接多路复用|
|**队头阻塞**|严重|缓解但仍存在（TCP 层）|彻底解决（流级别独立）|
|**数据格式**|文本|二进制分帧|二进制分帧|
|**头部压缩**|无|HPACK|QPACK（HPACK 的改进版）|
|**加密**|可选（HTTPS）|强制 TLS（大多数实现）|内置 TLS 1.3（强制）|
|**性能优化**|需多连接并发|多路复用、服务器推送、头部压缩|多路复用、快速握手、移动友好|
|**适用场景**|基础网络通信|现代 Web，大流量网站|移动端、大规模应用、低延迟场景|

---

✅ **总结**
- **HTTP/1.1**：简单可靠，但存在性能瓶颈（队头阻塞、冗余开销）。
- **HTTP/2**：提升性能，多路复用、头部压缩，但依然受 TCP 限制。
- **HTTP/3**：基于 QUIC，解决 TCP 根本问题，面向未来互联网，特别适合移动网络。

---

## HTTP/1.1

> 定义了最核心、最常见的请求方法，是现代 Web 的基础。

**支持的方法：**
- **GET**：获取资源。
- **POST**：向服务器提交数据。
- **HEAD**：获取响应头，不返回实体内容。
- **PUT**：替换指定资源。
- **DELETE**：删除指定资源。
- **OPTIONS**：查询服务器支持的通信选项。
- **TRACE**：回显请求内容（调试用，实际较少使用）。
- **CONNECT**：建立隧道（常用于 HTTPS 代理）。
👉 **特点**：HTTP/1.1 是第一个全面规范化这些方法的版本。