当然可以,下面是对 HTTP 各版本(0.9、1.0、1.1、2、3) 的详细中文总结,包括它们的特点、改进点、适用场景等。
| 版本 | 发布年份 | 是否过时 | 是否主流 |
|---|---|---|---|
| HTTP/0.9 | 1991 | ✅ 是 | ❌ 否 |
| HTTP/1.0 | 1996 | ✅ 是 | ❌ 否 |
| HTTP/1.1 | 1997 | ❌ 否 | ✅ 常见 |
| HTTP/2 | 2015 | ❌ 否 | ✅ 主流(Chrome、微信小程序) |
| HTTP/3 | 2022 | ❌ 否 | ✅ 越来越普及(QUIC) |
GET 方法GET /index.html
服务器返回纯文本 HTML,一发一收,无状态、无扩展性。
Content-Type、Content-Length)📌 示例请求:
GET /index.html HTTP/1.0
Host: www.example.com
✅ 改进了 1.0 的所有核心问题,被广泛使用至今。
| 功能 | 说明 |
|---|---|
| 🔁 持久连接 | 默认开启 keep-alive,一个 TCP 可复用多个请求 |
| 📦 分块传输(chunked) | 支持动态内容(如直播) |
| 🧭 Host 字段 | 支持虚拟主机(多个站点共用 IP) |
| 🕓 缓存控制 | Cache-Control, ETag,
If-Modified-Since |
| 📛 管道化 | 理论支持并发请求(但因队头阻塞问题,使用有限) |
🆕 极大提升性能,是现代浏览器默认支持的主力。
| 特性 | 描述 |
|---|---|
| 🔀 多路复用 | 同一 TCP 连接中并发多个请求,不再阻塞 |
| 🧱 二进制帧 | 所有通信基于“帧”,不再是纯文本 |
| 🗜️ 头部压缩(HPACK) | 重复 header 被压缩,节省带宽 |
| ⬇️ 服务端推送 | Server 可以主动推送资源给客户端 |
| ✅ 更快加载网页 | 多个资源同时加载,减少等待时间 |
✅ 基于 UDP 的 QUIC 协议,彻底解决 TCP 带来的瓶颈。
| 特性 | 说明 |
|---|---|
| 🚀 0-RTT/1-RTT 握手 | 建立连接极快,比 TLS+TCP 少好几次往返 |
| 🔀 无队头阻塞 | 即使某个请求丢包,其他也不受影响 |
| 🔐 内建 TLS 1.3 | 安全性强,简化加密流程 |
| 📦 拆包更灵活 | 适应移动网络丢包环境(如 4G/5G) |
🔎 支持 HTTP/3 的服务:Google、Facebook、Cloudflare、微信小程序等。
| 特性/版本 | HTTP/1.0 | HTTP/1.1 | HTTP/2 | HTTP/3 |
|---|---|---|---|---|
| TCP 复用 | ❌ | ✅ | ✅ 多路复用 | ✅(QUIC更优) |
| 请求阻塞 | ✅ | ✅ | 部分解决 | ❌ 无阻塞 |
| 二进制传输 | ❌ | ❌ | ✅ | ✅ |
| 请求头压缩 | ❌ | ❌ | ✅(HPACK) | ✅(QPACK) |
| 加密支持 | ❌ | ✅ | ✅ | ✅(内建 TLS) |
| 连接速度 | 慢 | 中等 | 快 | 🚀 非常快(0-RTT) |
200 OK:请求成功,服务器正常返回数据。
301 Moved Permanently:永久重定向,资源已被永久移动到新地址。
302 Found(临时重定向):资源临时移动,客户端仍用原地址访问。
404 Not Found:请求的资源不存在。
500 Internal Server Error:服务器内部错误,无法完成请求。
| 模型 | 层数 | 主要层 | 特点 |
|---|---|---|---|
| OSI 模型 | 7层 | 应用层、表示层、会话层、传输层、网络层、数据链路层、物理层 | 理论模型,层次细 |
| TCP/IP 模型 | 4层 | 应用层、传输层、网络层、链路层 | 实际应用,层次合并,更简单 |
NAT 穿透:使处于 NAT 后的设备可以相互通信。
UDP 打洞:双方同时向对方发送 UDP 包,利用 NAT 维护的映射建立直接通信通道。