CalcGuide · 技术博客主页 / 一页纸学习计划
🟠

物理与链路层:从线缆到交换机

分类:计算机基础 · 路径:docs/topics/physical-and-link-layer/README.md

#physical#link-layer#ethernet#mac#wifi

理解 MAC 帧、VLAN、ARP、Wi-Fi 与交换机原理,能用 tcpdump/Wireshark 验证

父主题

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

子主题(0)

物理与链路层:从线缆到交换机

0. 元信息

1. 学习路线

信号、双绞线与光纤
  → Ethernet 帧与 MAC 地址
  → 交换机学习、转发与环路
  → VLAN、Trunk 与 STP
  → ARP 与 IPv4 局域网通信
  → Wi-Fi 关联、信道与 802.11 帧
  → tcpdump/Wireshark 验证

每一步都是下一步的前置。别一上来背字段,先抓一帧再看字段。

2. 阶段周数分配

阶段12 周方案16 周方案备注
1. 物理介质0.5 周0.75 周速率、双工、衰减
2. Ethernet 与 MAC1 周1.25 周帧格式和 FCS
3. 交换机1 周1.25 周MAC table 与广播
4. VLAN/STP1 周1.25 周Trunk、环路
5. ARP0.75 周1 周缓存与欺骗风险
6. Wi-Fi0.75 周1 周802.11 管理帧
7. 抓包项目1 周1.5 周证据和排障

合计约 6~8 周的主题学习强度;若每周投入更多,可压缩到 3~4 周。

3. 九阶段表

阶段核心知识实践产出可观察学会标准
1. 物理介质双绞线、光纤、速率、编码、半/全双工记录网卡链路参数能解释协商失败、丢包和 CRC 错误的区别
2. EthernetMAC、帧头、Type/Length、FCS、广播解析一份 .pcap能指出目的 MAC、源 MAC、EtherType
3. 交换机学习、泛洪、过滤、老化、CAM 表两主机互 ping 并观察转发能预测未知单播、广播如何走
4. VLANAccess、Trunk、802.1Q、native VLAN创建两个 VLAN 并验证隔离能解释 tagged/untagged 进出端口
5. STPBPDU、根桥、端口角色、阻塞画出三交换机拓扑能定位环路和根桥变化
6. ARPrequest/reply、缓存、gratuitous ARP抓取一次 ARP 解析能从抓包判断网关 MAC
7. Wi-FiSSID、BSSID、Beacon、认证、信道抓取管理帧能区分 Beacon、Probe、Data
8. 工具ip, ethtool, tcpdump, Wireshark过滤并导出证据能用过滤器缩小问题范围
9. 综合项目局域网故障定位、报告、复现pcap + 拓扑图 + 报告第三方能按步骤复现结论

复杂度陷阱:交换机查表通常近似 O(1),但广播扩散是 O(端口数);抓包过滤先做,别把全量包塞进脑子。

4. 第一周任务

任务当天交付
Day 1安装 iproute2ethtooltcpdump、Wireshark;统一用 ip -br link 查看接口一份接口和链路参数记录
Day 2学 Ethernet II 帧;查看本机 MAC、MTU、默认路由画一帧字段图
Day 3用两个 network namespace 互联;运行 pingtcpdump保存 ARP + ICMP 抓包
Day 4读交换机学习/泛洪过程;用 namespace 模拟桥一张 MAC table 变化图
Day 5读 802.1Q 和 VLAN;记录 tagged/untaggedVLAN 端口表
Day 6读 ARP 和 Wi-Fi Beacon;用 Wireshark 过滤5 条过滤表达式
Day 7步骤 A:用一个 namespace 对另一个 namespace ping,保存 tcpdump -ni any -e arp or icmp 输出;步骤 B:补测空接口、错误接口、不同 MTU、ARP 缓存为空四类边界pcap、命令、预期与实际结果

Day 1 运行约定:Linux shell,命令默认在 root 或具备抓包权限的环境执行。Day 7 的步骤 B 完成后,再加更严格的权限和错误检查。

5. 阶段通用验收

  1. 不看答案画出 Ethernet II、802.1Q、ARP、802.11 基本帧;
  2. 用自己的话解释每个字段解决什么问题;
  3. 测试空缓存、未知 MAC、广播、MTU 边界和错误接口;
  4. 准备至少 3 组抓包并贴出实际过滤结果;
  5. 记录帧大小、MTU、广播范围等量化结果;
  6. 能修改拓扑或 VLAN 配置并预测变化;
  7. 能从抓包而不是猜测定位问题。

6. 最终验收

