Skip to content

HTTP 协议

HTTP 版本演进、请求响应结构、状态码、常用头。

Updated View as Markdown
For humans

HTTP 协议

HTTP 是后端每天打交道的协议。面试主线:版本演进差异、请求响应结构、状态码语义。

版本演进

版本 核心变化 问题
HTTP/1.0 基本请求响应 每请求一个连接
HTTP/1.1 keep-alive、管道、Host 头 队头阻塞(一个响应慢全堵)
HTTP/2 多路复用、二进制分帧、头部压缩、服务端推送 单连接队头阻塞(TCP 层)
HTTP/3 QUIC(UDP 上实现可靠+加密) 生态迁移中

队头阻塞是演进主线:

  • 1.1:一个连接同一时刻一个请求(管道化也受响应顺序限制)
  • 2.0:一个连接多路复用(解决了应用层),但 TCP 丢包重传仍阻塞整个连接
  • 3.0:QUIC 在 UDP 上做多流独立,丢包只影响自己的流(见 UDP 与 QUIC 篇)

面试话术:HTTP/2 解决应用层队头阻塞,HTTP/3 解决传输层队头阻塞

请求与响应

请求: 方法 路径 版本        GET /api/users HTTP/1.1
      头                    Host: example.com
                            Content-Type: application/json
      空行
      体                    {"name": "alice"}

响应: 版本 状态码 原因       HTTP/1.1 200 OK

      空行

状态码速记

类别 含义 常考
2xx 成功 200 OK、201 Created、204 No Content
3xx 重定向 301 永久、302 临时、304 Not Modified(缓存)
4xx 客户端错误 400 参数错、401 未认证、403 无权限、404 不存在、429 限流
5xx 服务端错误 500 内部错误、502 网关错、503 服务不可用、504 网关超时

常考区分:401 vs 403(没登录 vs 没权限)、301 vs 302(永久 vs 临时,SEO 语义)、502 vs 504(上游拒绝 vs 上游超时)。

常用头

作用
Content-Type / Content-Length 体格式与长度
Cache-Control 缓存策略(max-age、no-cache)
Connection: keep-alive / close 连接复用
Cookie / Set-Cookie 会话状态
Authorization 认证凭据(Bearer token)
CORS 系列 跨域(见 FastAPI 篇)

面试追问

  1. HTTP/2 解决了什么? 多路复用(一个连接并发请求)、二进制分帧、头部压缩。但 TCP 层队头阻塞还在
  2. 队头阻塞是什么? 一个包阻塞整条链路:1.1 是响应顺序,2.0 是 TCP 丢包重传。3.0 用 QUIC 多流解决
  3. 401 和 403? 401 未认证(去登录),403 已认证但没权限
  4. 304 是什么? 协商缓存:资源没变,服务器返回 304 不带体,客户端用本地缓存
  5. keep-alive 的意义? 复用 TCP 连接省握手开销。1.1 默认开启,高并发服务的基础
Navigation

Type to search…

↑↓ navigate↵ selectEsc close