HTTP 基础
HTTP 是 请求-响应 应用协议,无状态。方法:GET(幂等)、POST、PUT、PATCH、DELETE。状态码:2xx 成功、3xx 重定向、4xx 客户端、5xx 服务端。
GET /api/users HTTP/1.1
Host: example.com
Accept: application/json
版本演进
| 版本 | 特点 | |------|------| | HTTP/1.1 | 持久连接、Chunked、Host 头 | | HTTP/2 | 二进制分帧、多路复用、HPACK 头压缩 | | HTTP/3 | QUIC over UDP,解决传输层队头阻塞 |
HTTP/2 多路复用仍可能 TCP 层队头阻塞(丢包阻塞整连接),HTTP/3 用独立 stream。
缓存与条件请求
Cache-Control: max-age、ETag / If-None-Match 304、CDN 边缘缓存。面试系统设计常问 静态资源缓存策略。
HTTPS 与 TLS
明文 HTTP 风险:窃听、篡改、冒充。TLS 提供 机密性 + 完整性 + 身份(证书 CA 链)。
简化握手(TLS 1.3):
证书校验:域名匹配、链信任、OCSP 吊销。
Cookie / Session / JWT
- Session:服务端 map[sessionID]user,Cookie 只带 ID。
- JWT:Header.Payload.Signature,服务端只验签;难撤销需黑名单或短 TTL + refresh token。
REST 与 API 设计
资源名词、幂等 PUT、分页 cursor、限流 429、版本 /v1/。与 week07-microservices-design 网关鉴权衔接。
Go 实践
resp, err := http.Get(url)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
Server:http.Handler 中间件链(logging、auth、recover)。
站内 /chapters/computer-network 可配合 Lab。上一篇 week04-tcp-udp 提供传输层基础。
面试题
GET 与 POST 区别(语义、缓存、body);HTTPS 一定安全吗(证书错误、中间人若忽略警告);HTTP/2 Server Push 现状(少用,preload 替代)。
实战巩固与面试表达
本篇属于 8 周冲刺 week04-http-https 主题。复习时先闭卷回答 frontmatter 中三张 flashcard,再展开口述两个「为什么」:为什么这种方案能 work、边界失败时如何降级。与相邻章节对照:算法篇强调复杂度与模板,Go 篇强调工程默认写法,中间件篇强调线上故障案例。
动手与自检清单
用 25 分钟限时做 1 道相关练习题或画出一张架构/数据结构示意图;用 5 分钟写 STAR 片段说明你在项目里是否用过类似技术。记录 3 个面试追问及你的标准答法,存入 /zh/notebook/master-plan 笔记。若某点不熟,回到对应 /chapters 交互 Lab 重新走一遍流程,比死记卡片更有效。
易错点提醒
避免只背名词不会画图;避免只说优点不谈 trade-off(性能、一致性、运维成本至少提一项);避免把学习 Demo 说成百万 QPS 生产。回答时使用「场景 → 方案 → 结果 → 反思」四段式,体现工程成熟度。