什么是MAC地址表
我做一个通俗的比喻,MAC地址表,就像是交换机的 “通讯录” 或 “导航地图”
如果说交换机是办公大楼里的 “邮件管理员”,那么 MAC 地址表(MAC Address Table)就是这位管理员手里的那本动态更新的 “员工位置分布图”。
| 员工的身份证号 (MAC 地址) | 他坐在哪个房间 (交换机端口号) |
| AA:AA:AA:AA:AA:AA | 1 |
| BB:BB:BB:BB:BB:BB | 2 |
| … | … |
如何在Cisco设备上查看MAC地址表
我们在Cisco的交换机上可以通过使用命令show mac address-table来查看MAC地址表

这里面的信息比刚才那个比喻更加详细,主要包含了四部分信息:
- Vlan
- 表示这个设备目前属于哪个Vlan
- Mac address
- 设备的MAC地址是什么
- Type
- 这个MAC地址是如何添加在MAC地址表中的,Dynamic表示动态学习,Static表示手动添加
- Ports
- 这个设备连接在交换机的哪个端口
MAC地址表是如何建立的
1. Static 静态手动绑定
使用下面的命令,可以手动建立一个MAC地址和端口的绑定关系。
Switch(config)#mac address-table static <MAC> vlan <VLAN ID> interface <INT ID> 下面是一个配置实例Switch(config)#mac address-table static 00:50:79:66:68:00 vlan 1 interface e0/0上面的命令,可以实现手动将地址00:50:79:66:68:00绑定到属于vlan1的e0/0端口,在MAC地址表中会显示为STATIC。

如果将e0/0端口划分到其他vlan中,比如vlan10,那么地址00:50:79:66:68:00的设备在vlan10中会同时显示为Dynamic动态学习。

不管是Static还是Dynamic的类型,该设备都可以和相同vlan中的其他设备通信。
2. Dynamic 动态学习
初始状态: 交换机刚通电时,它的 MAC 地址表是空的。不知道具体的设备(MAC地址)在哪个端口。
第一步:学习(Learning)
比如连接在 1 号端口 的电脑 A (假设MAC地址为AA) 要给连接在 2 号端口 的电脑 B (假设MAC地址为BB) 发送数据。电脑 A 发出一个数据帧,这个帧的头部包含了源 MAC 地址 (AA) 和目标 MAC 地址 (BB)。数据帧到达交换机。交换机首先查看数据帧的源 MAC 地址。它发现源 MAC 是 AA,并且这个数据是从 1 号端口 进来的。交换机立刻在它的 MAC 地址表里记录:MAC 地址 AA 对应 1 号端口。 这就是 “学习” 过程。
第二步:转发(Forwarding)或泛洪(Flooding)
交换机已经学到了电脑 A 的位置,但现在它要将这个数据帧发给电脑 B。交换机查看数据帧的目标 MAC 地址,也就是 BB。现在会出现如下两种情况:
- 情况一(地址已知): 假设之前 电脑 B 已经发过言,交换机已经学到了 电脑 B 的位置在 2 号端口。那么交换机查表后会发现 MAC地址 BB 对应 2 号端口。于是,它会把数据帧只从 2 号端口精确地发送出去。这就叫转发 (Forwarding)。
- 情况二(地址未知): 表里还没有 电脑 B 的记录。交换机不知道 电脑 B 在哪里,怎么办?它只能采取最 “笨” 但最有效的方法 ——泛洪 (Flooding)。它会把这个数据帧复制并发送给除了来源端口(1 号)以外的所有其他端口,然后等待 电脑 B 的回复。
简单来说,当设备之间发生过通信后,设备的MAC地址和所连接端口的映射关系就会被交换机通过Dynamic的方式学习记录。并且在Type中会显示为DYNAMIC,如下图

MAC 地址表的维护:老化时间(Aging Time)
MAC 地址表里的条目不是永久的(除非Type为STATIC,也就是管理员手动绑定)。
Dynamic类型的条目在MAC地址表里会有一个 “老化时间”(Aging Time),在Cisco设备中通常是 300 秒(5 分钟)。如果交换机在 5 分钟内没有再收到过来自某个 MAC 地址的数据,它就会认为这个设备可能已经离线了,从而将这条记录从表中删除,以节省内存空间。
通过下面的命令可以查看 “老化时间”(Aging Time)
Switch#show mac address-table aging-time
在上图中看到,Aging Time 的时间是300,单位是秒。
通过下面的命令可以更改老化时间
Switch(config)#mac address-table aging-time <time>
输入0表示禁用老化计时器,也就是所有Dynamic类型的MAC地址都永不超时,或者可以在10-100000(单位秒)中选择一个数值。
在我的课程中,包含更多详细内容。理论讲解、实验演示、命令文档等内容多维一体。助您一次通过Cisco认证考试!课程优惠券请点击这里