HTTP(Hypertext Transfer Protocol,超文本传输协议)是一种用于在 Web 服务器和客户端之间传输数据的应用层协议,是构建在 TCP/IP 协议之上的请求 - 响应式协议。

解决的核心痛点:如何让客户端和服务器之间进行高效、可靠的数据通信?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. 关闭/保持连接
  1. 建立连接:基于 TCP(HTTP/3 基于 QUIC)
  2. 发送请求:包含方法、URI、头部、正文
  3. 处理请求:服务器根据 URI 查找资源
  4. 返回响应:包含状态码、头部、响应体
  5. 关闭连接:HTTP/1.1 默认持久连接

关键区别

维度HTTP/1.1HTTP~2HTTP~3
传输方式文本二进制帧QUIC 数据报
多路复用管道化(队头阻塞)多路复用多路复用
头部压缩HPACKQPACK
队头阻塞
底层协议TCPTCPQUIC

版本演进

版本特点
HTTP/0.9最初版本,只支持 GET
HTTP~1.0引入头部、状态码、多种方法
HTTP~1.1持久连接、管道化、缓存控制
HTTP~2多路复用、头部压缩、Server Push
HTTP~3基于 QUIC、0-RTT 连接

应用场景

  • 适用场景
    • 网页浏览:浏览器与服务器通信
    • API 接口:前后端数据交互
    • 文件传输:上传/下载资源
  • 误用
    • 明文传输敏感信息:应使用 HTTPS
    • 频繁建立连接:应使用持久连接或 HTTP/2

知识图谱


参考延伸