计算机网络:从物理层到 HTTP/3 的全栈协议与排查
0. 元信息
- 主题路径:
docs/topics/network/README.md - 主分类:计算机基础
- 辅助分类:安全与可靠性
- 适合对象:会用 Linux 命令行,想系统理解网络并处理线上故障的开发者
- 建议周期:12~16 周(每周 8~12 小时,至少一半时间用于实验)
- 前置知识:无;会安装软件、读日志和运行命令即可
- 最终目标:能从线缆、帧、IP、TCP、TLS 一路解释到 HTTP/3,并用 Wireshark、tcpdump、ss、mtr 和 eBPF 给生产问题找证据
1. 学习路线
物理介质与 Ethernet
→ IP、CIDR、路由、ICMP
→ TCP、UDP、拥塞控制
→ DNS 与命名
→ TLS、证书与 HTTPS
→ HTTP/1.1、HTTP/2、HTTP/3
→ 协议状态机与兼容设计
→ 抓包、过滤与解密
→ 生产网络排障与 eBPF
我们按报文真实经过的路径学。每一层都抓包。先说明观察点,再下结论。
2. 阶段周数分配
| 阶段 | 12 周方案 | 16 周方案 | 备注 |
|---|---|---|---|
| 1. 物理与链路层 | 1 | 1.5 | Ethernet、ARP、VLAN、Wi-Fi |
| 2. TCP/IP 栈 | 1.5 | 2 | IPv4/IPv6、CIDR、路由、ICMP |
| 3. TCP 与 UDP | 1.5 | 2 | 状态机、可靠传输、拥塞控制 |
| 4. DNS | 1 | 1.25 | 递归、缓存、DNSSEC、DoH/DoT |
| 5. TLS 与 HTTPS | 1.5 | 2 | TLS 1.2/1.3、PKI、ALPN |
| 6. HTTP/1.1~HTTP/3 | 1.5 | 2 | 帧、复用、QUIC、QPACK |
| 7. 协议设计 | 1 | 1.25 | FSM、编码、协商、兼容 |
| 8. 抓包与协议分析 | 1.5 | 2 | pcap、BPF、Wireshark、tshark |
| 9. 排障与综合项目 | 1.5 | 2 | 指标、实验、报告、eBPF |
12 周方案节奏紧。16 周方案多出的时间用来重做实验和制造故障,不用来囤课。
3. 九阶段表
| 阶段 | 核心知识 | 实践产出 | 可观察学会标准 |
|---|---|---|---|
| 1. 线缆到帧 | 双绞线、光纤、MTU、MAC、Ethernet、ARP、VLAN、交换 | ARP/ICMP pcap 与二层拓扑 | 能解释广播、未知单播、VLAN tag 和 MTU;不把 MAC 当跨网段地址 |
| 2. IP 与路由 | IPv4/IPv6、CIDR、最长前缀、TTL、ICMP、NAT、PMTUD | 三跳 namespace 拓扑 | 能算子网并用 ip route get、traceroute 定位路径;不把 ICMP 限速当真实丢包 |
| 3. 传输层 | 五元组、TCP 头、握手挥手、重传、rwnd/cwnd、UDP、QUIC | 一次完整 TCP 生命周期 | 能从 seq/ack/flags 还原会话;区分应用慢、接收窗口小和拥塞窗口受限 |
| 4. DNS | 根/TLD/权威/递归、RR、TTL、负缓存、DNSSEC、加密 DNS | dig +trace 与 DNS pcap | 能区分 NXDOMAIN、SERVFAIL、超时和缓存未过期;不只改 /etc/resolv.conf 猜问题 |
| 5. TLS | AEAD、ECDHE、TLS Record、1.2/1.3、X.509、PKI、SNI、ALPN | 证书链与握手报告 | 能判断证书、协议、CipherSuite 或网络在哪一步失败;知道加密不等于隐藏元数据 |
| 6. HTTP | 方法、状态码、缓存、1.1 keep-alive、h2 帧/HPACK、h3/QUIC/QPACK | 三版 HTTP 对比 | 能解释应用层与传输层队头阻塞;用 ALPN、stream id 和 QUIC Connection ID 证明版本 |
| 7. 协议设计 | 分层、网络字节序、TLV/varint、FSM、协商、未知字段、滚动升级 | 一份迷你协议 RFC | 能说明 framing、超时、不变量和兼容策略;能处理半包、超长字段和降级 |
| 8. 包分析 | 抓包点、pcap/PCAPNG、BPF、display filter、重组、TLS key log、tshark | 可复现分析命令集 | 能解释 capture loss、offload 和时钟偏差;不把 Wireshark 标色当根因 |
| 9. 生产排障 | RED/USE、RTT、重传、队列、conntrack、socket、eBPF、变更验证 | HTTPS 全链路分析报告 | 能用时间线和多处证据收敛根因,并说明未知项、修复方法和验证结果 |
关键陷阱有三个:分层模型不是实际代码调用栈;单个抓包点看不到全网;相关性不能替代因果实验。
4. 第一周任务
Day 1 运行约定:使用 Linux shell。安装
iproute2、ethtool、tcpdump、Wireshark/tshark、dig、curl、openssl、mtr。抓包需要 root、CAP_NET_RAW或正确配置的 dumpcap 权限。所有命令记录版本、接口、时间和目标。
| 日 | 任务 | 当天交付 |
|---|---|---|
| Day 1 | 运行 ip -br link、ip -br addr、ip route、ethtool;画本机到默认网关的路径 | 环境清单、接口表、运行约定 |
| Day 2 | 用 tcpdump -ni any -e arp or icmp 抓 ARP 与 ping | 带 MAC、IP、EtherType 标注的 pcap |
| Day 3 | 手算 /24、/27、/30;运行 ip route get <target> | 子网计算和实际路由命中 |
| Day 4 | 抓 TCP 三次握手,标 seq、ack、flags、window、MSS | TCP 握手时序图 |
| Day 5 | 运行 dig +trace example.com,抓 UDP/53 | DNS 分层解析图 |
| Day 6 | 运行 openssl s_client -connect example.com:443 -servername example.com -alpn h2,http/1.1 与 curl -v | TLS/HTTP 关键消息表 |
| Day 7 | 步骤 A:抓一条最小 HTTPS 请求;步骤 B:补齐 DNS 失败、拒绝连接、TLS 主机名错误、HTTP 5xx 四类异常 | pcap、命令、预期/实际输出、第一版报告 |
Day 7 步骤 A 只求链路完整:DNS → TCP → TLS → HTTP。步骤 B 每次只改变一个条件。严格过滤和自动化放到四类异常都跑通后。
5. 阶段通用验收
- 不看答案画出本阶段主要报文头或状态机;
- 用自己的话说清它解决什么问题、在哪一层生效、失败时有什么信号;
- 保存原始命令、版本、抓包位置、pcap 和关键输出;
- 测试正常、超时、拒绝、丢包或损坏四类路径;
- 至少准备 3 组可重复实验,写出预期与实际结果;
- 记录 RTT、重传、吞吐、窗口、状态码等可量化指标;
- 能修改网络条件或服务配置,再用相同观测方法验证变化。
6. 最终验收
- 独立画出 Ethernet、IPv4、TCP、DNS、TLS 1.3、HTTP/2 与 QUIC 的关键结构或时序;
- 完成至少 30 个实验。每个子主题不少于 2 个,抓包与排障合计不少于 8 个;
- 制造并定位至少 8 类故障:DNS、路由、MTU、SYN、重传、证书、ALPN、HTTP 服务端延迟;
- 完成 1 个综合项目,交付 pcap/PCAPNG、指标、时间线、结论、修复和验证;
- 能用 15 分钟讲清浏览器发起 HTTPS 请求的全链路,以及 HTTP/3 改了什么。
7. 综合项目
首选:用 Wireshark + tcpdump 抓一次完整 HTTPS 请求并产出全链路分析报告。
报告必须覆盖:DNS 查询、TCP 或 QUIC 建连、TLS 握手、证书链、ALPN、HTTP 请求/响应、各阶段耗时、异常标记、抓包边界、隐私脱敏。我们要保存原始 pcap 和可重复命令。结论必须指向包号、时间戳或指标。
备选:自建最小 HTTP/3 服务。
用 Caddy、nginx-quic 或 quiche 起一个静态服务。用 curl --http3-only、Wireshark 和服务日志验证 QUIC、TLS 1.3、ALPN h3 与请求响应。
备选:用 eBPF 编写连接慢响应定位器。
跟踪 connect、TCP retransmit、socket RTT 或服务端 accept 延迟。输出连接五元组、时间戳、延迟阶段和丢事件统计。优先用现成 bpftrace/BCC 示例改造,再决定是否写 CO-RE 程序。
任何项目都要包含:
- 需求与成功标准;
- 网络拓扑、抓包点和工具选择理由;
- 协议时序与指标定义;
- 可重复命令或模块化源码;
- 正常、超时、拒绝、丢包/损坏测试;
- 环境、权限、清理和脱敏说明;
- README 与原始证据索引;
- 结论、限制、修复和验证记录。
8. 推荐开源资料
| 角色 | 资料 | 许可证 / 可访问性 | 用法 |
|---|---|---|---|
| 交互入门 | Beej’s Guide to Network Programming | CC BY-NC-ND 3.0 | 配合 socket 小程序理解 TCP/UDP |
| 课程与实验 | Stanford CS144 | 仓库逐项确认 LICENSE | 自己实现网络栈前先完成抓包路线 |
| Linux 工具 | iproute2 | GPL-2.0 | 查 ip、ss、tc 的实际行为 |
| 包分析 | Wireshark | GPL-2.0,文档公开 | 看协议树、Expert Info、display filter |
| 采集过滤 | tcpdump/libpcap | BSD 风格许可证 | 学 capture filter、pcap 与命令行采集 |
| 性能观测 | bpftrace、BCC | Apache-2.0 | 从现成工具理解内核网络事件 |
| HTTP/2 | nghttp2 | MIT | 查看帧、流和压缩行为 |
| QUIC/HTTP/3 | quiche | BSD-2-Clause | 对照 QUIC/HTTP/3 实现与服务端实验 |
默认顺序:RFC 只读当前实验所需章节 → 抓包 → 对照 Wireshark 字段 → 制造单变量故障 → 看 Linux 指标 → 写结论。复制代码前再检查目标仓库当前 LICENSE。
9. 学习资料汇聚(v0.3 自包含)
本节由本计划生成。链接指向原始材料或作者公开内容。标准会更新,实验记录必须写明版本和日期。
9.1 背景与动机
计算机网络来自一个简单约束:不同机器要在不可靠、异构、会拥塞的链路上通信。分组交换让链路可共享。分层让每一代链路、主机和应用能独立演进。
ARPANET、TCP/IP、DNS、Web、TLS、HTTP/2 和 QUIC 是这条线上的关键节点。今天的生产问题也沿着这条线出现。页面慢可能是 DNS、路由、丢包、TCP、证书、服务端队列或浏览器协议选择。学会读 wire evidence,猜测会少很多。
9.2 概念地图
flowchart LR
Medium[线缆 / 光纤 / Wi-Fi] --> Ethernet[Ethernet / 802.11]
Ethernet --> IP[IPv4 / IPv6]
IP --> ICMP[ICMP / 路由 / PMTUD]
IP --> TCP[TCP]
IP --> UDP[UDP]
DNS[DNS] --> UDP
DNS --> TCP
TCP --> TLS[TLS 1.2 / 1.3]
UDP --> QUIC[QUIC]
TLS --> HTTP1[HTTP/1.1]
TLS --> HTTP2[HTTP/2]
QUIC --> HTTP3[HTTP/3]
PCAP[tcpdump / Wireshark] -.观察.-> Ethernet
PCAP -.观察.-> IP
PCAP -.观察.-> TCP
PCAP -.观察.-> TLS
EBPF[eBPF / socket metrics] -.观察.-> TCP
EBPF -.观察.-> QUIC
核心关系:链路承载 IP;IP 逐跳转发;TCP/UDP/QUIC 提供不同传输语义;TLS 建立安全通道;HTTP 提供应用语义。DNS 在应用发起连接前提供名字到地址的映射。pcap 看线上字节,eBPF 看内核事件,两者互补。
9.3 基础知识讲解
9.3.1 经典论文
| 资料 | 影响 | 建议读法 |
|---|---|---|
| Baran, On Distributed Communications Networks | 推动分布式分组交换思想 | 看网络拓扑、冗余路径与生存性 |
| Cerf & Kahn, A Protocol for Packet Network Intercommunication | 奠定互联网络与端到端传输协议 | 对照今天 IP/TCP 的职责拆分 |
| Saltzer, Reed & Clark, End-to-End Arguments in System Design | 解释可靠性与安全能力为何常放端系统 | 用校验、重传、加密各举一例 |
| Jacobson, Congestion Avoidance and Control | 建立现代 TCP 拥塞控制基础 | 结合丢包实验看 cwnd 和吞吐 |
| Clark, The Design Philosophy of the DARPA Internet Protocols | 解释 Internet 架构的目标与取舍 | 对照容错、异构网络和分布式管理 |
9.3.2 经典书籍
重点读这 5 本。我们不从头背到尾。每本都跟一个实验。
| 书 | 影响 | 用法 |
|---|---|---|
| Kurose & Ross, Computer Networking: A Top-Down Approach | 用应用到链路的路线建立全景 | 入门主线;每章做一次 Wireshark lab |
| Stevens, TCP/IP Illustrated, Volume 1 | 用真实报文解释 TCP/IP,影响抓包式学习方法 | 对照 TCP、ARP、ICMP pcap 精读 |
| Peterson & Davie, Computer Networks: A Systems Approach | 把协议、系统实现和设计原则放在一起 | 补协议设计、交换和拥塞章节 |
| Fall & Stevens, TCP/IP Illustrated, Volume 1, Second Edition | 更新 IPv6、无线、现代 TCP 内容 | 查现代协议行为;与 Linux 结果核对 |
| Sanders, Practical Packet Analysis | 把协议知识落到故障时间线 | 选案例复做,重点写证据而非截图 |
备查:Tanenbaum & Wetherall 的 Computer Networks、Comer 的 Internetworking with TCP/IP、Stevens 的 UNIX Network Programming。它们分别适合理论全景、TCP/IP 教材和 socket 编程。
9.3.3 优秀博客
| 资料 | 特点 | 用法 |
|---|---|---|
| Cloudflare Blog | QUIC、TLS、DNS、BGP 与大规模故障案例多 | 选一篇案例,重画时间线并核对 RFC |
| APNIC Blog | 路由、IPv6、DNS 与 Internet 测量强 | 补运营商和全球网络视角 |
| Julia Evans | Linux 网络工具和协议解释短而实用 | 跟着 zine/文章跑命令,不只阅读 |
| Brendan Gregg | eBPF、性能方法与内核观测 | 学连接延迟和 TCP 指标的观测边界 |
| Cloudflare Learning Center | 入门概念图清楚 | 只作预习,再回 RFC 与抓包验证 |
9.3.4 核心人物
| 人物 | 主要影响 | 建议追踪的材料 |
|---|---|---|
| Vint Cerf | TCP/IP 与 Internet 架构 | 1974 internetworking 论文、口述史 |
| Bob Kahn | 分组网络与 TCP/IP | 1974 论文、Internet 架构访谈 |
| Jon Postel | RFC 编辑、IANA、TCP/IP 标准化 | RFC 820、RFC 1122 与其标准工作 |
| Van Jacobson | TCP 拥塞控制、网络性能工具 | 1988 拥塞控制论文、tcpdump 历史 |
| Tim Berners-Lee | Web、URL、HTTP、HTML | Web 原始提案、HTTP 早期规范 |
| Radia Perlman | Spanning Tree 与网络设计 | STP 论文、Interconnections |
9.3.5 开发方法
| 方法 | 具体动作 | 何时用 |
|---|---|---|
| Packet-first | 先抓最小会话,再读字段和 RFC | 新协议入门 |
| Layer-by-layer | 从 DNS、路由、传输、TLS 到应用逐层排除 | 不通、慢、偶发错误 |
| Single-variable experiment | 每次只改 RTT、loss、MTU、协议或证书一个条件 | 验证因果 |
| State-machine reasoning | 写状态、事件、超时和非法转移 | TCP/TLS/自定义协议问题 |
| Differential test | 同目标对比 IPv4/IPv6、h1/h2/h3、不同 resolver | 缩小客户端、网络或服务端范围 |
| Evidence timeline | 把日志、pcap、指标统一到时间轴 | 生产事故与跨团队排障 |
重点 RFC 共 5 篇/组:
- RFC 8200 — IPv6 Specification:定义 IPv6 基本头、扩展头和转发语义。它展示网络层如何在简化基础头后保留扩展能力。
- RFC 9293 — Transmission Control Protocol:当前 TCP 核心规范。握手、序列号、状态机、重传和关闭都要回到这里核对。
- RFC 1034 + RFC 1035 — DNS Concepts and Implementation:作为一组学习。前者讲体系,后者讲报文和实现。现代 DNS 的基本模型仍在这里。
- RFC 8446 — TLS 1.3:把握手、密钥派生和旧算法清理写清。排查现代 HTTPS 必读。
- RFC 9000 + RFC 9114 — QUIC and HTTP/3:作为一组学习。QUIC 定义传输,HTTP/3 定义映射。它们解释为何 HTTP/3 不再跑在 TCP 上。
补充查阅:HTTP Semantics RFC 9110、HTTP/2 RFC 9113、HTTP/1.1 RFC 9112、IPv4 RFC 791、ICMP RFC 792。旧 RFC 仍有历史价值,但实现判断优先看更新后的规范及其 Obsoletes/Updates 关系。
9.4 经典问题与经典案例
| 问题 | 为什么重要 | 最简答案或证据 |
|---|---|---|
| 能 ping,服务却不通 | ICMP 与 TCP/UDP 不是同一策略 | ss 看监听,tcpdump 看 SYN 是否到达和是否返回 |
| DNS 改了仍解析旧地址 | 多层缓存和 TTL 会保留旧记录 | 比较本机、递归 resolver、权威回答及剩余 TTL |
| 小包通,大包卡住 | 常见于 PMTUD black hole | ping -M do -s 找阈值,抓 ICMP Packet Too Big/Frag Needed |
| SYN 重传 | 路由、防火墙、服务未监听都可能 | 客户端与服务端两端抓包,判断包消失在哪段 |
| TCP 吞吐低但带宽空闲 | RTT、loss、cwnd、rwnd 会限制吞吐 | 看 ss -tin 的 rtt/cwnd/retrans 与 pcap ACK |
| HTTPS 证书正常但握手失败 | 可能是 SNI、ALPN、协议或 CipherSuite | openssl s_client 与 TLS Alert 定位协商阶段 |
| HTTP/2 单连接仍卡顿 | TCP 丢包会阻塞该连接所有流 | 看 TCP 重传与多个 h2 stream 的停顿时间 |
| HTTP/3 回退到 HTTP/2 | UDP/443、Alt-Svc、客户端支持都影响选择 | 看 Alt-Svc、ALPN、UDP 包与客户端 verbose 日志 |
| Wireshark 显示重传很多 | 抓包点、offload、capture loss 可制造假象 | 对比两端抓包、接口丢包计数和网卡 offload |
| 服务端处理慢还是网络慢 | 单点 pcap 容易混淆 | 将 client pcap、server pcap、应用 trace 与 socket 指标放到同一时间线 |
9.5 学习难点
概念难点
| 难点 | 为什么会卡 | 突破路径 |
|---|---|---|
| 分层与封装 | 教材层次整齐,真实栈有 tunnel、offload、proxy | 对同一包逐层展开,再标出每跳变化与不变字段 |
| 可靠性与拥塞控制 | ACK、rwnd、cwnd、RTO 同时变化 | 先做无丢包基线,再只加 RTT,再只加 loss |
| TLS/QUIC 加密 | 看不到应用数据后容易停止分析 | 学 ClientHello、SNI、ALPN、包长、时序;可控环境用 key log |
思维难点
| 难点 | 为什么会卡 | 突破路径 |
|---|---|---|
| 从现象映射到层 | “慢”不是协议层结论 | 把慢拆成解析、建连、握手、TTFB、下载五段 |
| 单点证据局限 | 没看到包不等于对端没发 | 写清观察点,必要时两端或中间点同时采集 |
| 相关性与因果 | 重传与高延迟同时出现,不代表重传是根因 | 做单变量故障注入和修复后验证 |
工程难点
| 难点 | 为什么会卡 | 突破路径 |
|---|---|---|
| 生产抓包 | 权限、流量、隐私、磁盘都有限制 | 精确 BPF、文件轮转、snaplen、时间窗口、脱敏和审批 |
| 时间线统一 | 主机时钟、时区、采样周期不同 | 记录 UTC、NTP 状态、抓包点和 trace id |
| eBPF 观测 | 内核版本、符号、事件丢失会影响结论 | 从稳定工具开始,记录 kernel/BTF 与 lost events,再写自定义程序 |
9.6 技术标准与接口
9.6.1 Entity
| 名称 | 版本 / 文档 | 发布组织 | 状态 | 许可证 / 可访问性 |
|---|---|---|---|---|
| Internet Protocol | IPv4 RFC 791;IPv6 RFC 8200 | IETF | Internet Standard | RFC 免费公开 |
| TCP / UDP | RFC 9293;RFC 768 | IETF | Internet Standard / Standard | RFC 免费公开 |
| DNS | RFC 1034、1035 及后续更新 | IETF | Internet Standard | RFC 免费公开 |
| TLS | TLS 1.3 RFC 8446 | IETF | Proposed Standard,广泛部署 | RFC 免费公开 |
| HTTP | RFC 9110、9112、9113、9114 | IETF | Internet Standard / Proposed Standard | RFC 免费公开 |
| QUIC | RFC 9000、9001、9002 | IETF | Proposed Standard,广泛部署 | RFC 免费公开 |
| Ethernet / Wi-Fi | IEEE 802.3 / 802.11 | IEEE 802 | 持续维护 | 标准访问政策以 IEEE 当前页面为准 |
| pcap / eBPF 接口 | libpcap、Linux BPF UAPI | tcpdump group / Linux kernel | 活跃实现与内核接口 | BSD 风格 / GPL-2.0 WITH syscall-note |
9.6.2 Scope
- IEEE 802 标准处理局域链路和物理介质。IP 处理跨网络寻址与逐跳转发。
- TCP、UDP、QUIC 处理端到端传输。它们不定义业务语义。
- DNS 处理命名。TLS 处理通信机密性、完整性和对端认证。HTTP 处理请求/响应语义。
- RFC 定义 wire behavior。Linux、浏览器、代理、CDN 和网卡实现会增加默认值、优化和限制。
- pcap 适合看经过观察点的包。eBPF 适合看内核路径与 socket 状态。两者都不能自动证明应用根因。
9.6.3 Structure
- 标准文档常见结构:术语、报文格式、状态机、处理规则、错误、扩展、安全与 IANA considerations。
- 必须掌握的字段:EtherType、VLAN ID、IP 地址/TTL/Next Header、端口、TCP seq/ack/flags/window/options、DNS ID/flags/RR、TLS ClientHello/SNI/ALPN、HTTP method/status/header、QUIC Connection ID/packet number/frame。
- 必须掌握的接口:
socket/connect/bind/listen/accept、getaddrinfo、getsockopt、netlink、pcap capture/filter、Linux BPF maps/programs/ring buffer。 - 必须掌握的方法:读 RFC 的更新关系;画 FSM;做 packet timeline;把抓包、系统指标和应用 trace 关联起来。
9.6.4 Ecosystem
- 操作系统实现:Linux、FreeBSD、Windows、Apple Network Extension/Network.framework。
- 工具:iproute2、tcpdump/libpcap、Wireshark/tshark、dig/kdig、curl、OpenSSL、mtr、iperf3、bpftrace/BCC。
- 服务实现:BIND、Unbound、CoreDNS、Nginx、Caddy、Envoy、HAProxy、nghttp2、quiche、OpenSSL/BoringSSL/rustls。
- 扩展点:TCP options、IPv6 extension headers、DNS EDNS、TLS extensions、HTTP fields/settings、QUIC transport parameters、eBPF hooks。
- 事实标准与标准本身要分开。比如浏览器的 HTTP/3 启用策略、Linux 默认拥塞算法、CDN 的 Alt-Svc 生命周期都属于实现和部署选择。
9.6.5 Depth Tiers
| 层级 | 能力 | 网络主题的可观察标准 |
|---|---|---|
| L0 | 知道存在 | 知道 Ethernet、IP、TCP/UDP、DNS、TLS、HTTP/3 和抓包工具分别做什么 |
| L1 | 看得懂示例 | 能读基础命令输出和 Wireshark 协议树,能跟着实验抓到包 |
| L2 | 能正确调用 | 能配置地址、路由、DNS、TLS/HTTP 客户端,能写 BPF/display filter 并处理常见错误 |
| L3 | 能解释与排错 | 能从多层时间线解释慢或不通,用 pcap、指标、日志和实验定位根因并验证修复 |
| L4 | 能设计与扩展 | 能设计协议与兼容策略,修改网络栈/代理/eBPF 程序,评估安全、性能和部署影响 |
本父主题目标是 L3。协议设计或 eBPF 项目可触及局部 L4,但不作为 12~16 周的硬门槛。
9.6.6 Source
- IETF Datatracker 与 RFC Editor:查 RFC 正文、状态、更新与勘误。
- IEEE 802 与 Linux networking documentation:查链路标准组织和 Linux 实现接口。
- 核心版本:RFC 8200、9293、1034/1035、8446、9000、9110~9114。
- 引用版本快照日期:2026-07-30。实际项目开始时再检查 RFC
Updates、Obsoletes和 errata。
10. 常见误区
- 把 OSI 七层当作真实实现的固定模块;
- 看到
ping通就认定 TCP、UDP 和应用都通; - 只在客户端抓包,却断言包在服务端被丢;
- 把 traceroute 某一跳不回包当成那一跳丢业务流量;
- 把 DNS TTL 当成所有缓存的唯一寿命;
- 混淆 TCP 的 rwnd 与 cwnd;
- 用平均 RTT 掩盖 P95/P99 抖动和重传;
- 认为 TLS 加密后抓包没有价值;
- 认为 HTTP/2 消除了所有队头阻塞;
- 认为 QUIC 基于 UDP,所以不可靠;
- 不记录抓包接口、时间、过滤器、snaplen 和 offload;
- 直接按 Wireshark Expert Info 修系统,不核对两端证据;
- 在生产环境无限制抓全包,忽略隐私、权限和磁盘;
- eBPF 程序不统计 lost events,却把缺失事件当作没有发生。
11. 所有知识点分类(统一规则)
- 编程语言
- 数据结构与算法
- 计算机基础
- 工程技术
- Web 与后端
- 前端与客户端
- 数据与人工智能
- 项目与职业能力
- 安全与可靠性
本计划归属:计算机基础 主 + 安全与可靠性 辅。