计算机网络

网络的本质问题只有一个:如何让两台不在同一地方的机器可靠地交换信息。

这个问题的解决方案,是过去七十年里工程师在物理约束、经济约束和政治约束下层层叠加的结果。以太网解决了局域网的通信;IP 解决了跨网络的寻址;TCP 解决了不可靠链路上的可靠传输;DNS 解决了”名字”到”地址”的映射;TLS 解决了不信任网络上的身份验证和加密。每一层的存在都有其历史原因,每一层的设计都留有代价。

这个系列分两个层次:

基础层:核心协议与原理,十年甚至二十年内不会有根本性变化。理解这些是理解所有上层技术的前提。

前沿层:当前社区的主流范式与新兴技术。这部分会随时间更新,反映网络工程领域正在发生的演变。


一、目录

本系列共 23 篇文章,分两层:基础层(01-12)覆盖核心协议,稳定十年以上;前沿层(13-23)覆盖当前主流范式。

40-networking/
├── 00-networking-MOC.md                                       ← 本文件

├── ── 基础层(01-12)──────────────────────────────────────── # 核心协议,稳定十年以上
├── 01-网络分层:协议为什么要分层.md                           ← OSI vs TCP/IP / 封装解封装 / 层间无知
├── 02-链路层与以太网:局域网的通信基础.md                     ← MAC 地址 / ARP / 交换机 / VLAN
├── 03-IP 与子网:全球寻址的设计.md                            ← CIDR / IPv4 vs IPv6 / ICMP / 分片
├── 04-NAT:IPv4 耗尽的补丁与代价.md                          ← SNAT·DNAT / 端对端原则的破坏
├── 05-路由:数据包如何找到目的地.md                           ← 最长前缀匹配 / OSPF / BGP / Anycast
├── 06-UDP:无连接传输的设计哲学.md                            ← 极简设计 / 实时场景的选择逻辑
├── 07-TCP:可靠传输的完整机制.md                              ← 三次握手 / 拥塞控制(BBR)/ 性能代价
├── 08-DNS:互联网的命名系统.md                                ← 解析链 / 记录类型 / DNSSEC / 脆弱性
├── 09-HTTP:Web 协议的演进.md                                  ← HTTP/1.1 / HTTP/2 多路复用 / 缓存机制
├── 10-TLS:在不信任的网络上建立信任.md                        ← PKI / TLS 1.3 握手 / Let's Encrypt
├── 11-WebSocket:长连接与实时通信.md                          ← HTTP 升级握手 / 全双工 / 适用场景
├── 12-网络安全基础:防火墙、DDoS 与证书管理.md                ← 状态检测防火墙 / DDoS 层次 / 证书生命周期

└── ── 前沿层(13-23)──────────────────────────────────────── # 主流范式与演进方向
    ├── 13-QUIC 与 HTTP/3:重新设计传输层.md                   ← 队头阻塞 / 0-RTT / 连接迁移
    ├── 14-CDN:内容分发与边缘缓存.md                          ← Anycast + PoP / 缓存策略 / 厂商对比
    ├── 15-边缘计算:把逻辑推向数据所在的地方.md               ← 边缘函数 / Workers / 适用场景与约束
    ├── 16-Cloudflare:现代网络基础设施的范式.md               ← DDoS 防护 / R2·Workers / Zero Trust 产品线
    ├── 17-Zero Trust 网络架构:身份优先的安全模型.md          ← BeyondCorp / ZTNA / 设备证书 + 策略引擎
    ├── 18-WireGuard 与 Tailscale:身份优先的组网.md           ← 协议简化 / Mesh 拓扑 / Subnet Router
    ├── 19-WebRTC 与 NAT 穿透:P2P 通信的工程实现.md          ← STUN / TURN / ICE / SDP
    ├── 20-容器网络:Kubernetes 的网络模型.md                  ← CNI / Service / NetworkPolicy / Ingress
    ├── 21-eBPF 网络:可编程内核网络.md                        ← XDP·TC / Cilium / Hubble / 替代 kube-proxy
    ├── 22-gRPC 与现代 RPC:微服务通信协议.md                  ← Protobuf / HTTP/2 多路复用 / 服务发现
    └── 23-流量编排:从反向代理到服务网格.md                   ← Nginx / API 网关 / Istio / eBPF 服务网格

概念线索

线索一:分层是复杂性的管理方式

OSI 模型和 TCP/IP 模型的本质不是”七层”或”四层”这个数字,而是一种哲学:每一层只对下层的接口负责,对下层的实现保持无知。HTTP 不关心 TCP 怎么保证可靠性,TCP 不关心 IP 怎么选路由,IP 不关心以太网怎么传输比特。这种无知是有意设计的——它让每一层可以独立演进,让 HTTP/3 能换掉 TCP 而不改动 HTTP 语义。

