交换机通常是运行在网络OSI七层模型的第二层数据链路层,如图中,第三层网络层通常是路由器运行在该层
今天我们来看看,交换机的工作转发原理是什么样的。
交换机既然是利用端口进行网络数据传输,那么它是如何识别数据是谁给谁的呢?
其实交换机通电后会自动建立一个端口地址表,也叫MAC地址表它会记录每个设备的MAC地址机和哪个端口连接的,它会有自动学习功能,一开始如果没有地址,每次经过交换机的信息,它都会读取并记录下送信息过来的设备端口MAC地址,如果下次有其他设备送信息给该设备,就直接送达了。
最普遍的情况下,转发原则是这样的:交换机收到一个以太帧数据,它自己会比对交换机已经学习到的端口地址表,如果表里存在端口地址,直接在对应的端口转发出去。如果表里不存在,则会向剩下的每个端口(除送信息过来的端口)广播发送一条相同的信息。
这是我能用自己的话把我所理解的交换机转发原理尽力展示给大家了,中间已经省掉一些没必要纠缠的专业术语了。
为了方便大家理解,手动图:
交换机A和交换机B,现在如果从主机01发一个数据到主机03,设定的前提是,交换机A和B的地址表都是空白。
那么首先,从主机01发数据到交换机A,交换机A在收到数据以后,先识别出主机的MAC地址是01(假设是01因为每台设备都是16进制的唯一地址),端口号是1。
交换机A查找自己MAC地址表,发现没有(如果有就直接转发),交换机A向其他的所有端口广播。
交换机B收到数据信息后,识别并学习源地址和过来的端口号。
交换机B查看地址表,发现没有,记录并向除了端口3以外的两个端口发送广播包。
最后的情况是,主机02会收到数据一次,不是自己的,丢弃数据;主机03收到数据一次,正好是自己的,接收数据;主机04也收到一次,丢弃。
整个转发过程就是这样了。