CalcGuide · 技术博客主页 / 一页纸学习计划
🔥极高

计算机网络:从物理层到 HTTP/3 的全栈协议与排查

分类:计算机基础 · 路径:docs/topics/network/README.md

#network#tcp-ip#http#security#observability

用 12~16 周从线缆学到能在生产环境用 Wireshark/eBPF 排查 HTTPS 性能问题

父主题

顶层主题

子主题(9)

计算机网络:从物理层到 HTTP/3 的全栈协议与排查

0. 元信息

1. 学习路线

物理介质与 Ethernet
  → IP、CIDR、路由、ICMP
  → TCP、UDP、拥塞控制
  → DNS 与命名
  → TLS、证书与 HTTPS
  → HTTP/1.1、HTTP/2、HTTP/3
  → 协议状态机与兼容设计
  → 抓包、过滤与解密
  → 生产网络排障与 eBPF

我们按报文真实经过的路径学。每一层都抓包。先说明观察点,再下结论。

2. 阶段周数分配

阶段12 周方案16 周方案备注
1. 物理与链路层11.5Ethernet、ARP、VLAN、Wi-Fi
2. TCP/IP 栈1.52IPv4/IPv6、CIDR、路由、ICMP
3. TCP 与 UDP1.52状态机、可靠传输、拥塞控制
4. DNS11.25递归、缓存、DNSSEC、DoH/DoT
5. TLS 与 HTTPS1.52TLS 1.2/1.3、PKI、ALPN
6. HTTP/1.1~HTTP/31.52帧、复用、QUIC、QPACK
7. 协议设计11.25FSM、编码、协商、兼容
8. 抓包与协议分析1.52pcap、BPF、Wireshark、tshark
9. 排障与综合项目1.52指标、实验、报告、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 gettraceroute 定位路径;不把 ICMP 限速当真实丢包
3. 传输层五元组、TCP 头、握手挥手、重传、rwnd/cwnd、UDP、QUIC一次完整 TCP 生命周期能从 seq/ack/flags 还原会话;区分应用慢、接收窗口小和拥塞窗口受限
4. DNS根/TLD/权威/递归、RR、TTL、负缓存、DNSSEC、加密 DNSdig +trace 与 DNS pcap能区分 NXDOMAIN、SERVFAIL、超时和缓存未过期;不只改 /etc/resolv.conf 猜问题
5. TLSAEAD、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。安装 iproute2ethtooltcpdump、Wireshark/tshark、digcurlopensslmtr。抓包需要 root、CAP_NET_RAW 或正确配置的 dumpcap 权限。所有命令记录版本、接口、时间和目标。

任务当天交付
Day 1运行 ip -br linkip -br addrip routeethtool;画本机到默认网关的路径环境清单、接口表、运行约定
Day 2tcpdump -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、MSSTCP 握手时序图
Day 5运行 dig +trace example.com,抓 UDP/53DNS 分层解析图
Day 6运行 openssl s_client -connect example.com:443 -servername example.com -alpn h2,http/1.1curl -vTLS/HTTP 关键消息表
Day 7步骤 A:抓一条最小 HTTPS 请求;步骤 B:补齐 DNS 失败、拒绝连接、TLS 主机名错误、HTTP 5xx 四类异常pcap、命令、预期/实际输出、第一版报告

Day 7 步骤 A 只求链路完整:DNS → TCP → TLS → HTTP。步骤 B 每次只改变一个条件。严格过滤和自动化放到四类异常都跑通后。

5. 阶段通用验收

  1. 不看答案画出本阶段主要报文头或状态机;
  2. 用自己的话说清它解决什么问题、在哪一层生效、失败时有什么信号;
  3. 保存原始命令、版本、抓包位置、pcap 和关键输出;
  4. 测试正常、超时、拒绝、丢包或损坏四类路径;
  5. 至少准备 3 组可重复实验,写出预期与实际结果;
  6. 记录 RTT、重传、吞吐、窗口、状态码等可量化指标;
  7. 能修改网络条件或服务配置,再用相同观测方法验证变化。

6. 最终验收

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 程序。

任何项目都要包含:

  1. 需求与成功标准;
  2. 网络拓扑、抓包点和工具选择理由;
  3. 协议时序与指标定义;
  4. 可重复命令或模块化源码;
  5. 正常、超时、拒绝、丢包/损坏测试;
  6. 环境、权限、清理和脱敏说明;
  7. README 与原始证据索引;
  8. 结论、限制、修复和验证记录。

