一、路由表 (Routing Table):跨网段通讯的"卫星导航地图"
1.1 路由表
路由表是路由器(或三层交换机)的大脑,工作在网络层(OSI 第三层)。当设备收到一个数据包时,它只关心一件事:这个包的目的 IP 地址在哪?该把它往哪发送出去?
查看路由表:
- 在华为设备上执行
display ip routing-table,你会看到以下几个决定生死的关键字段:
| 字段 | 说明 |
|---|---|
| Destination/Mask(目的网段/掩码) | 数据包要去的终点站 |
| Proto(协议) | 这条路由是怎么学来的 |
| Pre(优先级) | 路由选路标准之一,越小越优 |
| Cost(开销) | 路由选路标准之二,越小越优 |
| NextHop(下一跳) | 核心中的核心!指明数据包离开本地后,下一个接手的路由器 IP 地址 |
| Interface(出接口) | 数据包从本地哪个物理网口扔出去 |

- Windows CMD执行
route print -4
|
|
- Linux shell 命令行执行
sudo route或ip route
|
|
1.2 Proto 协议类型详解
路由的来源决定了它的可信度和生命周期:
- Direct(直连):接口配置了 IP 地址并处于 UP 状态后自动生成的路由,优先级最高(Pre=0),最为可靠。
- Static(静态):管理员手工配置的固定路由,相当于"焊死"的路径。适合小型网络或作为默认路由。
- OSPF/RIP/EIGRP/BGP(动态):通过路由协议自动学习和维护的路由,能够适应网络拓扑变化。
1.3 路由选路原则
去同一个地方有多条路时,路由器遵循以下规则:
- 最长匹配优先:掩码最长的路由条目优先匹配。
- 先比优先级(Pre):优先级数值越小越优。
- 再比开销(Cost):优先级相同时,开销越小越优。
实战要点:路由器是典型的"甩手掌柜"。它不关心路线全貌,只看下一跳。如果路由表里找不到匹配的目的地,并且也没有缺省路由(
0.0.0.0/0),路由器会毫不犹豫地把包丢弃,并回一个 ICMP “目标不可达"消息。
二、ARP 表 (ARP Table):IP 到 MAC 的"翻译官”
2.1 ARP 表怎么看
在局域网的物理线路上,数据帧的传输只认 MAC 地址,不认 IP 地址。路由器虽然查了路由表知道了"下一跳"的 IP,但在发包前,必须知道对方的 MAC 地址才能封装以太网帧。ARP(Address Resolution Protocol,地址解析协议)就是用来做这个翻译工作的。
在电脑上执行 arp -a,或在网络设备上看 ARP 表,你会看到:
| 字段 | 说明 |
|---|---|
| IP Address(互联网地址) | 局域网内目标设备的 IP |
| MAC Address(物理地址) | 对应的网卡硬件地址 |
| Type(类型) | Dynamic(动态学习,带老化时间)或 Static(手工绑定,防欺骗) |

2.2 ARP 协议工作原理
ARP 的工作流程可以概括为四个步骤:
- 检查本地缓存:主机首先在自己的 ARP 缓存表中查找目标 IP 对应的 MAC 地址。
- 发送 ARP 请求(广播):如果缓存中没有,主机发送一个 ARP Request 广播帧,询问"谁是 xx.xx.xx.xx?请告诉你的 MAC 地址!“这个帧的目标 MAC 是
FF:FF:FF:FF:FF:FF。 - 收到请求的设备回复 ARP 响应(单播):目标 IP 对应的设备收到广播后,用自己的 MAC 地址回复一个 ARP Reply。
- 更新缓存:发起方收到回复后,将 IP-MAC 映射存入 ARP 缓存,后续通信直接使用。
2.3 跨网段通信时的 ARP 误区

划重点:跨网段通信时,你的 ARP 表里只有你们网关(路由器)的 MAC,不会有目标主机的 MAC! 你的电脑不能直接学到公网服务器的 MAC 地址了。
这是一个非常经典的面试考点和排障误区。很多初学者会疑惑:“为什么我 Ping 百度的时候,ARP 表里没有百度的 MAC 地址?“答案很简单:因为百度不在同一个广播域里,你的数据包首先要交给网关,而网关就是最后一跳的 MAC 地址。
2.4 ARP 安全
ARP 协议本身没有认证机制,因此存在多种攻击面:
- ARP 欺骗/投毒:攻击者发送伪造的 ARP 响应,将自己伪装成网关或其他主机,实施中间人攻击。
- 防御手段:
- 静态 ARP 绑定:
arp -s <IP> <MAC> - 交换机侧启用 DAI(Dynamic ARP Inspection)
- 部署 ARP 监控工具
- 静态 ARP 绑定:
三、MAC 地址表 (MAC Table):局域网的"花名册”
3.1 查看 MAC 地址表
MAC 地址表是二层交换机的大脑。交换机看不懂 IP 地址,只看以太网帧头部的 MAC 地址。它的作用就是在同一个局域网内,实现数据的精准投递,避免到处广播扰民。
在华为设备上执行 display mac-address,表结构极其简单:
| 字段 | 说明 |
|---|---|
| MAC Address | 学习到的主机网卡硬件地址 |
| Port(接口) | 这个 MAC 地址插在交换机的哪个物理端口上 |
| VLAN | 这个 MAC 属于哪个虚拟局域网 |

