D
AI
学习工作台
8 周后端冲刺2026-05-222 分钟阅读

HTTP 与 HTTPS

HTTP/1.1/2/3、TLS 握手、Cookie 与 Session

8周冲刺week4HTTPHTTPSTLS记笔记标记疑惑

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):

  • ClientHello:支持的 cipher、key share
  • ServerHello + 证书 + 加密扩展
  • 双方 derive session keys
  • Application data
  • 证书校验:域名匹配、链信任、OCSP 吊销。

    Cookie / Session / JWT

    • Session:服务端 map[sessionID]user,Cookie 只带 ID。
    • JWT:Header.Payload.Signature,服务端只验签;难撤销需黑名单或短 TTL + refresh token。
    安全:HttpOnly 防 XSS 读 Cookie;Secure 仅 HTTPS;SameSite 防 CSRF。

    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 生产。回答时使用「场景 → 方案 → 结果 → 反思」四段式,体现工程成熟度。

    知识卡片

    问题

    HTTP/1.1 队头阻塞是什么?

    点击翻转查看答案

    答案

    同一 TCP 连接上多个请求串行响应,前一个大响应阻塞后续;可用多连接或 HTTP/2 多路复用缓解。

    问题

    HTTPS 握手大致做什么?

    点击翻转查看答案

    答案

    TLS:协商密码套件、证书校验身份、交换对称密钥(ECDHE),之后 HTTP 内容对称加密与完整性校验。

    问题

    Cookie 与 Session 区别?

    点击翻转查看答案

    答案

    Cookie 存客户端(SessionID);Session 状态存服务端;JWT 无状态把 claims 签名放客户端,需防篡改与过期。