计算机网络:路由器与交换机的区别是什么?

#计算机网络#操作系统#面试八股

计算机网络:路由器与交换机的区别是什么?

结论:交换机工作在数据链路层,按 MAC 地址在同一广播域内转发帧;路由器工作在网络层,按 IP 地址与路由表在不同网段之间转发包。 一句话:交换机管"同一张网里怎么走",路由器管"不同网之间怎么走"。

1. 对比

维度交换机(二层)路由器(三层)
工作层次数据链路层网络层
转发依据目的 MAC + MAC 表目的 IP + 路由表,最长前缀匹配
广播域不隔离(VLAN 可切开)隔离,每个接口一个广播域
冲突域隔离,每端口一个隔离
是否改包不改,只转发帧TTL 减一、重算校验和、重写二层头
典型接口大量 LAN 口少量 WAN / LAN 口
附加功能VLAN、链路聚合、STPNAT、DHCP、ACL、VPN、QoS
转发性能ASIC 线速转发,延迟低需查路由,略高

2. 各自怎么转发

交换机(同一网段):
收到帧 → 学源 MAC 与入端口 → 查目的 MAC
        ├─ 命中 → 只从对应端口发出(单播)
        └─ 未命中 → 向除入端口外的所有端口泛洪
MAC 表项默认老化时间约 300 秒

路由器(跨网段):
收到包 → 查 FIB 做最长前缀匹配 → TTL-1 → 重算首部校验和
       → ARP 解析下一跳 MAC → 重写二层头 → 从出接口发出

关键差异:IP 地址端到端不变,MAC 地址逐跳重写。 主机访问另一个网段时,目的 MAC 填的是网关的 MAC,而不是最终目标的 MAC。

3. 在 Linux 上看二层与三层

# 把两块网卡桥接成一台"二层交换机"
ip link add br0 type bridge
ip link set eth1 master br0
ip link set eth2 master br0
ip link set br0 up

# 看交换机的 MAC 表(FDB),对应物理交换机的 CAM 表
bridge fdb show br br0

# 三层转发:加路由、按目标查出口、看 ARP 邻居
ip route add 10.1.0.0/16 via 192.168.1.1 dev eth0
ip route get 10.1.2.3
ip neigh show

bridge fdb show 是二层转发表,ip neigh show 是三层 ARP 缓存,排查时别把两者混为一谈。

4. 常见追问

Q:跨网段访问时,MAC 怎么变? 源主机查路由发现下一跳是网关,于是目的 MAC 填网关 MAC;网关收到后查路由,再改写成下一跳的 MAC。 IP 首部的源/目的地址全程不变(NAT 除外),变的只有二层头,这就是"逐跳转发"。

Q:三层交换机和路由器有什么区别? 三层交换机本质是"带路由功能的交换机":用 ASIC 做线速转发,端口密度高,适合机房内网段间高速互访; 路由器接口类型更丰富(专线、拨号、VPN),强调策略、NAT 与广域网互联。 家用"路由器"其实是路由 + 交换 + 无线 AP 的一体机。

Q:VLAN 和子网是一回事吗? 不是。VLAN 在二层隔离广播域,子网在三层划分 IP 范围。 实践中通常一个 VLAN 对应一个子网,但两者可以独立配置,跨 VLAN 通信必须经过三层设备。

Q:为什么 ARP 广播不会穿过路由器? 路由器默认不转发广播帧,这正是"隔离广播域"的含义。 所以跨网段必须先有网关,由网关代答 ARP 或直接路由,而不是让 ARP 广播满网飞。

Q:Hub、交换机、路由器怎么排? Hub 工作在物理层,所有端口共享一个冲突域,半双工;交换机按 MAC 转发,每端口独立冲突域; 路由器按 IP 转发并隔离广播域。三者是从"共享"到"隔离"的递进。

Q:交换机接成环路会怎样? 广播帧会在环里无限循环,形成广播风暴,MAC 表也被反复覆盖,网络很快瘫痪。 所以要用 STP / RSTP 阻塞冗余链路,或在数据中心用堆叠、MC-LAG 替代。

小结

交换机用 MAC 表在广播域内做精确投递,路由器用路由表在网段之间择路转发。 记住两条铁律:MAC 逐跳改写、IP 端到端保持;交换机隔离冲突域、路由器隔离广播域。 把这两条讲清,再谈三层交换、VLAN、NAT,逻辑都不会乱。

笔记加载中…