3.2 交换机三大核心行为
交换机的工作原理只有三板斧:
- 基于源 MAC 学习:收到帧时,记录源 MAC 地址和进入端口的对应关系,写入 MAC 地址表。
- 基于目的 MAC 转发:查 MAC 地址表,如果找到匹配项,从对应端口单播发出。
- 未知目的 MAC 泛洪:如果 MAC 地址表中没有目的 MAC 的记录,就将帧从除接收端口外的所有端口广播出去(Broadcast Flooding)。
3.3 MAC 地址表老化
动态学习的 MAC 表项不是永久有效的。交换机会定期清理长时间没有活动的表项,默认老化时间通常为 300 秒(5 分钟)。这意味着如果一台主机 5 分钟内没有发送任何数据,它在交换机上的 MAC 表项就会被删除,下次通信时需要重新学习。
3.4 MAC 泛洪攻击与防护

防身术:黑客最喜欢搞 MAC 泛洪攻击,用伪造的海量源 MAC 发包,瞬间把你的交换机表项塞满,导致正常数据全变成广播,借机抓包窃听。
应对大招是配置 port-security(端口安全),限制每个接口最多学习的 MAC 数量:
|
|
这样即使黑客发送了大量伪造源 MAC 的帧,交换机也只学习前 5 个,超出部分会被丢弃或触发告警。
四、实战推演:一个 Ping 包的跨网段生死流转
光说不练假把式。下面用一个完整的场景,演示三张表是如何协同工作的。
场景设定:
- PC1:IP
192.168.1.2,网关192.168.1.1- PC2:IP
192.168.2.2,网关192.168.2.1- 路由器:连接两个网段,接口分别为
192.168.1.1和192.168.2.1- 操作:PC1 Ping PC2
4.1 PC1 的判断与 ARP 求助
PC1 收到 Ping 指令后,首先判断目的 IP 192.168.2.2 是否在同一网段。通过子网掩码计算,发现不在同一网段,于是决定将数据包发送给网关。
此时 PC1 查自己的 ARP 缓存表,寻找网关 192.168.1.1 的 MAC 地址:
- 如果 ARP 表中有记录:直接使用,进入下一步。
- 如果 ARP 表中没有记录:发送 ARP 广播:“谁是
192.168.1.1?请告诉你的 MAC 地址!”
网关收到 ARP 请求后,回复自己的 MAC 地址。PC1 将 IP-MAC 映射存入 ARP 缓存。
PC1 封装好数据包:
|
|
4.2 交换机的 MAC 表转发
交换机收到以太网帧后,执行两个动作:
- 学习:记录 PC1 的源 MAC 地址和进入端口,写入 MAC 地址表。
- 转发:查询 MAC 地址表,找到路由器进接口 MAC 对应的端口,将帧从该端口转发给路由器。
4.3 路由器的拆包与换皮(核心环节!)
路由器收到帧后,执行以下操作:
- 解封装:撕开 MAC 层伪装,露出 IP 层数据包。
- 查路由表:发现去往
192.168.2.0/24网段的直连路由,出接口为连接 PC2 的那个接口。 - 查 ARP 表:在出接口所在网段中查找
192.168.2.2(PC2)的 MAC 地址。如果 ARP 表中没有,路由器也会发送 ARP 请求来获取。 - 重新封装(最关键的一步):
|
|
核心结论:IP 地址在整个跨网段传输过程中始终保持不变,它们是端到端的标识;而 MAC 地址在每一跳都会被重新封装,因为它们只具有链路本地的意义。
4.4 抵达终点
PC2 收到帧后:
- 检查目的 MAC 地址,确认是自己的网卡。
- 解封装,检查目的 IP 地址,确认是
192.168.2.2,正是自己。 - ICMP Echo Reply 回包过程同理,方向相反。

五、三张表联动总结
网络通信的底层真相,就藏在这套逻辑链里:
|
|
一句话记住精髓:数据包在网络中传递时,源 IP 和目的 IP 始终不变,指引着最终方向;但源 MAC 和目的 MAC 每经过一个路由器(每一跳),都会被无情地撕掉重写一次!
排障思维模型
| 现象 | 可能原因 | 排查命令 |
|---|---|---|
| 能 Ping 通网关但 Ping 不通外网 | 路由表缺少默认路由 | display ip routing-table |
| Ping 不通网关 | 网关 ARP 表项缺失或错误 | display arp |
| 同 VLAN 内两台主机不通 | MAC 地址表异常/VLAN 配置错误 | display mac-address |
| 网络中出现大量广播 | MAC 表被泛洪攻击 | display mac-address flapping |
| 间歇性断网 | ARP 缓存中毒 | arp -a 检查表项是否正确 |
六、延伸思考
6.1 为什么需要三张表?能不能合并?
三张表分别工作在不同的 OSI 层级,职责不可互相替代:
- 路由表:网络层决策——“包该往哪个方向走”
- ARP 表:网络层到数据链路层的桥梁——“下一跳的 MAC 是什么”
- MAC 地址表:数据链路层决策——“这个 MAC 在哪个端口上”
如果只有路由表没有 ARP 表,路由器知道往哪走但不知道如何封装帧;如果只有 ARP 表没有 MAC 表,局域网内的交换就退化为集线器式的广播。三者缺一不可。
6.2 IPv6 时代的变化
IPv6 引入了 NDP(Neighbor Discovery Protocol,邻居发现协议) 来替代 ARP,功能类似但更加完善。 NDP 基于 ICMPv6 实现,支持无状态地址自动配置(SLAAC),安全性也有所提升。不过核心思想是一致的:IP 地址到链路层地址的映射。
参考资源
- RFC 826 — An Ethernet Address Resolution Protocol
- RFC 4861 — Neighbor Discovery for IP version 6 (IPv6)
- Cisco — Understanding and Troubleshooting ARP
- 华为 — IP Routing Configuration Guide