首先我们要了解交换机mac地址是怎么学习的之前要了解一下交换机是如何工作的。
参考模型
交换机工作在OSI模型的第二层,也就是数据链路层,数据链路层传输的数据叫数据帧。数据链路层使用的封装一般使用以太网进行封装,也就是Ethernet Ⅱ 以太帧。
这里随便抓个包演示一下
由于交换机工作在数据链路层,也就是说交换机收到一个报文他只会解封装到数据链路层,以太,然后在根据目的mac地址来对数据帧进行传输。
当交换机从接口收到一个报文后,解封装,然后将源mac记录在mac地址表,记录这个mac地址来源于哪个接口,当接口为down状态或超过老化时间,交换机会将来源于该接口的mac地址删除,这里后面我会实验演示。
1.泛洪:收到目的mac地址为ff:ff:ff:ff:ff:ff,向同一广播域的接口复制转发(一对所有)
抓包演示
2.转发:从一个接口接收到数据帧后,查看mac地址表,存在目的mac地址,然后一对一接口转发(一对一)
3.丢弃:从一个接口接收到数据帧后,mac地址表不存在对应mac地址或数据帧不合法,丢弃
有了以上基础,我们就可以实战演示一下交换机的mac地址表是怎么生成的,以及如何转发数据帧。
以下实验使用华为模拟器实现,其他模拟器也可以同样验证,原理一样。
拓扑图
步骤一
第一步我们先看看交换机的mac地址表
<Huawei>system-view
Enter system view, return user view with Ctrl+Z.
[Huawei]sysname S1 #设置主机名
[S1]display mac-address #查看mac地址表
我们可以看到初始状态交换机的mac地址表是空的,华为交换机直接不显示,下一步我们看看交换机是如何将mac添加到表上的。
步骤二
为PC1添加IP地址,然后发送广播帧。
由于是二层网络,这里不需要添加网关IP地址。
然后ping一个网络中没有的主机地址,发送广播帧。
抓包截取
PC1尝试广播获取目的IP地址mac。
步骤三
查看交换机mac地址表
此时可以看到交换机将PC1的mac地址记录并标明来源的接口。
总结:也就是说当交换机收到某接口的数据帧时,将该数据帧的源mac地址记录到交换机的mac地址表并标明来源接口,下一次收到数据帧时,并通过mac地址表进行转发。
扩展:交换机MAC地址绑定(静态)
拓扑图
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地址表
END