Skip to content

网络学习路线总览

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
DNSdig / drill / nslookup / dog
路由 / ICMPping / traceroute / mtr / tracepath
socket / 网络栈ss / netstat / lsof / strace
性能 / 压测iperf3 / netperf / wrk / h2load
eBPFbcc / bpftrace / cilium
TLS 调试testssl.sh / sslscan / ssllabs
代理 / LBNginx / 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.55TCP/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 是"插在协议栈中间的怪物"。只能一段一段啃

记住三件事:

  1. 会抓包是入门门票——不会抓包,网络永远是"黑盒"
  2. 协议演进往往是"修复上一代的根本缺陷"——HTTP/2 修 1.1 的队头阻塞、HTTP/3 又修 HTTP/2 的 TCP 队头阻塞
  3. 任何"魔法般快"的优化都源于减少 RTT——这是网络优化的最大杠杆

下一章我们从"一个 HTTP 请求被发出去后,到底变成了几个包,每个包哪些字段"开始——协议栈与封装

最后更新: