模块 02第 1 学期 · 基础9 海报条目

互联网究竟是怎么运作的

登录后可在不同设备间同步进度。在此之前,进度只保存在当前浏览器中。

为什么重要

大多数“玄学”生产 bug 其实是网络问题:DNS 变更还没生效、TLS 证书过期了、某个请求只对远方的用户很慢。你在脑子里画不出来的东西,就没法调试。

学习目标

  1. 追踪一个请求从浏览器到数据库再返回的全过程,说出每一跳。
  2. 解释 DNS 解析、TTL,以及为什么变更“需要时间”。
  3. 解释 TCP 与 UDP 的区别,以及 HTTP/2 和 HTTP/3 改变了什么。
  4. 正确配置 TLS,并加密内部流量。
  5. 正确地衡量延迟:看百分位数,而不是平均值。

课程内容

2.1 一个请求的一生

浏览器 → DNS 查询 → TCP(或 QUIC)连接 → TLS 握手 → CDN 边缘节点 → 反向代理 / 负载均衡 → 应用服务器 → 数据库 / 缓存 / 第三方 API → 返回。每一跳都会增加延迟,也都是一个故障点。

2.2 DNS (97)

  • 记录类型:A/AAAA(地址)、CNAME(别名)、MX(邮件)、TXT(验证、SPF、DKIM、DMARC)、CAA(哪些 CA 可以签发证书)。
  • TTL 控制缓存时长。要在迁移的前一天调低 TTL,而不是迁移过程中。
  • 常见故障:域名过期、CNAME 配错、缺少邮件相关记录(邮件进垃圾箱)、DNS 服务商宕机。

2.3 TCP 与 UDP (98),以及 HTTP 版本 (99)

  • TCP:可靠、有序;丢一个包,后面的全部卡住(队头阻塞,head-of-line blocking)。
  • UDP:不做任何保证,开销低;用于视频、语音、游戏、DNS 和 QUIC。
  • HTTP/1.1:每个连接同一时间只处理一个请求。
  • HTTP/2:在一条 TCP 连接上多路复用多个流;但仍有 TCP 层的队头阻塞。
  • HTTP/3:运行在基于 UDP 的 QUIC 之上;流相互独立,握手更快,网络切换(Wi-Fi 切到移动网络)时连接不断。通常 CDN 会免费帮你开启。

2.4 TLS,传输加密 (71, 73)

  • 最低 TLS 1.2,优先 TLS 1.3。证书自动化管理(Let's Encrypt,或你所用平台自带的)。
  • 配置 HSTS 头,让浏览器永远不会降级到 HTTP。
  • 内部流量也要加密(应用到数据库、服务到服务)。“反正在我们 VPC 里面”不算安全控制。
  • 数据库连接:强制 SSL(sslmode=require 或更严格)。

2.5 延迟、吞吐量、百分位数 (91 to 94)

  • 延迟:单个请求耗费的时间。吞吐量:每秒处理的请求数。
  • 永远不要报告平均值。报告 p50、p95、p99。100 个请求里慢 1 个听起来很少见,但一个要发起 20 次后端调用的页面,会有相当大比例的页面加载撞上 p99。这就是尾延迟放大效应。
  • 每个工程师都该知道的大致数字:同区域网络往返大约 1 ms 或更少;新加坡到美西往返大约 170 ms;一次 LLM 调用要好几秒。围绕最慢的那一跳来设计。

实验 2:追踪与测量

  1. 对你的域名运行 dig;记录每一条记录及其 TTL。添加 CAA,并检查邮件域名的 SPF/DKIM/DMARC。
  2. 从两个区域对你的应用运行 curl -w 计时(dns、connect、tls、ttfb、total)。
  3. 用在线 TLS 评分工具检查你的 TLS 配置;修到 A 级。
  4. 用 k6 分别以 10、50、100 个虚拟用户对一个端点做压测;画出 p50/p95/p99 图表。

完成标准

AI 提示词包

  • “添加计时埋点,为每个对外 HTTP 调用记录 DNS、connect 和 TTFB 耗时。”
  • “根据配置文件,逐跳解释这个应用的请求路径。标出任何没有 TLS 的一跳。”