7. 综合项目

首选:局域网抓包与故障定位实验(必做:两个 namespace、Linux bridge、ARP/ICMP 抓包)。 备选:VLAN 隔离实验 / Wi-Fi Beacon 分析。

任何综合项目必须包含:

  1. 需求说明;
  2. 拓扑和字段选择理由;
  3. 转发与抓包步骤;
  4. 可重复命令;
  5. 空缓存、MTU、权限和错误接口测试;
  6. 环境与清理说明;
  7. README;
  8. 复现记录。

项目内交付物放在项目仓库 notes/design.mdtest.mdretrospective.md

本主题贡献

本主题沉淀以太网帧、交换机 MAC 学习、VLAN/802.1Q、ARP 与 802.11 链路层的可观测实践,所有结论都能在两个 Linux network namespace + bridge 上用 tcpdump -e + Wireshark 重现。

职责(3 项)

  1. 解析 Ethernet II 帧(目的/源 MAC、EtherType、FCS)与 802.1Q TCI(TPID 0x8100 + PCP/DEI/VID),能用 bridge fdb 看 MAC table 学习与老化,区分未知单播泛洪与广播扩散;
  2. 用两个 namespace 互联后抓 ARP request/reply,验证 ARP 缓存与 gratuitous ARP 行为,能从抓包判断默认网关 MAC 是否被欺骗,以及 ARP 缓存为空时的重传间隔;
  3. 配 Linux bridge + VLAN Access/Trunk 端口,用 tcpdump -e -vv 对照 tagged/untagged 帧进出端口的差异,能解释 native VLAN、BPDU 在 STP 防环中的作用,以及 802.11 Beacon 与 Ethernet Beacon 的对应关系。

交付物(4 项)

  1. 一份带目的/源 MAC、EtherType、FCS 标注的 Ethernet II 帧 pcap(tcpdump -ni any -e arp or icmp),含 5 条 Wireshark display filter(eth.addr == ...vlan.id == 10arpwlan.fc.type_subtype == 8);
  2. 两 namespace 互 ping 的 ARP + ICMP 抓包(含 ARP 缓存为空、错误接口、不同 MTU、空接口四类边界);
  3. VLAN 拓扑图(两个 VLAN + Trunk 端口)与 802.1Q tagged/untagged 帧对比记录(tcpdump -ni veth0 -e vlan);
  4. Wi-Fi Beacon 抓包(wlan.fc.type_subtype == 8)含 SSID、BSSID、Beacon Interval、能力字段标注。

指标(3 项)

  1. MAC table 收敛时间 ≤ 5 秒(清 FDB 后首个 ping 触发学习);
  2. VLAN 间隔离率 100%(同 Trunk 不同 VID 的 namespace 互 ping 必须不通);
  3. ARP 抓包命中率 ≥ 95%(首 ping 抓不到 ARP 是 namespace 或 offload 问题)。

8. 推荐开源资料

角色资料链接用法
入门Computer Networking: A Top-Down Approach 配套资料https://gaia.cs.umass.edu/kurose_ross/先理解协议行为
查阅Wireshark User’s Guidehttps://www.wireshark.org/docs/wsug_html/查过滤器和字段
工具tcpdump 手册https://www.tcpdump.org/manpages/tcpdump.1.html以命令验证
实现Linux bridge 文档https://docs.kernel.org/networking/bridge.html对照内核行为
练习Mininethttps://mininet.org/构造可重复拓扑
源码Linux wireless 文档https://wireless.docs.kernel.org/看 Wi-Fi 驱动生态

复制开源代码前先读 LICENSE。Mininet 为 BSD-3-Clause;Wireshark 为 GPL-2.0-or-later;Linux 文档按内核文档许可证执行。

9. 学习资料汇聚(v0.3 自包含)

9.1 背景与动机

局域网通信离不开两件事:信号怎样到达,帧怎样转发。Ethernet 把一串比特装进 MAC 帧,交换机再按 MAC table 决定端口。说白了,IP 还没出门,链路层已经做了大量工作。

ARP、VLAN、Wi-Fi 都在解决“同一局部网络里怎么找到并交付对方”。抓包能把抽象协议变成证据。这一点很多人栽过:只看 ping 成功,不看中间发生了什么。

9.2 概念地图

flowchart LR
  Signal[信号/介质] --> NIC[网卡]
  NIC --> Frame[MAC 帧]
  Frame --> Switch[交换机 MAC table]
  Switch --> VLAN[VLAN/802.1Q]
  VLAN --> STP[STP 防环]
  Host[IP 主机] --> ARP[ARP]
  ARP --> Frame
  WiFi[802.11/Wi-Fi] --> Frame
  Frame --> Capture[tcpdump/Wireshark]

