首先我们要了解交换机mac地址是怎么学习的之前要了解一下交换机是如何工作的。

参考模型

android 模拟器 mac地址更换_android 模拟器 mac地址更换

 交换机工作在OSI模型的第二层,也就是数据链路层,数据链路层传输的数据叫数据帧。数据链路层使用的封装一般使用以太网进行封装,也就是Ethernet Ⅱ 以太帧。

这里随便抓个包演示一下

android 模拟器 mac地址更换_mac地址_02

由于交换机工作在数据链路层,也就是说交换机收到一个报文他只会解封装到数据链路层,以太,然后在根据目的mac地址来对数据帧进行传输。

当交换机从接口收到一个报文后,解封装,然后将源mac记录在mac地址表,记录这个mac地址来源于哪个接口,当接口为down状态或超过老化时间,交换机会将来源于该接口的mac地址删除,这里后面我会实验演示。

android 模拟器 mac地址更换_android 模拟器 mac地址更换_03

1.泛洪:收到目的mac地址为ff:ff:ff:ff:ff:ff,向同一广播域的接口复制转发(一对所有)

抓包演示

android 模拟器 mac地址更换_mac地址_04

2.转发:从一个接口接收到数据帧后,查看mac地址表,存在目的mac地址,然后一对一接口转发(一对一)

3.丢弃:从一个接口接收到数据帧后,mac地址表不存在对应mac地址或数据帧不合法,丢弃

有了以上基础,我们就可以实战演示一下交换机的mac地址表是怎么生成的,以及如何转发数据帧。

以下实验使用华为模拟器实现,其他模拟器也可以同样验证,原理一样。

拓扑图

android 模拟器 mac地址更换_数据链路层_05

步骤一

第一步我们先看看交换机的mac地址表

<Huawei>system-view 
Enter system view, return user view with Ctrl+Z.
[Huawei]sysname S1                                  #设置主机名
[S1]display mac-address                             #查看mac地址表

 

android 模拟器 mac地址更换_数据链路层_06

 我们可以看到初始状态交换机的mac地址表是空的,华为交换机直接不显示,下一步我们看看交换机是如何将mac添加到表上的。

步骤二

为PC1添加IP地址,然后发送广播帧。

android 模拟器 mac地址更换_网络_07

由于是二层网络,这里不需要添加网关IP地址。

然后ping一个网络中没有的主机地址,发送广播帧。

 

android 模拟器 mac地址更换_数据链路层_08

 抓包截取

android 模拟器 mac地址更换_android 模拟器 mac地址更换_09

PC1尝试广播获取目的IP地址mac。

步骤三

查看交换机mac地址表

android 模拟器 mac地址更换_android 模拟器 mac地址更换_10

 此时可以看到交换机将PC1的mac地址记录并标明来源的接口。

总结:也就是说当交换机收到某接口的数据帧时,将该数据帧的源mac地址记录到交换机的mac地址表并标明来源接口,下一次收到数据帧时,并通过mac地址表进行转发。

扩展:交换机MAC地址绑定(静态)

拓扑图

android 模拟器 mac地址更换_mac地址_11

 R1

[Huawei]sysname R1
[R1]interface Ethernet0/0/0
[R1-Ethernet0/0/0]ip address 192.168.1.1 24
[R1-Ethernet0/0/0]mac-address 1-1-1          #更改mac地址

R2

[Huawei]sysname R2
[R2]interface Ethernet0/0/0
[R2-Ethernet0/0/0]ip address 192.168.1.2 24
[R2-Ethernet0/0/0]mac-address 2-2-2          #更改mac地址

S1

[S1]mac-address static 1-1-1 Ethernet 0/0/1 vlan 1     #静态mac绑定
[S1]mac-address static 2-2-2 Ethernet 0/0/2 vlan 1     #静态mac绑定
[S1]interface Ethernet0/0/1
[S1-Ethernet0/0/1]port link-type access                
[S1-Ethernet0/0/1]q
[S1]interface Ethernet0/0/2
[S1-Ethernet0/0/2]port link-type access 
[S1-Ethernet0/0/2]q

查看交换机MAC地址表

android 模拟器 mac地址更换_数据链路层_12

END