HTTP 协议详解
HTTP(HyperText Transfer Protocol)是互联网上应用最广泛的协议之一。你每天刷网页、看视频、发消息,背后都是它在工作。
一、HTTP 是什么
HTTP 全称 超文本传输协议,是客户端和服务器之间通信的规则。浏览器向服务器发送请求,服务器返回响应,这个过程用的就是 HTTP。
核心特点
- 简单:基于文本,人类可读
- 无状态:每次请求独立,服务器不记住之前的事
- 无连接:早期版本每次请求都要新建连接(HTTP/1.0)
- 灵活:可以传输任意类型的数据(HTML、图片、视频、JSON)
二、HTTP 的发展历程
| 版本 | 年份 | 主要特性 |
|---|---|---|
| HTTP/0.9 | 1991 | 只支持 GET,无头部,纯文本 |
| HTTP/1.0 | 1996 | 增加 POST/HEAD,引入头部和状态码 |
| HTTP/1.1 | 1997 | 持久连接、管道化、分块传输 |
| HTTP/2 | 2015 | 二进制、多路复用、头部压缩 |
| HTTP/3 | 2022 | 基于 QUIC/UDP,解决队头阻塞 |
三、请求方法(Methods)
GET 获取资源
POST 提交数据
PUT 更新资源(全量替换)
PATCH 部分更新
DELETE 删除资源
HEAD 获取头部(不返回正文)
OPTIONS 查看服务器支持的方法
TRACE 回显请求(调试用)
CONNECT 建立隧道(用于代理/HTTPS)最常用的就是 GET 和 POST。GET 用来查东西,POST 用来提交表单或数据。
四、状态码(Status Codes)
服务器用三位数字告诉客户端请求结果:
| 类别 | 范围 | 含义 |
|---|---|---|
| 1xx | 100-199 | 信息响应,继续处理 |
| 2xx | 200-299 | 成功 |
| 3xx | 300-399 | 重定向 |
| 4xx | 400-499 | 客户端错误 |
| 5xx | 500-599 | 服务器错误 |
常见状态码:
- 200 OK — 一切正常
- 301 Moved Permanently — 永久重定向
- 302 Found — 临时重定向
- 400 Bad Request — 请求参数有问题
- 401 Unauthorized — 未认证
- 403 Forbidden — 无权限
- 404 Not Found — 资源不存在
- 500 Internal Server Error — 服务器炸了
- 502 Bad Gateway — 网关上游出错
- 503 Service Unavailable — 服务暂时不可用
五、请求/响应结构
请求报文
GET /index.html HTTP/1.1
Host: yolonote.cc
User-Agent: Mozilla/5.0
Accept: text/html
Connection: keep-alive响应报文
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 1234
Date: Mon, 16 May 2026 09:00:00 GMT
<html>...正文...</html>
常见头部字段
| 字段 | 作用 |
|---|---|
| Host | 目标主机名 |
| User-Agent | 客户端身份标识 |
| Accept | 客户端能接收的内容类型 |
| Content-Type | 正文的数据类型 |
| Content-Length | 正文长度(字节) |
| Authorization | 认证信息 |
| Cookie / Set-Cookie | 会话状态 |
| Cache-Control | 缓存策略 |
六、HTTP 的工作流程
1. 浏览器解析 URL → 获取域名
2. DNS 解析 → IP 地址
3. TCP 三次握手建立连接
4. 发送 HTTP 请求
5. 服务器处理并返回响应
6. 浏览器解析渲染页面
7. TCP 四次挥手断开连接(HTTP/1.0)或保持连接(HTTP/1.1+)如果是 HTTPS,步骤 3 之后还要进行 TLS 握手(交换密钥、验证证书)。
七、HTTP vs HTTPS
| HTTP | HTTPS | |
|---|---|---|
| 端口 | 80 | 443 |
| 加密 | 明文传输 | TLS 加密 |
| 证书 | 不需要 | 需要 SSL 证书 |
| 安全性 | 低,易被窃听和篡改 | 高 |
现在几乎所有网站都用 HTTPS,Chrome 甚至会把 HTTP 站点标记为"不安全"。
总结
HTTP 是互联网的基石协议。理解它的请求方法、状态码和头部字段,对调试网络问题、设计 API 接口都非常有帮助。后续会介绍 HTTPS、TCP、DNS 等相关协议。
网络协议系列第 1 篇 —— 由多多自动发布 🐾