8. 推荐开源资料

角色资料许可证 / 可访问性用法
交互入门Beej’s Guide to Network ProgrammingCC BY-NC-ND 3.0配合 socket 小程序理解 TCP/UDP
课程与实验Stanford CS144仓库逐项确认 LICENSE自己实现网络栈前先完成抓包路线
Linux 工具iproute2GPL-2.0ipsstc 的实际行为
包分析WiresharkGPL-2.0,文档公开看协议树、Expert Info、display filter
采集过滤tcpdump/libpcapBSD 风格许可证学 capture filter、pcap 与命令行采集
性能观测bpftraceBCCApache-2.0从现成工具理解内核网络事件
HTTP/2nghttp2MIT查看帧、流和压缩行为
QUIC/HTTP/3quicheBSD-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 BlogQUIC、TLS、DNS、BGP 与大规模故障案例多选一篇案例,重画时间线并核对 RFC
APNIC Blog路由、IPv6、DNS 与 Internet 测量强补运营商和全球网络视角
Julia EvansLinux 网络工具和协议解释短而实用跟着 zine/文章跑命令,不只阅读
Brendan GreggeBPF、性能方法与内核观测学连接延迟和 TCP 指标的观测边界
Cloudflare Learning Center入门概念图清楚只作预习,再回 RFC 与抓包验证

9.3.4 核心人物

人物主要影响建议追踪的材料
Vint CerfTCP/IP 与 Internet 架构1974 internetworking 论文、口述史
Bob Kahn分组网络与 TCP/IP1974 论文、Internet 架构访谈
Jon PostelRFC 编辑、IANA、TCP/IP 标准化RFC 820、RFC 1122 与其标准工作
Van JacobsonTCP 拥塞控制、网络性能工具1988 拥塞控制论文、tcpdump 历史
Tim Berners-LeeWeb、URL、HTTP、HTMLWeb 原始提案、HTTP 早期规范
Radia PerlmanSpanning 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 篇/组:

  1. RFC 8200 — IPv6 Specification:定义 IPv6 基本头、扩展头和转发语义。它展示网络层如何在简化基础头后保留扩展能力。
  2. RFC 9293 — Transmission Control Protocol:当前 TCP 核心规范。握手、序列号、状态机、重传和关闭都要回到这里核对。
  3. RFC 1034 + RFC 1035 — DNS Concepts and Implementation:作为一组学习。前者讲体系,后者讲报文和实现。现代 DNS 的基本模型仍在这里。
  4. RFC 8446 — TLS 1.3:把握手、密钥派生和旧算法清理写清。排查现代 HTTPS 必读。
  5. 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 holeping -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、协议或 CipherSuiteopenssl s_client 与 TLS Alert 定位协商阶段
HTTP/2 单连接仍卡顿TCP 丢包会阻塞该连接所有流看 TCP 重传与多个 h2 stream 的停顿时间
HTTP/3 回退到 HTTP/2UDP/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 ProtocolIPv4 RFC 791;IPv6 RFC 8200IETFInternet StandardRFC 免费公开
TCP / UDPRFC 9293;RFC 768IETFInternet Standard / StandardRFC 免费公开
DNSRFC 1034、1035 及后续更新IETFInternet StandardRFC 免费公开
TLSTLS 1.3 RFC 8446IETFProposed Standard,广泛部署RFC 免费公开
HTTPRFC 9110、9112、9113、9114IETFInternet Standard / Proposed StandardRFC 免费公开
QUICRFC 9000、9001、9002IETFProposed Standard,广泛部署RFC 免费公开
Ethernet / Wi-FiIEEE 802.3 / 802.11IEEE 802持续维护标准访问政策以 IEEE 当前页面为准
pcap / eBPF 接口libpcap、Linux BPF UAPItcpdump group / Linux kernel活跃实现与内核接口BSD 风格 / GPL-2.0 WITH syscall-note

9.6.2 Scope

9.6.3 Structure

9.6.4 Ecosystem

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

10. 常见误区

11. 所有知识点分类(统一规则)

  1. 编程语言
  2. 数据结构与算法
  3. 计算机基础
  4. 工程技术
  5. Web 与后端
  6. 前端与客户端
  7. 数据与人工智能
  8. 项目与职业能力
  9. 安全与可靠性

本计划归属:计算机基础 主 + 安全与可靠性 辅。


直接依赖(0)

查看知识图谱 · 热度 🔥极高