交换机概念
交换机分为二层交换机和三层交换机。 二层交换机工作在TCP/IP对等模型的第二层,即数据链路层,它对数据包的转发是建立在MAC地址基础之上的,是直接连接用户终端的设备,离用户最近。 三层交换机是具有三层交换设备的多端口交换机,可连接不同网络进行通信。
MAC地址:设备的唯一标识,长度为48位(6个字节),前3个字节,代表网络硬件制造商的编号,后3个字节,代表该制造商所制造的某个网络产品(如网卡)的系列号。 例:08:00:20:0A:8C:6D
交换机转发原理
交换机中有一个MAC地址表,里面存放了MAC地址与交换机端口的映射关系。
交换机收到数据帧后对进行处理,交换机对数据帧的处理行为一共有三种:泛洪,转发,丢弃。
泛洪(Flooding):交换机收到一个单播数据帧后,交换机会去MAC表查这个帧的目的MAC地址。如果查不到这个MAC地址,则交换机将对该单播帧执行泛洪操作,将数据帧转发给交换机所有端口(除源端口外)。
如果交换机收到的是一个广播帧,会直接泛洪出去,不会查MAC表项。
如图:若A发送数据给D,switch无D的MAC条目,则对端口进行泛洪。
转发(Forwarding):交换机收到一个单播数据帧后,会查看MAC表项,如果查到了对应目的MAC地址条目,且MAC地址表中对应的端口编号是不是源端口,则交换机进行转发操作。 如图:A发送数据给B,根据交换机MAC地址表,存在对应MAC条目,且端口与源端口不同,交换机将数据通过对应端口E1转发出去。
丢弃(Discarding):交换机收到一个单播数据帧后,会查看MAC表项,如果查到了对应目的MAC地址条目,且MAC地址表中对应的端口编号是源端口,则丢弃数据帧。
如图,交换机2收到数据帧后,发现目的MAC地址对应的端口就是接收数据帧的端口,则 会丢弃该数据帧。
交换机学习原理
交换机在初始化状态下,MAC表为空,那么就需要通过“学习”来了解端口连接设备的MAC地址。
学习(Learning):交换机在进行数据转发时,交换机对发送端的MAC地址和端口进行记录,这个过程就叫做学习。
交换机工作过程
如图,在若主机1已知主机2的MAC地址,想要进行数据传输。
1.因为switch初始化,无MAC地址条目,但交换机会收到A的数据帧,交换机会“学习”将数据帧的源MAC地址和对应端口编号记录到MAC地址表中
2.交换机MAC表中无对应MAC条目,泛洪数据帧
3.交换机除源端口外连接的设备都会收到数据帧,但只有数据帧中目标MAC对应主机才会进行回应,发送单播数据帧,目标MAC为主机1的MAC.
4.交换机收到主机2的回应数据帧,会查看MAC地址表,发现有对应条目,将数据包从对应接口转发出去,并将主机2发送的回应包中的源MAC地址和对应端口编号记录到MAC地址表中。
5.因此双方在交换机中都有MAC条目,可以直接通信。
交换机工作过程验证
实验拓扑如下:
1.在主机PC1、PC2上配置相关地址信息,此时交换机LSW1为初始化状态,LSW1无MAC表项;
2.使用Wireshark抓包根据对PC2的Eth0/0/1端口进行数据抓包,在PC1上使用ping 192.168.1.2命令,抓包数据,如下图所示:
由上图可知,此接口先收到的是广播发送的数据帧。 由下图可知,PC2以单播形式发送回应包,目标MAC为PC1的MAC地址。
3.此时查看交换机LSW!上的MAC地址表
由上图可知,交换机将对应MAC地址、端口号学习写入了MAC表中。
4.在交换机上的Eth0/0/4接口上进行抓包,抓包数据如下:
由上图可知,交换机LSW1会发送广播包,LSW2收到后不作回应,直接丢弃。
5.查看LSW2的MAC表,可发现交换机对PC1的数据帧的MAC地址与端口进行了记录,如图:
总结
MAC表是交换机转发的主要依据,交换机对数据帧的转发状态取决于其MAC表是否存在对应条目。