1. HTTP 1.0 / 1.1 / 2.0 / 3.0 的区别?

🎯 面试要点

  • 队头阻塞两处:HTTP/1.1 应用层按序响应;TCP 层丢包重传阻塞——HTTP/3 用 UDP 解决后者
  • GET vs POST:语义差异(幂等/缓存/长度),不是"哪个更安全"
  • HTTP 方法幂等性:GET/PUT/DELETE 幂等,POST 不幂等

2. 常见 HTTP 状态码?

🎯 面试要点

  • 401 vs 403:401"你是谁"(认证),403"你是谁也不行"(授权)——经典区分
  • 301 vs 302:301 会更新书签缓存,302 每次重新请求
  • 504 vs 502:504 是网关等了太久没等到上游响应(上游超时),502 是上游返回了非法响应

3. HTTPS 为什么安全?TLS 握手过程?

要解决的三个问题:加密(防窃听)、完整性(防篡改)、身份认证(防冒充)。

TLS 1.2 握手(简化):

  1. 客户端 → 服务端:ClientHello(支持的加密套件、随机数 A)
  2. 服务端 → 客户端:ServerHello(选定套件、随机数 B)+ 证书(含公钥)
  3. 客户端校验证书(信任链 → CA 根证书)→ 生成预主密钥(pre-master secret)→ 用服务端公钥加密发送
  4. 双方用 A+B+C 算出对称会话密钥(非对称加密只用于密钥交换)
  5. 此后用对称加密(AES)传输数据(性能)

核心思想:非对称加密安全交换密钥 → 对称加密高效传输数据(混合加密)。

🎯 面试要点

  • 证书验证链:浏览器信任根 CA → 逐级验证签名 → 确认服务端身份,防中间人(MITM)
  • TLS 1.3 简化:1-RTT 建立(省略部分往返),密钥交换用 ECDHE(前向安全)
  • http → https 部署注意:证书绑定域名、TLS 终止在 Nginx/网关、HSTS

4. Cookie / Session / Token(JWT)?

JWT 结构
eyJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOjEwMH0.signture...

// Header(算法) . Payload(claims,base64) . Signature
// Signature = HMACSHA256(header + "." + payload, 密钥)
// 服务端验签即可确认内容未被篡改(无需查库)

🎯 面试要点

  • Session 与 JWT 的取舍:服务端可控制(Session)vs 无状态扩展(JWT)
  • 安全细节:Cookie 加 HttpOnly(防 XSS 偷)、SameSite(防 CSRF)、JWT 过期时间要短 + refresh token
  • SSO/网关鉴权场景用 JWT 主流

🎤 常见面试追问

  1. HTTP 1.1 的队头阻塞是什么?HTTP/2 怎么解决的?——1.1 一个连接上响应必须按请求顺序返回(前一个慢后面全等);HTTP/2 二进制分帧 + 多路复用,一个连接并发多个流(应用层解决;TCP 层丢包仍阻塞,所以有 HTTP/3 QUIC)。
  2. HTTPS 为什么用混合加密?——非对称加密(RSA/ECDHE)安全但慢,只用来安全交换对称密钥;之后用对称加密(AES)传数据,又快又安全。
  3. 证书的作用是什么?——把"公钥 + 域名"绑定并让 CA 签名背书,解决"怎么安全拿到对方公钥"(防中间人冒充)。浏览器验证证书链信任根 CA。
  4. Session 和 JWT 的区别?——Session:服务端存状态(多实例要共享 Redis),可主动踢下线;JWT:无状态(签名防篡改、自带信息),天然分布式,但无法主动失效、体积大。
  5. 401 和 403 的区别?——401 未认证(你是谁?);403 已认证但没权限(你是谁都不行)。

📖 名词解释(本页术语)

术语 大白话解释
HTTP网页/接口的通信协议:请求(方法+路径+头+体)→ 响应(状态码+头+体)。跑在 TCP 上。
HTTPSHTTP + TLS 加密:防窃听/篡改/冒充(443 端口)。
TLS 握手建立加密通道的过程:协商算法 → 服务端发证书 → 客户端验证 → 交换密钥 → 开始加密通信。
对称加密 / 非对称加密对称:同一把钥匙加解密(快,AES);非对称:公钥加密私钥解密(慢但安全,RSA)。HTTPS 两者都用(混合加密)。
状态码响应结果的数字:2xx 成功、3xx 重定向、4xx 客户端错、5xx 服务端错。
Cookie / SessionCookie 客户端存的小数据(自动携带);Session 服务端存会话,sessionId 放 Cookie。
JWT无状态令牌:Header.Payload.Signature 三段,签名防篡改,服务端验签即可不查库。
多路复用(HTTP/2)一个 TCP 连接上并发传输多个请求/响应流,解决队头阻塞。
QUIC(HTTP/3)基于 UDP 的传输协议:0-RTT、连接迁移、彻底无队头阻塞。
⚠️ 本页面由 AI 生成,内容仅供参考,请以官方文档和实际源码为准。