下面给你一份系统、通俗又偏实战的《HTTP 协议详解》,从原理 → 报文 → 方法 → 状态码 → 特性 → HTTP/1.1 vs HTTP/2/3 → 常见问题一步到位,适合你做技术博客 / 面试 / 运维 / Web 开发使用。


一、HTTP 是什么?

HTTP(HyperText Transfer Protocol)
👉 超文本传输协议
👉 用于 客户端(浏览器) 与 服务器 之间通信
👉 属于 应用层协议

📌 本质一句话:

HTTP 是一套“请求—响应”规则


1️⃣ HTTP 的特点

特性说明
无连接每次请求独立(HTTP/1.x)
无状态服务器不保存客户端状态
明文传输HTTP 本身不加密
基于 TCP默认端口 80

无状态 → 才有了 Cookie / Session / Token


二、HTTP 工作流程(一次访问发生了什么)

浏览器 → DNS解析 → 建立TCP连接 → 发送HTTP请求
                                    ↓
                               服务器处理
                                    ↓
浏览器 ← 接收HTTP响应 ← 返回数据 ←


三、HTTP 报文结构(核心重点)

1️⃣ HTTP 请求报文

GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Chrome/120
Accept: text/html
Cookie: uid=123


请求报文 = 4 部分

1️⃣ 请求行

方法 URL 协议版本

2️⃣ 请求头(Headers)

3️⃣ 空行

4️⃣ 请求体(Body)(GET 通常没有)


2️⃣ HTTP 响应报文

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1024
Set-Cookie: uid=123

<html>...</html>

响应报文 = 4 部分

1️⃣ 状态行

协议版本 状态码 状态描述

2️⃣ 响应头

3️⃣ 空行

4️⃣ 响应体


四、HTTP 请求方法(Methods)

方法用途是否有 Body
GET查询数据
POST提交数据
PUT更新资源
DELETE删除资源
HEAD只要响应头
OPTIONS查询服务器支持方法
PATCH局部更新

📌 面试高频

  • GET 用于查询
  • POST 用于提交
  • PUT 全量更新
  • PATCH 局部更新

五、HTTP 状态码(必考)

1️⃣ 1xx 信息

状态码含义
100继续

2️⃣ 2xx 成功

状态码含义
200成功
201创建成功
204成功但无返回

3️⃣ 3xx 重定向

状态码含义
301永久重定向
302临时重定向
304使用缓存

📌 304 = 浏览器缓存命中


4️⃣ 4xx 客户端错误

状态码含义
400请求错误
401未认证
403无权限
404不存在
429请求过多

5️⃣ 5xx 服务器错误

状态码含义
500服务器错误
502网关错误
503服务不可用
504网关超时

六、HTTP 常见请求头 & 响应头

1️⃣ 常见请求头

Header作用
Host目标主机
User-Agent客户端信息
Accept接收类型
Authorization认证信息
Cookie会话信息

2️⃣ 常见响应头

Header作用
Content-Type返回数据类型
Content-Length内容长度
Set-Cookie设置 Cookie
Cache-Control缓存策略
Location重定向地址

七、HTTP 缓存机制(重点)

1️⃣ 强缓存

Cache-Control: max-age=3600

📌 不向服务器请求,直接用本地缓存


2️⃣ 协商缓存

If-Modified-Since
If-None-Match

服务器返回:

304 Not Modified


八、HTTP 与 HTTPS 的区别(必问)

对比项HTTPHTTPS
是否加密
端口80443
安全性
性能稍慢(可忽略)

📌 HTTPS = HTTP + SSL/TLS


九、HTTP 版本演进

1️⃣ HTTP/1.0

  • 短连接
  • 每次请求都建连接

2️⃣ HTTP/1.1(主流)

✔ 长连接
✔ 管道化
❌ 队头阻塞


3️⃣ HTTP/2(性能革命)

✔ 多路复用
✔ 头部压缩
✔ 二进制帧


4️⃣ HTTP/3(最新)

✔ 基于 QUIC(UDP)
✔ 0-RTT
✔ 无队头阻塞


十、HTTP 常见面试问题

Q1:HTTP 为什么是无状态?

减轻服务器负担,提高扩展性


Q2:Cookie 和 Session 区别?

CookieSession
客户端服务端
不安全相对安全
容量小容量大

Q3:GET 和 POST 区别?

GETPOST
URL 传参Body 传参
有长度限制理论无限
幂等非幂等

Q4:什么是幂等?

多次请求,结果一致


十一、适合你的进阶方向(建议)

结合你之前建站 / 运维 / 前端 / 爬虫的内容,推荐你下一步深入:

  • 🔹 HTTP 抓包(Wireshark / F12)
  • 🔹 RESTful API 设计
  • 🔹 Nginx HTTP 模块
  • 🔹 HTTP 在爬虫中的反爬策略
  • 🔹 HTTP/3 + QUIC 实战