目录
一、以太网交换机自学习和转发帧的过程
1.两层交换机和三层交换机
大家可能注意到平常做题时有叫两层交换机,或者三层交换机的。
两层交换机就是第四节(计网第三章(数据链路层)(四)_永无魇足的博客-CSDN博客)所讲的交换机,即工作在数据链路层(包括物理层)的交换机。
实际上,也有包含网络层部分功能的交换机,叫做三层交换机。
2.以太网交换机的基本原理
以太网交换机收到帧后,在帧交换表中查找帧的目的MAC地址所对应的接口号,然后通过该接口转发帧。
以太网交换机是一种即插即用设备,刚上电启动时,内部的帧交换表是空的。随着网络主机之间的通信,以太网交换机通过自学习算法自动逐渐建立起帧交换表。
以太网交换机的帧交换表主要记录对应目的地址的MAC地址和对应的接口。
这里要注意:第四节所说的ARP高速缓存表是主机的,而交换机的是帧交换表。两者不一样,不能搞混。
ARP高速缓存表的类型有两种,即静态和动态。交换机的帧交换表也同样有静态和动态两种,可以由管理员手动配置或者通过自学习完成。
3.具体实现过程
如图:
假设各主机知道网络上其他主机的MAC地址(无需进行ARP)。各主机的MAC地址用字母代替。
现在,主机A想给主机D发送帧,
A的帧从交换机1的接口1进入,交换机1会先进行登记,将主机A的MAC地址和所在接口记录到帧转换表中(这个过程就是以太网交换机的自学习过程)。随后在帧转换表中查找主机D的记录,发现没有后,向除源接口外的所有接口发送(即盲目转发,称为泛洪)。
帧从交换机1的接口4转发给交换机2的接口3,随后交换机2继续和前述一样的操作,登记(注意对于交换机2来说,主机A对应的是它的接口3)然后查找主机D的记录,发现没有(因为现在交换机2还没学习到D的记录),随后也进行泛洪。
除了主机D之外,其余的主机在检查该帧的目的地址后知道不是发送给自己的,将其丢弃。
而主机D知道这是给自己的帧,随即接受。
注意:这不是ARP协议,所以也不会有主机D收到后,又给主机A一个响应报文这种操作。
因为A已经在帧交换表中有记录了,所以下一次发送帧,只要主机A是目的主机,就不会有泛洪这种情况出现。
假设现在主机F给主机A发送帧。同样地,交换机2先进行登记,随后在帧交换表里面查找,找到A的记录,随即从接口3转发出去;交换机1收到后,登记F的记录,随后在帧交换表里面查找,找到A的记录,随即从接口1转发出去,最终传给主机A。
如果现在主机C想给主机B发送帧呢?
其实和主机A给主机D发送帧的过程是一样的,但是博主想要强调的是虽然B和C在同一个交换机连着,但是因为帧转换表里没有C的记录,所以仍然会泛洪,所以交换机2也会收到该帧。希望大家能注意到里面的小细节。
还有需要注意的是:帧交换表中的记录并不是永久性的,有效时间过后就会自动删除。原因是因为MAC地址和交换机的接口对应的关系不是永久的,比如某个交换机的某个接口所连接的主机换成另外一个等等。
最后就是交换机的一个特点,这点实际已经在第四节有提到过,就是如果发送接口和源接口一样的话,交换机就会丢弃该帧。
如图:假设主机G要向主机A发送帧,帧通过总线传送给主机A和交换机1,交换机1进行登记,并在帧交换表中进行查找,发现发送该帧的接口也是接口1,随机对其进行丢弃。
注意:实际上主机A接收到该帧了,因为是在总线上进行传输的,所以不要以为主机A没有接收到该帧。