关系很直接:介质承载信号,网卡封装帧,交换机查 MAC;VLAN 切广播域,STP 防二层环路,ARP 把 IP 找到 MAC,工具负责观察。

9.3 基础知识讲解

经典论文

经典书籍

优秀博客

核心人物

开发方法

9.4 经典问题与经典案例

问题为什么重要最简答案
MAC table 怎么来解释交换机为何不总是广播交换机从入方向源 MAC 学习,按目的 MAC 转发
未知单播会怎样是排障时常见的“多端口都收到”在同一 VLAN 内泛洪,入端口除外
广播域与冲突域区别VLAN 和旧式 Hub 容易混淆VLAN 划分广播域;交换端口通常各自隔离冲突
802.1Q 标签放哪Trunk 配错就互不通标签插在源 MAC 与 EtherType 之间
ARP 为什么不是 IP 包解释抓包里 EtherType 0x0806ARP 直接封装在 Ethernet 帧中
MTU 与帧大小关系大包丢失不一定是应用问题IP payload 受 MTU 限制,Ethernet 还有头和 FCS
STP 为什么阻塞端口二层环路会广播风暴用 BPDU 选根桥并阻塞冗余路径
Wi-Fi Beacon 是什么扫描时会看到大量管理帧AP 周期发送 Beacon 宣告 SSID、能力和参数
CRC 错误说明什么区分链路质量和上层重传FCS 校验失败,优先查线缆、接口、双工和硬件
tcpdump 看不到包工具本身可能没问题查接口、权限、offload、过滤表达式和 namespace

9.5 学习难点

9.6 技术标准与接口

9.6.1 Entity

名称版本发布组织状态许可证 / 可访问性
IEEE 802.3 Ethernet2022/持续修订IEEE 802.3正式标准IEEE 文档部分收费
IEEE 802.1Q VLAN2022IEEE 802.1正式标准IEEE 文档部分收费
IEEE 802.1D/802.1w STP历史并入 802.1QIEEE 802.1机制并入IEEE 文档部分收费
IEEE 802.11 Wi-Fi2020/持续修订IEEE 802.11正式标准IEEE 文档部分收费
RFC 826 ARP1982IETFInternet Standard/历史核心RFC 免费公开
Linux netlink / bridge API随内核更新Linux kernel事实接口GPL-2.0 文档/源码

9.6.2 Scope

9.6.3 Structure

必须掌握:目的 MAC、源 MAC、EtherType/Length、802.1Q TPID/TCI、payload、FCS;ARP 的 HTYPE、PTYPE、HLEN、PLEN、OPER、SHA/SPA、THA/TPA;802.11 的 Frame Control、Duration、地址字段、Sequence Control。

常用 Linux 接口:ip linkip addrip neighbridge fdbethtooltcpdump -e。Wireshark 过滤器示例:eth.addr == aa:bb:cc:dd:ee:ffarpvlan.id == 10wlan.fc.type_subtype == 8

9.6.4 Ecosystem

交换机实现包括 Linux bridge、Open vSwitch、Cisco IOS、Juniper Junos 和各类 ASIC。抓包工具包括 tcpdump/libpcap、Wireshark、tshark。NetworkManager、systemd-networkd 和厂商 CLI 都能配置链路,但默认行为不同。802.3/802.11 是标准本身;某厂商的 VLAN 命令、私有 TLV 和硬件 offload 是生态扩展。

9.6.5 Depth Tiers

层级本子主题要求
L0知道 PHY、MAC、Ethernet、VLAN、ARP、Wi-Fi 是不同概念
L1能看懂 MAC 帧、ARP request/reply、VLAN tag、Beacon 示例
L2能用 ipbridgetcpdump 配置/观察简单链路,能过滤抓包
L3能解释 MAC 学习、广播泛洪、VLAN 隔离、ARP 缓存、STP 阻塞,并定位常见链路故障
L4能设计带 VLAN/STP/Wi-Fi 互通的实验拓扑,评估 MTU、offload、硬件交换和安全边界

本子主题目标:完成综合项目达到 L3;能扩展拓扑时向 L4 迈进。

9.6.6 Source

引用版本快照日期:2026-07-30。IEEE 正式全文可能需要购买;RFC 与 Linux 文档可公开访问。

10. 常见误区

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

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

本计划归属:计算机基础主;辅助方向为网络工程与系统排障。


直接依赖(0)

查看知识图谱