贯穿文章:01-网络分层05-UDP06-TCP08-HTTP09-TLS13-QUIC 与 HTTP/3

线索二:可靠性是构造出来的,不是天然存在的

物理链路会丢包,路由器会丢弃报文,网络会拥塞。TCP 的三次握手、确认、重传、拥塞控制,TLS 的证书验证和密钥协商,DNS 的冗余权威服务器——都是在不可靠的基础上用协议构造出”看起来可靠”的幻觉。理解这个代价,才能理解为什么 QUIC 要重新设计传输层,为什么 UDP 在某些场景反而更合适。

贯穿文章:05-UDP06-TCP09-TLS13-QUIC 与 HTTP/319-WebRTC 与 NAT 穿透

线索三:NAT 是一个补丁,但补丁成了基础设施

IPv4 地址不够用,NAT 是临时方案。但这个”临时”持续了三十年,彻底改变了网络的拓扑假设:绝大多数设备不再有公网 IP,P2P 通信变得困难,端对端原则被打破。所有”打洞”技术(STUN/TURN/ICE)、所有现代 VPN 方案(WireGuard、Tailscale)都是在 NAT 这个约束下工作的。理解 NAT,才能理解这些技术为什么存在。

贯穿文章:03-IP 与子网04-NAT18-WireGuard 与 Tailscale19-WebRTC 与 NAT 穿透

线索四:从中心到边缘

早期互联网:内容在少数服务器上,用户连接过来取数据。CDN 的出现把内容复制到距离用户更近的节点。Cloudflare Workers 把计算也推到边缘。eBPF 把网络策略推到了内核里。这条线索是”把逻辑推向数据存在的地方”,而不是”把数据搬到逻辑所在的地方”,是过去二十年网络架构演进最重要的方向之一。

贯穿文章:14-CDN 与边缘缓存15-边缘计算16-Cloudflare21-eBPF 网络

线索五:从 IP 优先到身份优先

传统网络安全:你在公司内网 = 你是可信的(VPN 接入内网即可)。零信任的出发点:网络位置不代表信任,身份才是访问控制的基础。这个范式转变催生了 BeyondCorp(Google)、ZTNA、以及 Tailscale 这类用设备身份替代 IP 地址的组网工具。

贯穿文章:17-Zero Trust 网络架构18-WireGuard 与 Tailscale16-Cloudflare


基础层

核心协议与原理,稳定十年以上。

网络模型

链路层

网络层

传输层

应用层

  • 08-DNS:互联网的命名系统 完整解析链(根服务器 → TLD → 权威),递归与迭代查询,DNS 记录类型(A/AAAA/CNAME/MX/TXT/NS),TTL 与缓存,DNSSEC,DNS 作为关键基础设施的脆弱性

  • 09-HTTP:Web 协议的演进 HTTP/1.1 的设计决策(无状态、持久连接、管道化),HTTP/2 的多路复用与头部压缩,HTTP/3 换掉 TCP 的原因(见前沿层 QUIC 篇),状态码语义,缓存机制(Cache-Control、ETag)

  • 10-TLS:在不信任的网络上建立信任 PKI 与证书链,CA 的信任模型,TLS 1.3 握手过程,对称加密与非对称加密的分工,证书管理(Let’s Encrypt、自动化续期),HSTS

  • 11-WebSocket:长连接与实时通信 HTTP 升级握手,全双工通信,与轮询/长轮询/SSE 的对比,适用场景(实时通知、在线协作、游戏)

安全基础


前沿层

当前社区的主流范式,随时间持续更新。

传输层演进

  • 13-QUIC 与 HTTP/3:重新设计传输层 TCP 的队头阻塞问题,QUIC 基于 UDP 重新实现可靠传输,0-RTT 握手,连接迁移(换 IP 不断线),与 HTTP/2 的性能对比,当前部署现状

内容分发与边缘

  • 14-CDN:内容分发与边缘缓存 CDN 的历史与核心机制(Anycast + PoP),缓存策略(回源、缓存键、Vary),动态内容加速(TCP 优化、TLS 卸载),主要厂商对比(Cloudflare、Akamai、Fastly、AWS CloudFront)

  • 15-边缘计算:把逻辑推向数据所在的地方 从 CDN 静态缓存到边缘函数(Cloudflare Workers、Fastly Compute),边缘的约束(无持久化、冷启动、运行时限制),适用场景(A/B 测试、地理路由、认证卸载)

