LV020-交换机路由器与局域网
一、 局域网就是一个广播域
1. 局域网的范围与特征
局域网(LAN)就是"一个广播域"——在这个范围内,一台设备发出的广播帧,其它设备都能收到。家用场景里,一台交换机(或一台路由器后面的所有有线口)下面的设备,就是一个局域网。
局域网有几个特点值得记住:
- 范围小,通常是一个房间、一层楼、一个办公室;
- 里面的设备共享同一个网段(所以上一篇讲的按位与判断,在这里起决定作用);
- 局域网内部靠交换机的 MAC 表转发,不需要路由器参与。
2. 为什么"一个网段 = 一个广播域"
这条等价关系是理解交换机与路由器分工的关键,先记住结论,理由在本篇第五节与第六节展开:
| 设备 | 能不能转发数据 | 能不能隔离广播 |
|---|---|---|
| 集线器 | 能(泛洪) | 不能 |
| 交换机 | 能(按 MAC 表) | 不能 |
| 路由器 | 能(按路由表) | 能 |
交换机不隔离广播,所以同一个交换机下的所有设备仍然属于同一个广播域、同一个网段。要让广播停下来,只能靠路由器(或者在交换机上划分 VLAN,那属于更进一步的用法)。
这解释了本实验里一个容易困惑的点:为什么板子必须和 PC 配成同网段? 因为直连与同交换机都属于同一个广播域,而同一个广播域里就是同一个网段——网段就是按广播域划的。
二、 三种接法与它们的差别
1. 直连、交换机、路由器
本实验最常遇到的三种物理接法,它们的差别不在物理层,而在"要不要跨网段":
| 接法 | 板子与 PC 是否同网段 | 需要网关吗 | 能不能上网 |
|---|---|---|---|
| 网线直连 | 必须自己配成同网段 | 不需要 | 不能 |
| 都接在同一台交换机 | 必须自己配成同网段 | 不需要 | 不能(除非上面还接了路由器) |
| 都接在同一台路由器下 | 由路由器分配,通常同网段 | 若要出网则需要 | 可以 |
本实验用的是第一种或第二种,所以板子与 PC 的 IP 必须手工配成同网段(192.168.16.30 与 192.168.16.100)。
2. 三种接法的排查重点
| 接法 | 排查重点 |
|---|---|
| 网线直连 | 网口灯是否亮;两端 IP 与掩码是否同网段;是否配了不存在的网关 |
| 经交换机 | 以上全部,外加:交换机是否通电、端口是否协商成功、有没有把两个口接成环 |
| 经路由器 | 板子是否拿到(或配了)路由器网段的地址;网关是否填的是路由器地址 |
顺带说清一个常见误解:"接上网线就能上网"是不成立的。上网需要路由器、需要 NAT、需要 DNS,而本实验的 Bootloader 只实现了 IP/ICMP/TCP/UDP/ARP 这一小块,既没有 DHCP 也没有 DNS,所以它的目标就是"在同一局域网内被 PC 找到",而不是上网。
三、 集线器与交换机
1. 差在"认不认识 MAC"
同样是"把几台设备连在一起",集线器和交换机的差别很大:
| 对比项 | 集线器(Hub) | 交换机(Switch) |
|---|---|---|
| 工作层次 | 物理层 | 数据链路层 |
| 转发方式 | 从任意口收到的数据向所有其它口泛洪 | 按 MAC 地址表只从对应口发出 |
| 带宽 | 所有口共享 | 每个口独享 |
| 冲突 | 会冲突,需要 CSMA/CD | 基本没有冲突 |
2. 集线器没白学:泛洪是它的退化形态
集线器现在基本见不到了,但理解它的存在有个好处:交换机"查不到就泛洪"的行为,本质上就是退化成了集线器。
所以交换机的工作过程可以理解成"先像集线器一样泛洪学习,之后才会精准转发"——这也解释了为什么一个刚上电的交换机头几个包总是泛洪的。
四、 交换机怎么转发:MAC 地址表
交换机内部维护一张"MAC 地址 → 端口"的表,动作分学习和转发两步。
1. 学习:收到帧时看源 MAC
看源 MAC,把"这个 MAC 在我的第 N 号口上"记进表里。之后有包要发给它,就知道从哪个口出。
这个设计的巧妙之处在于:学习是"顺便"完成的,不需要任何额外报文。只要这台设备发过一次帧,交换机就记住了它在哪个口。
2. 转发:决定从哪出时看目的 MAC
看目的 MAC,按表决定动作:
| 目的 MAC 在表里 | 动作 |
|---|---|
| 在,且不是收到帧的那个口 | 从对应口发出(单播) |
| 在,正好是收到帧的那个口 | 丢弃(不需要转发) |
| 不在表里 | 向所有其它口泛洪 |
是广播地址 FF:FF:FF:FF:FF:FF | 向所有其它口泛洪 |
"在,正好是收到帧的那个口"这一行容易被忽略:说明这台设备就在这个口的方向上,没必要再发回去。
3. 表项老化
表项还有老化时间,长时间不出现的 MAC 会被清除——这点和后面 LV030-ARP与MAC地址 里 ARP 缓存的老化是一回事:两者的存在都是为了"设备会挪位置、地址会换主人"。
五、 路由器怎么工作
1. 成为路由器的三个条件
一台设备要算路由器,必须同时满足三个条件:
(1)至少有两个网络接口。
(2)两个接口接在不同的网段上。
(3)能在两个网段之间转发数据。
只有一块网卡的设备,无论装什么系统都当不成路由器。反过来,一台双网卡的 PC 只要开了转发功能,就成了事实上的路由器。
2. 路由表与转发
路由器的核心是一张路由表,每条表项是"目的网络 → 下一跳 / 出口":
| 目的网络 | 下一跳 | 出口 |
|---|---|---|
| 192.168.16.0/24 | 直连 | 接口 A |
| 192.168.1.0/24 | 192.168.16.1 | 接口 A |
| 0.0.0.0/0(默认路由) | 运营商网关 | 接口 B |
转发时的顺序是"最长前缀匹配":先找最精确的那条,找不到就落到默认路由 0.0.0.0/0。这套机制的完整说明见 LV015-网关与跨网段通信 第二节。
3. 转发时会改什么
这里有一个关键认知:路由器转发时会把链路层的帧头整个换掉——IP 头里的源/目的地址全程不变,而以太网头里的源/目的 MAC 每一跳都会重写(TTL 也会减 1)。
这就是"MAC 只在一跳内有效"的具体体现,也是 ping 的输出里 TTL 会随着经过的路由器增多而变小的原因。
六、 小结与参考资料
1. 本篇小结
- 局域网 = 一个广播域,范围内的设备共享同一网段;网段就是按广播域划分的。
- 集线器(物理层泛洪)→ 交换机(链路层按 MAC 表转发)→ 路由器(网络层按路由表转发),能力逐级上升。
- 交换机靠"学源 MAC、查目的 MAC"工作,查不到就泛洪;表项会老化。
- 只有路由器能隔离广播域,且成为路由器必须满足"两个接口、不同网段、能转发"三个条件。
- 路由器转发时只重写链路层帧头与 TTL,IP 头全程不变。
- 本实验属于直连或同交换机两种接法,双方必须手工配成同网段,且用不到网关。
2. 参考资料
- 实验中的实际连接与排错:LV020-网络通信实验 第一节、第五节
- 网卡驱动与收发路径:
dm9000.c - 手册:
STM32F1 LWIP开发手册(DM9000版)_V1.1.pdf第 1.6 节「下载验证」
本文档由 markdowncli 技能辅助生成