HTTP(Hypertext Transfer Protocol,超文本传输协议)是一种用于在 Web 服务器和客户端之间传输数据的应用层协议,是构建在 TCP/IP 协议之上的请求 - 响应式协议。
解决的核心痛点:如何让客户端和服务器之间进行高效、可靠的数据通信?HTTP 定义了标准化的请求 - 响应格式,使得不同系统之间可以相互通信。
核心命题
- HTTP 是基于请求-响应模型的无状态协议
- 原理:客户端发起请求,服务器返回响应;每个请求都是独立的,服务器不保存客户端状态,需要通过 Cookie、Session 或 Token 维护状态
- HTTP 是可扩展的协议
- 原理:通过自定义头部、状态码、请求方法等,可以灵活扩展协议功能,满足不同业务需求
运行机制
sequenceDiagram participant C as 客户端 participant S as 服务器 C->>S: 1. 建立 TCP 连接 S-->>C: 2. 连接确认 C->>S: 3. 发送 HTTP 请求 S->>S: 4. 处理请求 S-->>C: 5. 返回 HTTP 响应 C->>S: 6. 关闭/保持连接
- 建立连接:基于 TCP(HTTP/3 基于 QUIC)
- 发送请求:包含方法、URI、头部、正文
- 处理请求:服务器根据 URI 查找资源
- 返回响应:包含状态码、头部、响应体
- 关闭连接:HTTP/1.1 默认持久连接
关键区别
版本演进
| 版本 | 特点 |
|---|---|
| HTTP/0.9 | 最初版本,只支持 GET |
| HTTP~1.0 | 引入头部、状态码、多种方法 |
| HTTP~1.1 | 持久连接、管道化、缓存控制 |
| HTTP~2 | 多路复用、头部压缩、Server Push |
| HTTP~3 | 基于 QUIC、0-RTT 连接 |
应用场景
- ✅ 适用场景
- 网页浏览:浏览器与服务器通信
- API 接口:前后端数据交互
- 文件传输:上传/下载资源
- ⛔ 误用
- 明文传输敏感信息:应使用 HTTPS
- 频繁建立连接:应使用持久连接或 HTTP/2
知识图谱
- 父级概念:网络协议 — HTTP 是应用层协议之一
- 子级概念:
- 并列概念:
- WebSocket — 双向通信协议
- 相关概念:
- HTTPS — HTTP 的安全版本
- RESTful API — 基于 HTTP 的 API 设计风格
- HTTP缓存