现代网络基础设施

  • 16-Cloudflare:现代网络基础设施的范式 Anycast 网络架构,DDoS 防护的实现原理,R2(对象存储)、Workers(边缘计算)、Pages、D1,Zero Trust 产品线(Access、Tunnel、WARP),Magic Transit(IP 层保护),1.1.1.1 与 DNS-over-HTTPS

  • 17-Zero Trust 网络架构:身份优先的安全模型 BeyondCorp(Google)的起源,ZTNA 的核心原则(永不信任、持续验证),与传统 VPN 的对比,实现路径(设备证书 + 身份提供商 + 策略引擎),主要产品(Cloudflare Access、Zscaler、Netskope)

新型组网

  • 18-WireGuard 与 Tailscale:身份优先的组网 WireGuard 的协议简化(与 IPSec/OpenVPN 对比),Tailscale 的控制平面设计(coordination server + 去中心化数据面),Mesh 网络拓扑,MagicDNS,Subnet Router,与传统 VPN 的使用场景对比

  • 19-WebRTC 与 NAT 穿透:P2P 通信的工程实现 STUN(Session Traversal Utilities for NAT),TURN(中继服务器),ICE(候选地址协商),SDP(会话描述),WebRTC 在浏览器中的应用,Tailscale 借鉴 WebRTC 打洞机制的方式

容器与云原生网络

  • 20-容器网络:Kubernetes 的网络模型 Pod 网络模型(每个 Pod 有独立 IP),CNI 插件机制,Service 的 kube-proxy 实现(iptables/ipvs 模式),ClusterIP/NodePort/LoadBalancer,NetworkPolicy,Ingress 控制器

  • 21-eBPF 网络:可编程内核网络 eBPF 在网络中的应用(XDP、TC、socket filter),Cilium 替代 kube-proxy 的原理,eBPF 用于网络可观测性(Hubble),与传统 iptables 的性能对比

现代 API 与 RPC

  • 22-gRPC 与现代 RPC:微服务通信协议 gRPC 基于 HTTP/2 的多路复用,Protobuf 作为接口契约,与 REST 的取舍(类型安全 vs 通用性),gRPC-Web(浏览器支持),gRPC 流式通信,服务发现与负载均衡

流量编排

  • 23-流量编排:从反向代理到服务网格 反向代理的历史角色(Nginx),负载均衡算法(轮询/最少连接/一致性哈希),API 网关的职责,现代反向代理(Caddy、Traefik 的自动化证书),服务网格的 Sidecar 模式(Envoy/Istio),eBPF 模式(Cilium Service Mesh)取代 Sidecar 的趋势

阅读路径

路径一:从零开始的网络基础

01(分层模型,建立心智框架)
  → 02(链路层,本地网络如何工作)
  → 03(IP,全球寻址)
  → 04(NAT,为什么大多数机器没有公网 IP)
  → 05(路由,数据包如何跨网络)
  → 06(UDP)→ 07(TCP)
  → 08(DNS)→ 09(HTTP)→ 10(TLS)

路径二:后端工程师的网络必知

07(TCP 完整机制)
  → 09(HTTP 演进)
  → 10(TLS)
  → 08(DNS)
  → 13(QUIC/HTTP/3)
  → 20(容器网络)
  → 23(流量编排)

路径三:理解现代网络安全

04(NAT,理解网络边界)
  → 12(网络安全基础)
  → 17(Zero Trust)
  → 18(Tailscale)
  → 16(Cloudflare 安全产品)

路径四:云原生与基础设施

20(容器网络)
  → 21(eBPF 网络)
  → 23(流量编排与服务网格)
  → 13(QUIC,理解 HTTP/3 在云原生中的应用)

路径五:CDN 与边缘计算方向

14(CDN 原理)
  → 15(边缘计算)
  → 16(Cloudflare 产品体系)
  → 13(QUIC,Cloudflare 的核心技术之一)
  → 21(eBPF,Cloudflare 的网络数据面)

与其他系列的关联

  • 11-网络:Linux 的网络模型 — Linux 视角的网络实现(socket、Netfilter、网络命名空间),是本系列协议原理的操作系统实现层
  • T3-网络专题 — Linux 防火墙(iptables/nftables)、容器网络、WireGuard 配置、DNS 排查的实操手册
  • 00-hardware-MOC — 物理层之下:网卡、总线、PCIe 互联,是链路层的硬件基础

暂存内容

以下目录为原有笔记,内容已被新结构覆盖,后续整理时决定去留:

  • 10-fundamentals/ — 原网络基础笔记
  • 20-transport/ — 原 TCP 笔记
  • 30-dns/ — 原 DNS 笔记
  • 40-services/ — 原服务笔记
  • 50-cdn/ — 原 CDN 笔记
  • 60-reverse-proxy/ — 原反向代理笔记