能背定义,但判断不了故障
几乎所有人都学过“交换机工作在数据链路层,路由器工作在网络层”。然后呢?宿舍或办公室断网了,你面前有一台闪灯的交换机和一台闪灯的路由器,谁出问题会导致什么现象?
课本没讲。但这个问题有明确答案,因为两者的区别本质上是各自维护一张什么表。
交换机的世界:只有 MAC,没有 IP
一台二层交换机做的事可以一句话说完:收到一个帧,看它的目的 MAC,查表决定从哪个口送出去。
这张表叫 MAC 地址表(也叫 CAM 表),长这样:
MAC 地址 端口 老化时间
aa:bb:cc:00:11:22 1 300s
aa:bb:cc:00:33:44 5 300s
表是它自己学出来的:每收到一个帧,就把“源 MAC + 进来的端口”记下来。所以交换机不需要任何配置就能工作——这是它便宜好用的根本原因。
三个关键点:
- 它不知道什么是 IP。你电脑是 192.168.1.5 这件事,交换机完全不知道。
- 查不到就泛洪。目的 MAC 不在表里(或表项过期),它就从除入口外的所有端口各发一份。这是集线器时代的遗留策略。
- 它不隔离广播域。一个 ARP 广播(目的 MAC 为
ff:ff:ff:ff:ff:ff)会打到所有端口。几十台机器时广播开销开始可感知,靠 VLAN 来切分。
路由器的世界:只有 IP,不懂帧
路由器做的事也能一句话说完:收到一个 IP 包,看目的 IP,查路由表决定下一跳从哪个口出去。
目的网络 掩码 下一跳 接口
0.0.0.0 0.0.0.0 8.146.230.1 wan
192.168.1.0 255.255.255.0 直连 lan
和交换机对照着看,区别就很清楚了:
| 交换机 | 路由器 | |
|---|---|---|
| 看什么 | 目的 MAC | 目的 IP |
| 查哪张表 | MAC 地址表(自动学习) | 路由表(手动或协议生成) |
| 隔离广播域 | 不隔离 | 隔离 |
| 跨网段 | 不能 | 能 |
| 通常还负责 | — | NAT、DHCP、防火墙 |
一次 ping 里的分工
用 192.168.1.2 去 ping 192.168.1.3(同网段):
- 主机先算:目的 IP 和我的掩码相与,结果等于我的网段吗?等于。
- 于是直接发 ARP 广播问“谁是 192.168.1.3”,拿到对方的 MAC。
- 封帧,源和目的 MAC 都是两台主机,丢给交换机。交换机查表转发。全程没有路由器参与。
再 ping 8.8.8.8(跨网段):
- 主机算:不在我的网段。于是查路由表,命中默认路由
0.0.0.0/0 → 192.168.1.1。 - ARP 问的是网关的 MAC,不是 8.8.8.8 的——它也不可能知道 8.8.8.8 的 MAC。
- 封帧时源 MAC 是自己,目的 MAC 是路由器 LAN 口;但 IP 包头里,源 IP 和目的 IP 完全不变。
- 路由器收到,拆帧、查路由表、重新封帧(源 MAC 变成 WAN 口,目的 MAC 变成下一跳),再送出去。这就是“MAC 逐跳重写、IP 只在 NAT 时改写”。
所以凭现象就能定位一半:
- 同网段都不通:交换机、网线、IP 冲突、掩码不一致。
- 同网段通、跨网段不通:网关地址、掩码、路由器、NAT。
- 整个区域全都不通:上游链路或交换机的上联口。
三张表,三处排查
| 表 | 在哪 | 怎么看 |
|---|---|---|
| MAC 地址表 | 交换机 | 管理后台 / show mac address-table |
| ARP 表 | 每台主机和路由器 | Windows arp -a,Linux ip neigh |
| 路由表 | 主机和路由器 | Windows route print,Linux ip route |
动手顺序建议从 ARP 表开始:它同时反映“掩码算得对不对”和“对端在不在线”,信息量最大。如果连网关那一项都没有,说明 ARP 都没通,先查网线和 VLAN。
现在的设备都是混合体
必须提醒一点:上面是概念上的分工,实物早就混在一起了。
- 家用路由器 = 路由器 + 交换机 + 无线 AP + NAT + DHCP + 防火墙。它后面那四个 LAN 口,本质就是一个二层交换机。
- 三层交换机能做路由,所以“交换机”也可以跨网段。它只是在二层转发之外多加了一层路由逻辑。
- 软路由、虚拟机里的虚拟交换机、Kubernetes 的 CNI,都是同一套概念的软件实现。
所以判断一个设备能不能跨网段,别看它叫什么,看它有没有路由表、有没有网关概念。有,就能跨网段。
补一句 VLAN
VLAN 让一台交换机在逻辑上变成多台:每个 VLAN 是一个独立广播域,相当于把二层拆成多个虚拟交换机,广播不再互串。但 VLAN 之间要通信必须经过路由,所以 VLAN 10 和 VLAN 20 之间必须有一台能做路由的设备。这也是“划了 VLAN 之后发现不能互访”的原因——通常不是配错了,而是本来就需要配路由。
小结
交换机看 MAC、不懂 IP、不隔离广播;路由器看 IP、隔离广播、顺带做 NAT。同网段故障找交换机,跨网段故障找路由器。记住这三句,比背七层模型有用。
判断两台机器是否同网段,需要把 IP 和掩码一起算,手算容易错。直接用 IPv4 子网计算器,输入 IP 和掩码,网络地址、广播地址、可用主机范围会一起算出来。ARP 的具体机制在 ARP 与 MAC 地址 里展开讲。
相关:交换机端口镜像与抓包——想看到同网段互访的流量,只能在交换机上做镜像。










暂无评论内容