交换机的基础工作原理
交换机的工作原理是网络中最基础的一个部分。我在这里同样不会讲的非常专业,只会以简单的方式讲述原理过程。如果需要了解更专业的知识请查阅网络设备基础教科书。
需要了解的基础知识
交换机是一个工作在第二层的网络设备,其基础工作原理非常简单。
假设现在有两台计算机PC1、PC2,连接着一台交换机Sw1。如下图所示:
如果现在PC1向PC2发送了个信息。那么首先我们就要知道,发送的信息内包含着什么东西。
交换机不识别IP地址,它通过MAC地址(物理地址)寻找目标主机。MAC地址存在于计算机的网卡中,是在出厂时就烧录进去的16进制编码,你可以把它理解为网卡的身份证号,所以全球唯一。
既然要给目标主机发送信息,那么就必然要告诉交换机目标主机的地址是什么。
就好比你在网购的时候需要填写你家的地址,快递员通过你的地址才能把快递送到你家。
同时,快递单上也会记录着商家发货地的地址。
所以PC1发送的信息中,就必然包含了源主机的MAC地址和目标主机的MAC地址。
实际上来讲,PC1并不知道目标主机的MAC地址。在还没有完全掌握计算机网络之前,请允许一些错误的理解存在,以便于我们更好的学习计算机网络基础。在后续的章节中,我将纠正这个错误。
那么问题来了,交换机是怎么知道这个端口上连接的是哪一台设备呢?
MAC地址表建立过程
我们知道,集线器的工作原理是将收到的信息转发到所有的端口,这样就能让目标主机接收到信息。可是交换机实现了点对点精准发送,代替了集线器的存在,所以交换机肯定会知道哪一台设备连接在交换机的哪一个端口上。那么请先思考一下,交换机是如何认识这些设备的。
首先,我们要了解在交换机中存在着一张表,就是MAC地址表。
这张表中记录着每个端口与MAC地址的映射关系,以便于交换机能寻找到目标主机。
回到刚才的设想,PC1向PC2发送了一条消息,那么这条消息就包含有PC1的MAC地址(源MAC地址)和PC2的MAC地址(目标MAC地址)。交换机在接收到这条消息时,就会知道接收到这个消息的端口对应的是哪一台设备。也就是说,在此时交换机已经学习到了PC1的MAC地址与所在端口,并记录在了MAC地址表中。
接下来的问题就是如何知道目标主机的MAC地址了。
这时交换机会发现在MAC地址表中并不存在目标主机的MAC地址,那么交换机就会选择群发。也就是向除了PC1所连接端口外的所有端口发送信息,从而确保目标主机能接收到信息(这种操作叫flooding)。
那么当PC2接收到信息时,发现这是我(PC2)的信息,就会选择接收,并向交换机回送信息,告诉交换机我(PC2)收到了信息。(如果其他设备收到了这个信息,在拆开后发现不是自己的MAC地址,就会忽略这条信息。)
此时交换机收到了PC2回送来的信息,那么就会学习到PC2所在的端口是哪一个,并记录在MAC地址表中。
以此类推,这样就完成了MAC地址表的建立。
这里为了解释交换机如何建立MAC地址表,拟定了一个情景PC1向PC2发送了一条信息。实际情况并非如此,并不是主机间必须进行通信交换机才能学习到MAC地址。事实上是当网卡驱动加载之后交换机就学习到了主机的MAC地址。读者如果仔细观察就会发现,Windows系统启动过程还没完成,交换机技术就学习到了主机的MAC地址。
关于MAC地址表建立时的一些问题
交换机的MAC地址表记录的条目数量是有限的,那么当MAC地址表记满的时候,是否还可以正常通信呢?
让我们沿用刚刚的设想,只不过把交换机换成MAC地址表建满的交换机。现在有一台新的计算机PC3连接在这台交换机上,并向PC2发送了信息。交换机接收到了来自PC3的信息并提取到了源MAC地址和目的MAC地址,可此时交换机无法将PC3的MAC地址存入到MAC地址表内,但可以找到PC2的MAC地址。于是交换机正常的将信息传递给了PC2。PC2在接收到信息后,向交换机回送信息表示自己已收到来自PC3的信息,这样就完成了通讯。
如果PC2要向PC3发送消息呢?
同样的,PC2将信息发送到交换机后,交换机在MAC地址表中查找对应设备。在发现查不到PC3的MAC地址时,就会进行群发,PC3也能正常接收到信息并回送给交换机,只不过无法进行记录。如果这样每次给PC3发送消息都要群发的话,就会损失大量性能。
因此,在交换机MAC地址表满的情况下可以正常通讯,只不过会浪费其性能。





