文章目录

HTTP 学习日记

适合目标:系统掌握 HTTP 的核心知识体系,建立从请求响应模型、报文结构、方法状态码,到 HTTPS、HTTP/2、HTTP/3 的完整认知。
学习定位:这一份偏“系统入门 + 面试主线 + 工程理解”。
学习原则:先理解 HTTP 在解决什么问题,再理解报文和协议细节;先会讲请求响应,再讲缓存、连接管理和版本演进。


目录

  1. 学习总览
  2. HTTP 到底是什么
  3. HTTP 解决了什么问题
  4. URL 和一次请求的完整过程
  5. HTTP 报文结构
  6. 请求方法
  7. 状态码
  8. 常见请求头和响应头
  9. HTTP 是无状态的是什么意思
  10. Cookie、Session、Token
  11. HTTPS
  12. HTTP/1.1、HTTP/2、HTTP/3
  13. 长连接、短连接、Keep-Alive
  14. 实战中的 HTTP 认知
  15. 高频面试题
  16. 一页速记总结
  17. 背诵口诀

1. 学习总览

1.1 学 HTTP 到底在学什么

很多人学 HTTP 会有一种感觉:

  1. 平时天天发请求
  2. 但一问协议细节就容易混
  3. 一到面试就只会背状态码

本质上,HTTP 学的是:

浏览器和服务器如何约定数据请求、传输和响应。

也就是说你要建立这条主线:

  1. 客户端想拿资源
  2. 通过 HTTP 发送请求
  3. 服务端返回响应
  4. 双方依靠报文格式和协议规则沟通

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 文本,现在实际传的不只是文本,还包括:

  1. JSON
  2. 图片
  3. 音视频
  4. CSS
  5. JavaScript

3. HTTP 解决了什么问题

HTTP 核心解决的是:

  1. 如何请求资源
  2. 如何描述请求内容
  3. 如何描述返回结果
  4. 如何让浏览器和服务器遵守统一通信规则

4. URL 和一次请求的完整过程

4.1 URL 是什么

URL 可以理解成资源地址。

例如:

https://example.com:443/api/user?id=1

它通常包括:

  1. 协议
  2. 域名
  3. 端口
  4. 路径
  5. 查询参数

4.2 浏览器输入 URL 后发生了什么

典型链路:

  1. 解析 URL
  2. DNS 查询
  3. 建立 TCP 连接
  4. HTTPS 还要做 TLS 握手
  5. 发送 HTTP 请求
  6. 服务端处理并返回响应
  7. 浏览器解析资源并渲染

5. HTTP 报文结构

5.1 请求报文

通常包括:

  1. 请求行
  2. 请求头
  3. 空行
  4. 请求体

示例:

GET /api/user?id=1 HTTP/1.1
Host: example.com
Accept: application/json

5.2 响应报文

通常包括:

  1. 状态行
  2. 响应头
  3. 空行
  4. 响应体

示例:

HTTP/1.1 200 OK
Content-Type: application/json

{"id":1,"name":"Tom"}

6. 请求方法

常见方法:

  1. GET
  2. POST
  3. PUT
  4. DELETE
  5. PATCH
  6. OPTIONS
  7. HEAD

6.1 GET

通常用于获取资源。

6.2 POST

通常用于提交数据。

6.3 PUT

通常用于整体更新资源。

6.4 PATCH

通常用于部分更新资源。

6.5 DELETE

通常用于删除资源。


7. 状态码

7.1 1xx

提示信息。

7.2 2xx

成功。

常见:

  1. 200 OK
  2. 201 Created
  3. 204 No Content

7.3 3xx

重定向。

常见:

  1. 301 Moved Permanently
  2. 302 Found
  3. 304 Not Modified

7.4 4xx

客户端错误。

常见:

  1. 400 Bad Request
  2. 401 Unauthorized
  3. 403 Forbidden
  4. 404 Not Found

7.5 5xx

服务端错误。

常见:

  1. 500 Internal Server Error
  2. 502 Bad Gateway
  3. 503 Service Unavailable

8. 常见请求头和响应头

8.1 请求头

  1. Host
  2. User-Agent
  3. Accept
  4. Authorization
  5. Cookie
  6. Content-Type

8.2 响应头

  1. Content-Type
  2. Content-Length
  3. Set-Cookie
  4. Cache-Control
  5. ETag
  6. Location

9. HTTP 是无状态的是什么意思

无状态指的是:

HTTP 协议本身不会自动记住上一次请求和下一次请求之间的业务状态。

这意味着:

  1. 每次请求本身是独立的
  2. 服务端需要额外机制保存用户身份和会话状态

10. Cookie、Session、Token

10.1 Cookie

浏览器保存的一小段数据,通常由服务端通过 Set-Cookie 下发。

10.2 Session

服务端保存的会话信息。

10.3 Token

客户端保存并随请求携带的身份凭证。


11. HTTPS

HTTPS = HTTP + TLS

它解决的核心问题:

  1. 加密
  2. 身份认证
  3. 完整性保护

11.1 为什么 HTTPS 比 HTTP 安全

因为 HTTP 明文传输,而 HTTPS 会在传输层做加密和身份校验。


12. HTTP/1.1、HTTP/2、HTTP/3

12.1 HTTP/1.1

特点:

  1. 长连接
  2. 管道化理论存在但实践有限
  3. 仍有队头阻塞问题

12.2 HTTP/2

特点:

  1. 二进制分帧
  2. 多路复用
  3. 头部压缩
  4. 服务器推送历史上有过,但现实中价值有限

12.3 HTTP/3

特点:

  1. 基于 QUIC
  2. 不再依赖 TCP
  3. 更好地应对丢包和连接迁移

13. 长连接、短连接、Keep-Alive

13.1 短连接

一次请求响应后就断开。

13.2 长连接

多个请求复用同一个 TCP 连接。

13.3 Keep-Alive

HTTP/1.1 里通常默认支持连接复用。


14. 实战中的 HTTP 认知

在真实项目里,HTTP 最常和这些问题一起出现:

  1. 接口鉴权
  2. 跨域
  3. 缓存
  4. CDN
  5. 网关
  6. 代理和负载均衡

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 核心主线

  1. 请求响应模型
  2. 报文结构
  3. 方法与状态码
  4. HTTPS
  5. 版本演进

16.2 记忆口诀

先懂请求响应,再记头和状态;安全看 HTTPS,性能看版本演进。


17. 背诵口诀

HTTP 管请求响应,HTTPS 管安全,缓存和连接管理管性能,版本升级为了解决传输效率问题。