交换机与路由器的区别,看它们各自维护哪张表

能背定义,但判断不了故障

几乎所有人都学过“交换机工作在数据链路层,路由器工作在网络层”。然后呢?宿舍或办公室断网了,你面前有一台闪灯的交换机和一台闪灯的路由器,谁出问题会导致什么现象?

课本没讲。但这个问题有明确答案,因为两者的区别本质上是各自维护一张什么表。

交换机的世界:只有 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 地址 里展开讲。

相关:交换机端口镜像与抓包——想看到同网段互访的流量,只能在交换机上做镜像。

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容