网络学习路线总览
webLearning 浅讲网络、backendLearning 第 55 章把 TCP/TLS/HTTP 粗扫一遍——但真要深挖到 RFC 级,做网关、做中间件、扛 DDoS、调 P99,就得开一个独立系列。
这套教程的定位是"进阶补课":假设你会用 HTTP API、能写后端服务,但 不一定懂包怎么走、TCP 握手怎么实现、TLS 1.3 凭什么 1 RTT、QUIC 解决了什么、eBPF 能干什么。40 章把这些一次讲透。
一、为什么要"重新学一次网络"
日常开发:
fetch('https://api.example.com/orders')
↓
── 这一行后面发生了什么?
90% 的人答得出"DNS 解析、TCP 握手、TLS 握手、HTTP 请求"
但答不出:
✗ DNS 走 UDP 还是 TCP?递归解析每一跳怎么找上游?
✗ TCP 握手第一个 SYN 包到底有几字节?
✗ TLS 1.3 ClientHello 里 KeyShare 是怎么"猜算法"的?
✗ HTTP/2 的 stream 优先级在 Linux 内核哪一层处理?
✗ 同一个 TLS 连接复用,Session Ticket 和 PSK 区别?这些"会一点但说不清"的灰色地带,是性能瓶颈、诡异 bug、面试被卡的真正现场。
经验法则:网络是后端工程师天花板的最后一公里——业务代码 / 框架 / 算法都能学,网络这一层不下狠功夫永远摸不到。
二、四层模型 vs 七层模型:别迷信 OSI
教科书讲 OSI 七层:物理 / 数据链路 / 网络 / 传输 / 会话 / 表示 / 应用。实际工程中,99% 的协议按 TCP/IP 四层就够:
应用层 HTTP / DNS / SMTP / SSH / WebSocket / gRPC
─────────────────────
传输层 TCP / UDP / QUIC / SCTP
─────────────────────
网络层 IP(v4 / v6) / ICMP / IGMP
─────────────────────
链路层 Ethernet / WiFi / PPP / VLAN
─────────────────────
物理层 铜缆 / 光纤 / 无线电波会话层 / 表示层 在 TCP/IP 里被合到应用层——TLS 既不是会话层也不是表示层,实际上是"夹在传输和应用之间的第 4.5 层",不要套 OSI。
经验法则:面试问"OSI 七层"礼貌答完,工程讨论按 TCP/IP 四层 + TLS 中间层——清晰、对得上代码。
三、本系列内容地图
[01-05] 基础与心智模型
↓
┌────────────────────────────────────────┐
▼ ▼
[06-10] IP / 路由 / ICMP [27-29] DNS 体系
↓
[11-16] 传输层(UDP / TCP / 拥塞 / MPTCP)
↓
[17-21] TLS 与密码学(1.2/1.3/mTLS/PKI)
↓
[22-26] HTTP 演进(1.1/2/3/QUIC/WebSocket/WebRTC)
↓
┌────────────────────────────────────────┐
▼ ▼
[30-33] Linux 内核网络 [34-36] 反向代理 / LB / CDN
socket / epoll / io_uring / eBPF / DPDK
↓
[37-38] 安全与防御(WAF / DDoS / 渗透)
↓
[39-40] 抓包高级 + 压测 + 排障方法论40 章的产出目标:任何一种网络问题,你能定位到"是哪一层、哪个协议、哪个具体环节"——不再是"抖动了""慢了""不通"这种模糊报告。
四、技术栈与工具栈
| 类别 | 工具 |
|---|---|
| 抓包 | tcpdump / Wireshark / tshark / mitmproxy |
| 测试客户端 | curl / openssl s_client / nghttp / quiche-client |
| DNS | dig / drill / nslookup / dog |
| 路由 / ICMP | ping / traceroute / mtr / tracepath |
| socket / 网络栈 | ss / netstat / lsof / strace |
| 性能 / 压测 | iperf3 / netperf / wrk / h2load |
| eBPF | bcc / bpftrace / cilium |
| TLS 调试 | testssl.sh / sslscan / ssllabs |
| 代理 / LB | Nginx / Envoy / HAProxy |
| 可视化 | Wireshark I/O 图、Grafana 网络看板 |
经验法则:网络工程师的"必装"是 tcpdump + Wireshark + dig + curl + openssl + ss + mtr 这七件套——任何一台 Linux 上手就能调试,缺一个少一根肋骨。
五、网络心智的三个核心模型
1. "包"的视角
万物皆包。一次 HTTP 请求是几十个 IP 包(SYN / SYN+ACK / ACK / ClientHello / ...)的有序组合。会看包,网络才算入门。
2. "时序"的视角
T0 ─── DNS 查询 ───┐
├── DNS 解析(50ms)
T0 + 50ms ──────── ┘
┌── TCP 三次握手(1 RTT)
T0 + 100ms ────── │
├── TLS 握手(1 RTT 复用 / 2 RTT 全握)
T0 + 200ms ────── │
├── HTTP 请求 + 响应(0.5 RTT 内可能多包)
T0 + 250ms ────── ┘性能问题永远是某段时序里的瓶颈。不会画时序图,优化就是瞎拍。
3. "状态机"的视角
TCP / TLS / HTTP/2 / QUIC 都是复杂状态机。出 bug 时往往是"状态没切对":TIME_WAIT 没退、TLS Client/Server 状态错位、QUIC 连接迁移没生效。
经验法则:学网络协议永远先画状态机——三次握手、四次挥手、TLS 握手、HTTP/2 stream 状态——画一遍就懂了一半。
六、和已有系列的衔接
| 已有系列 | 重叠点 | 本系列怎么深挖 |
|---|---|---|
| webLearning(浅讲网络) | HTTP 状态码、Cookie | 帧 / 头压缩 / 优先级 / 多路复用 |
| backendLearning ch.55 | TCP/TLS/HTTP 调优 | 同样话题但展开到 RFC 细节 + Linux 内核 |
| backendLearning ch.32/60(微服务/Mesh) | mTLS / 服务发现 | 数据面 Envoy 内部 / SPIFFE / eBPF |
| backendLearning ch.45(对象存储) | CDN | 调度算法 / 边缘缓存策略 |
经验法则:重复不可怕,重复带新视角才是好教学。Backend 55 章告诉你"开 BBR";本系列告诉你"BBR 怎么建模带宽 / 跟 CUBIC 怎么混跑 / 怎么调 cwnd 上限"。
七、阅读姿势
1. 边读边抓包
每讲一个协议,自己抓一次包对照
tcpdump -i any -w t.pcap port 80
open t.pcap (Wireshark)
2. 读 RFC 节选
每章末尾给关键 RFC 链接,挑一两节看
面试时引用 RFC 编号瞬间专业感拉满
3. 配合实验
起一个 Nginx,改 SSL 配置,curl 看效果
起一个 Quiche / nghttp,看 HTTP/3
抓自己的真实流量观察
4. 查表式回看
常见踩坑、Checklist 这种结构化内容反复翻
出问题时按图索骥,而非从头翻八、容易踩的"伪深度"陷阱
很多人学网络停在"知道名词":
| 伪深度 | 真深度 |
|---|---|
| "TCP 握手是三次" | "三次的根本原因是消息可能丢,两次握不出双向确认" |
| "HTTP/2 多路复用" | "stream 0 是控制流;HEADERS 帧前必须有 PRIORITY 帧?HPACK 怎么避免 CRIME 攻击" |
| "TLS 1.3 比 1.2 快" | "把 ServerKeyExchange 合进 ServerHello,且禁掉了 RSA 密钥交换" |
| "BBR 比 CUBIC 好" | "BBR 在共享瓶颈链路下与 CUBIC 不公平,大流量场景挤掉对手" |
判断自己是否真懂:能不能给一个新人讲到他能复述。
九、本章 Checklist
| 项 | 说明 |
|---|---|
| ✅ TCP/IP 四层模型(非 OSI 七层) | 工程视角 |
| ✅ 装好 tcpdump + Wireshark + dig + curl + openssl + ss + mtr | 调试七件套 |
| ✅ 任意 HTTPS 请求能画"DNS+TCP+TLS+HTTP"时序 | 心智基础 |
| ✅ 知道 TCP 状态机至少 11 种状态 | 必修 |
| ✅ 装一份本地 Nginx,边读边抓包 | 实践基础 |
| ✅ RFC 编号能脱口而出几个(7540 / 8446 / 9000) | 行家信号 |
十、小结
网络这门学科最反直觉的地方是:它跨度大但没有"主线"——TCP 跟 DNS 没继承关系、HTTP/3 跟 HTTP/2 思路相反、TLS 是"插在协议栈中间的怪物"。只能一段一段啃。
记住三件事:
- 会抓包是入门门票——不会抓包,网络永远是"黑盒"
- 协议演进往往是"修复上一代的根本缺陷"——HTTP/2 修 1.1 的队头阻塞、HTTP/3 又修 HTTP/2 的 TCP 队头阻塞
- 任何"魔法般快"的优化都源于减少 RTT——这是网络优化的最大杠杆
下一章我们从"一个 HTTP 请求被发出去后,到底变成了几个包,每个包哪些字段"开始——协议栈与封装。