交换机的转发原理
以太交换机通过MAC地址表转发二层以太帧。
那么什么是MAC地址表呢?MAC地址表就像一本通信录,记录了所有人的姓名和地址,通过这本通信录,可以找到想要联系的人。交换机通过学习数据帧的源MAC地址构建这本通信录(MAC地址表),在这本通信录中,不仅要记录源MAC地址,还需要同时记录MAC地址来源的端口(以及对应的VLAN),并将MAC地址与来源端口进行绑定。这样既知道了这个人的姓名(MAC地址)也知道他的家庭住址(端口)。
有了这本通信录,就可以转发数据帧了。交换机收到数据帧后,根据目的MAC地址(收件人姓名)查询通信录,找到收件人及其家庭住址(端口),将数据帧从端口转发出去。在该流程中,你一定会觉得交换机就是个快递员。没错,它就是个快递员,只不过快递的物品是数据帧。
但是它也有它的苦恼,那就是交换机的通信录(MAC地址表)能记录的数量是有限的,如果之前记录过的地址(MAC地址)不存在了,那么交换机还需要继续在通信录中记录这个无效的地址(MAC地址)吗?答案是肯定不会的,交换机会为每一条MAC地址都启动一个定时器,定时器的老化时间为300秒(可以更改),如果在300秒内都没有收到该MAC地址发送的数据帧,则将该MAC地址从通信录(MAC地址表)中删除。
下面我们通过图1来具体地了解交换机的转发原理。
图1 交换机转发原理
① PC A发送数据帧给PC D[目的MAC地址为PC D 的MAC地址(0260.8c01.4444),源MAC地址为PC A的 MAC地址(0260.8c01.1111)],交换机从E0端口收到数据帧后,根据数据帧的目的MAC地址查找交换机的MAC地址表。
由于交换机的MAC地址表为空,在MAC地址表中找不到目的MAC地址,交换机便将该数据帧从除接收端口(E0)外的其他端口全部转发出去,这种特性称被为泛洪。
同时,交换机会学习数据帧的源MAC地址,并将该MAC地址和接收端口记录到MAC地址表中,这种特性被称为学习(Learn)(学习源MAC地址)。转发数据帧后的MAC地址表如图1(b)所示。
② 由于该数据帧被交换机泛洪出去,所以PC B、PC C和PC D都能收到该数据帧,但是PC B和PC C会丢弃该数据帧,原因是它们接收数据帧后会对比数据帧的目的MAC地址与接收端口的MAC地址是否一致,如果一致则说明数据帧是给自己的便会接收,如果不一致则丢弃。
PC D收到数据帧后同样会检查目的MAC地址是否与自己端口的MAC地址一致,发现MAC地址一致,PC D知道数据帧是发给自己的,便拆封二层数据帧交给上层处理。
同时给PC A发送一个回复数据帧(目的MAC地址为PC A的MAC地(0260.8c01.1111),源MAC地址为PC D的MAC地址(0260.8c01.4444))。
③ 交换机从E3端口收到回复数据帧后,根据数据帧的目的MAC地址查找交换机的MAC地址表,交换机在MAC地址表中查找到了目的MAC地址,发现该MAC地址被绑定到了E0端口上。交换机便将该数据帧直接从E0端口转发出去,而不再进行泛洪。
这种特性被称为过滤。同时,交换机学习源MAC地址,并将MAC地址记录到MAC地址表,与E3端口绑定。转发数据帧后的MAC地址表如图1(c)所示。