交换机工作的基本原理需要结合实验来理解,下面是我听完课后通过华为模拟器实验总结的学习笔记。
交换机工作在数据链路层,它对数据帧的转发是建立在mac地址基础之上的。交换机 不同的接口发送和接收数据是独立的,各接口属于不同的冲突域,因此有效地隔离了网络 中的冲突域。 二层交换设备通过学习以太网数据帧的源MAC地址来维护MAC地址与接口的对应关系(保存MAC与接口对应关系的表称为MAC地址表),通过其目的MAC地址来查找MAC地址表决定向哪个接口转发。
工作原理:
初始状态下,MAC地址表为空。
当PC1想要和PC2交换数据的时候,他需要先将自己的MAC地址和PC2的MAC地址封装起来发送给交换机,让它替自己寻找PC2,交换机接受到PC1的数据帧之后,会先学习PC1的MAC地址,然后把这个地址放在自己的MAC表上。
MAC地址表记录了交换机学习到的其他设备的MAC地址与接口的对应关系。交换机在转发 数据帧时,根据数据帧的目的MAC地址查询MAC地址表。如果MAC地址表中包含与该帧目的MAC地址对应的表项,则直接通过该表项中的出接口转发该报文;当交换机接收到数据帧的时候,发现MAC表并没有所需的MAC地址,这交换机将采取泛洪方式在除接收接口外的所有接口发送该报文,当符合该MAC地址的PC2识别之后,将该信息回传,交换机记录PC2的MAC地址,之后再将信息传回PC1。
交换机会通过传输介质进入其端口的每一个帧都进行转发操作,交换机的基本作用就是用 来转发数据帧。 交换机对帧的处理行为一共有三种:泛洪(Flooding),转发(Forwarding),丢弃 (Discarding)。 泛洪:交换机把从某一端口进来的帧通过所有其它的端口转发出去(注意,“所有其 它的端口”是指除了这个帧进入交换机的那个端口以外的所有端口)。 如果从传输介质进入交换机的某个端口的帧是一个单播帧,交换机会去MAC表查这个帧的 目的MAC地址。如果查不到这个MAC地址,则交换机将对该单播帧执行泛洪操作。 如果从传输介质进入交换机的某个端口的帧是一个广播帧,交换机不会去查MAC地址表, 而是直接对该广播帧执行泛洪操作。
如上面的实验图,PC1首次去访问PC2,且不知道对应的MAC地址,对E0/0/1接口进行抓包,发现进入交换机的某个端口的帧是一个ARP广播帧,交换机直接对该广播帧执行泛洪操作。同时,交换机将收到的数据帧的源MAC地址和对应端口编号记录到MAC地址表中。
对交换机执行DIS mac-address命令,发现原本空的MAC地址表中记录了PC1的相关信息。
直到PC1和PC2正常通信后,再次对交换机执行DIS mac-address命令,发现交换机也学习到了PC2的相关信息。
转发:交换机把从某一端口进来的帧通过另一个端口转发出去(注意,“另一个端口” 不能是这个帧进入交换机的那个端口)。如果从传输介质进入交换机的某个端口的帧是一个单播帧,则交换机会去MAC表查这个帧的目的MAC地址。如果查到了这个MAC地址表,则比较这个MAC地址在MAC地址表中对应的端口编号是不是这个帧从传输介质进入交换机的那个端口的端口编号。如果不是,则交换机执行转发操作。
通过第一次通信,交换机的MAC地址表中已经记录了PC1的相关信息,下面以PC2访问PC1为例,对E0/0/1进行抓包,结果如图,交换机不再执行泛洪,在MAC地址表中查到了对应的表项,点对点转发该数据帧,MAC地址为5489-98FF-4623的数据帧通过E0/0/1接口转发,MAC地址为5489-98DC-41E3的数据帧通过E0/0/2接口转发,PC2和PC1正常通信。
丢弃:交换机把从某一端口进来的帧直接丢弃。如果从传输介质进入交换机的某个端口的帧是一个单播帧,则交换机会去MAC表查这个帧的目的MAC地址。如果查到了这个MAC地址表,则比较这个MAC地址在MAC地址表中对应的端口编号是不是这个帧从传输介质进入交换机的那个端口的端口编号。如果是,则交换机将对该帧执行丢弃操作。
如图,PC1想要访问PC2,发送单播数据帧,交换机1收到后,若MAC地址表中查不到对应的表项,则会泛洪该数据帧。交换机2收到该数据帧后,发现目的MAC地址对应的端口就是接收数据帧的端口,则会丢弃该数据帧。抓包发现,交换机2收到了ARP广播包,没有做出任何回应,之后就将这个帧丢弃了。