交换机是二层设备,工作在OSI模型的第二层--数据链路层,交换的基本概念指基于以下两条准则做出决策的设备:
- 进入(ingress)端口
- 目的地址
术语ingress用于描述帧通过特定端口进入设备,egress用于描述设备通过特定端口离开设备。交换机做出转发决定的时候,是基于进入端口以及消息的目的地址的。
交换机维护一张MAC地址表,里面存放了MAC地址与交换机端口的映射,MAC地址表也称为CAM(Content Addressable Memory) 表。 通过这张表决定如何转发数据流。交换机唯一智能部分是利用这张表基于消息的进入端口和目的地址来转发。一个交换机中只有一张定义了地址和端口的主交换表;因此,无论进入端口如何,同一目的地址的消息永远从同一出口离开。
交换机转发操作
交换机对帧的转发操作行为一共有三种:泛洪(Flooding) ,转发(Forwarding) , 丢弃(Discarding) 。
泛洪:交换机把从某一端口进来的帧通过所有其它的端口转发出去(注意, “所有其它的端口” 是指除了这个帧进入交换机的那个端口以外的所有端口) 。
转发:交换机把从某一端口进来的帧通过另一个端口转发出去(注意, “另一个端口” 不能是这个帧进入交换机的那个端口) 。
丢弃:交换机把从某一端口进来的帧直接丢弃。
交换机的基本工作原理可以概括地描述如下:
1、如果进入交换机的是一个单播帧, 则交换机会去MAC地址表中查找这个帧的目的MAC地址。
1) 如果查不到这个MAC地址, 则交换机执行泛洪操作。
2) 如果查到了这个MAC地址, 则比较这个MAC地址在MAC地址表中对应的端口是不是这个帧进入交换机的那个端口。 如果不是, 则交换机执行转发操作。 如果是, 则交换机执行丢弃操作。
2、如果进入交换机的是一个广播帧, 则交换机不会去查MAC地址表,而是直接执行泛洪操作。
3、如果进入交换机的是一个组播帧, 则交换机的处理行为比较复杂,超出了这里的学习范围, 所以略去不讲。
另外, 交换机还具有学习能力。 当一个帧进入交换机后, 交换机会检查这个帧的源MAC地址, 并将该源MAC地址与这个帧进入交换机的那个端口进行映射,然后将这个映射关系存放进MAC地址表。
交换机域:
交换机比较容易混淆的两个术语是冲突域和广播域。
冲突域
设备间共享同一网段称为冲突域。因为该网段内两个以上设备同时尝试通讯时,可能发生冲突。使用工作在数据链路层的交换机可将各个网段的冲突域隔离,并减少竞争带宽的设备数量。交换机的每一个端口就是一个新的网段,因为插入端口的设备之间无需竞争。结果是每一个端口都代表一个新的冲突域。网段上的设备可以使用更多带宽,冲突域内的冲突不会影响到其他网段,这也成为微网段。
广播域
尽管交换机按照MAC地址过滤大多数帧,它们并不能过滤广播帧。LAN上的交换机接收到广播包后,必须对所有端口泛洪。互连的交换机集合形成了一个广播域。网络层设备如路由器,可隔离二层广播域。路由器可同时隔离冲突和广播域。
当设备发出二层广播包,帧中的目的MAC地址被设置为全二进制数,广播域中的所有设备都会接收到该帧。二层广播域也称为MAC广播域。MAC广播域包含LAN上所有接收到广播帧的设备。广播通信比较多时,可能会带来广播风暴。特别是在包含不同速率的网段,高速网段产生的广播流量可能导致低速网段严重拥挤,乃至崩溃。