HTTP 学习日记
适合目标:系统掌握 HTTP 的核心知识体系,建立从请求响应模型、报文结构、方法状态码,到 HTTPS、HTTP/2、HTTP/3 的完整认知。
学习定位:这一份偏“系统入门 + 面试主线 + 工程理解”。
学习原则:先理解 HTTP 在解决什么问题,再理解报文和协议细节;先会讲请求响应,再讲缓存、连接管理和版本演进。
目录
- 学习总览
- HTTP 到底是什么
- HTTP 解决了什么问题
- URL 和一次请求的完整过程
- HTTP 报文结构
- 请求方法
- 状态码
- 常见请求头和响应头
- HTTP 是无状态的是什么意思
- Cookie、Session、Token
- HTTPS
- HTTP/1.1、HTTP/2、HTTP/3
- 长连接、短连接、Keep-Alive
- 实战中的 HTTP 认知
- 高频面试题
- 一页速记总结
- 背诵口诀
1. 学习总览
1.1 学 HTTP 到底在学什么
很多人学 HTTP 会有一种感觉:
- 平时天天发请求
- 但一问协议细节就容易混
- 一到面试就只会背状态码
本质上,HTTP 学的是:
浏览器和服务器如何约定数据请求、传输和响应。
也就是说你要建立这条主线:
- 客户端想拿资源
- 通过 HTTP 发送请求
- 服务端返回响应
- 双方依靠报文格式和协议规则沟通
1.2 学 HTTP 的三条主线
主线 1:请求响应模型
谁发请求,谁回响应。
主线 2:报文和头信息
怎么描述请求和响应。
主线 3:版本演进
为什么从 HTTP/1.1 到 HTTP/2,再到 HTTP/3。
2. HTTP 到底是什么
HTTP 全称是:
HyperText Transfer Protocol
中文通常叫:
超文本传输协议
2.1 一句话理解
HTTP 是客户端和服务器之间传输超文本及其他资源的应用层协议。
2.2 为什么叫超文本
最早主要传 HTML 文本,现在实际传的不只是文本,还包括:
- JSON
- 图片
- 音视频
- CSS
- JavaScript
3. HTTP 解决了什么问题
HTTP 核心解决的是:
- 如何请求资源
- 如何描述请求内容
- 如何描述返回结果
- 如何让浏览器和服务器遵守统一通信规则
4. URL 和一次请求的完整过程
4.1 URL 是什么
URL 可以理解成资源地址。
例如:
https://example.com:443/api/user?id=1
它通常包括:
- 协议
- 域名
- 端口
- 路径
- 查询参数
4.2 浏览器输入 URL 后发生了什么
典型链路:
- 解析 URL
- DNS 查询
- 建立 TCP 连接
- HTTPS 还要做 TLS 握手
- 发送 HTTP 请求
- 服务端处理并返回响应
- 浏览器解析资源并渲染
5. HTTP 报文结构
5.1 请求报文
通常包括:
- 请求行
- 请求头
- 空行
- 请求体
示例:
GET /api/user?id=1 HTTP/1.1
Host: example.com
Accept: application/json
5.2 响应报文
通常包括:
- 状态行
- 响应头
- 空行
- 响应体
示例:
HTTP/1.1 200 OK
Content-Type: application/json
{"id":1,"name":"Tom"}
6. 请求方法
常见方法:
GETPOSTPUTDELETEPATCHOPTIONSHEAD
6.1 GET
通常用于获取资源。
6.2 POST
通常用于提交数据。
6.3 PUT
通常用于整体更新资源。
6.4 PATCH
通常用于部分更新资源。
6.5 DELETE
通常用于删除资源。
7. 状态码
7.1 1xx
提示信息。
7.2 2xx
成功。
常见:
200 OK201 Created204 No Content
7.3 3xx
重定向。
常见:
301 Moved Permanently302 Found304 Not Modified
7.4 4xx
客户端错误。
常见:
400 Bad Request401 Unauthorized403 Forbidden404 Not Found
7.5 5xx
服务端错误。
常见:
500 Internal Server Error502 Bad Gateway503 Service Unavailable
8. 常见请求头和响应头
8.1 请求头
HostUser-AgentAcceptAuthorizationCookieContent-Type
8.2 响应头
Content-TypeContent-LengthSet-CookieCache-ControlETagLocation
9. HTTP 是无状态的是什么意思
无状态指的是:
HTTP 协议本身不会自动记住上一次请求和下一次请求之间的业务状态。
这意味着:
- 每次请求本身是独立的
- 服务端需要额外机制保存用户身份和会话状态
10. Cookie、Session、Token
10.1 Cookie
浏览器保存的一小段数据,通常由服务端通过 Set-Cookie 下发。
10.2 Session
服务端保存的会话信息。
10.3 Token
客户端保存并随请求携带的身份凭证。
11. HTTPS
HTTPS = HTTP + TLS
它解决的核心问题:
- 加密
- 身份认证
- 完整性保护
11.1 为什么 HTTPS 比 HTTP 安全
因为 HTTP 明文传输,而 HTTPS 会在传输层做加密和身份校验。
12. HTTP/1.1、HTTP/2、HTTP/3
12.1 HTTP/1.1
特点:
- 长连接
- 管道化理论存在但实践有限
- 仍有队头阻塞问题
12.2 HTTP/2
特点:
- 二进制分帧
- 多路复用
- 头部压缩
- 服务器推送历史上有过,但现实中价值有限
12.3 HTTP/3
特点:
- 基于 QUIC
- 不再依赖 TCP
- 更好地应对丢包和连接迁移
13. 长连接、短连接、Keep-Alive
13.1 短连接
一次请求响应后就断开。
13.2 长连接
多个请求复用同一个 TCP 连接。
13.3 Keep-Alive
HTTP/1.1 里通常默认支持连接复用。
14. 实战中的 HTTP 认知
在真实项目里,HTTP 最常和这些问题一起出现:
- 接口鉴权
- 跨域
- 缓存
- CDN
- 网关
- 代理和负载均衡
15. 高频面试题
15.1 HTTP 和 HTTPS 的区别
HTTP 明文传输;HTTPS 在 HTTP 基础上加了 TLS,支持加密、认证和完整性保护。
15.2 HTTP 是无状态的是什么意思
表示协议本身不自动记录请求之间的业务会话状态,状态需要靠 Cookie、Session、Token 等机制维护。
15.3 HTTP/1.1 和 HTTP/2 的区别
HTTP/2 主要有二进制分帧、多路复用和头部压缩,改善了 HTTP/1.1 的一些性能问题。
15.4 GET 和 POST 的区别
语义上,GET 用于获取资源,POST 用于提交数据;是否安全、幂等主要看语义和服务端设计。
16. 一页速记总结
16.1 核心主线
- 请求响应模型
- 报文结构
- 方法与状态码
- HTTPS
- 版本演进
16.2 记忆口诀
先懂请求响应,再记头和状态;安全看 HTTPS,性能看版本演进。
17. 背诵口诀
HTTP 管请求响应,HTTPS 管安全,缓存和连接管理管性能,版本升级为了解决传输效率问题。