代码改变世界

什么是交换机?它是如何工作的?

2017-03-27 12:44  old_radish  阅读(1643)  评论(0编辑  收藏  举报

什么是交换机,它是如何工作的?
    
    交换机是一种冲突域隔断的机器,早期只连接两个网络的时候,并不叫交换机,而是叫网桥。

    它的两个主要功能就是分割冲突域与转发数据。

    因为一个大的网络,冲突域非常大,所以就需要引入交换机来切割网络,以达到分割冲突域的作用。那么大型网络分割之后,新的问题双来了,例如一个大网络被分为AB两个小网络,冲突域减小了一半,那如果A网络中的A1主机要与B网络中的B2主机通信那要怎么办?
    
    交换机不仅仅能分割网络,分割冲突域,还能智能识别连接在交换机两端的网络中的主机发出的信号,到底是要进行本网络通信,还是异地网络通信,然后进行智能转发。

    如果A网络A1与B网络B2进行通信的话,A1主机就会在本网络广播报文(假设是第一次通信),交换机接在A网络的端口收到信号后,对照自己内部的MAC地址表,当交换主得知A1要与B2通信,并且B2又不在A网络时,就会将报文转发到B网络,由于是第一次进行通信,交换机会向所有B网络内的主机发送广播,B网络中的B2主机收到广播后,发现是报文的MAC地址正好是自己网卡的MAC,就会作出响应。
    
    这个A1与B2第一次通信的过程中,交换机都会在不断的学习并记录。

    最开始交换机并没有任何一台主机MAC地址,但当A1在A网络广播报文,交换机收到这个报文时,交换机同时也得了A1主机的MAC地址。

    交换机转发报文到B网络,B2主机作出响应,那么交换机又得到B2主机的MAC地址。

    交换机会将这些地址记录在自己内部的缓存中,并建立一张逻辑上的表。

    通过这种学习的方式,不断的记录两个网络中曾经通信过的主机的MAC地址,来完善自己的内部的MAC地址表。
    
    还有一种情况,若是A网络中的A1主机与A3主机通信时,A1在本地网络进行广播,交换机收到信号后,一对比自己内部的MAC地址表,发现A3主机是在A网络的,即A1与A3进行的通信其实是本地网络的通信,就会将这个得到的信号丢弃,不会做转发。
    
    当下一次,A1再与B2通信的时候,交换机就不必要再在B网络进行广播,而是通过内部的表记录的地址直接将报文发送到B2主机上,避免了再一次网络广播。