下面,我们就来简单说道说道。从计算机发出的数据会经过集线器、交换机和路由器等设备转发,最终到达目的地。转发设备会根据数据包中的头部信息找到目的地IP地址,然后在转发设备内部转发规则表中查询需要转发的出口路径。就像邮递员一样,在送快递的时候,不会去看快递里面的具体东西,无论里面装的是什么,都能帮你把快递送到目的地。路由器和交换机就是快递员的角色,无论数据包里面装的是应用程序数据,还是TPC协议控制信息,都不会对包的传输操作产生影响。也就是说,当你使用浏览器访问网站的时候,不管你发送什么数据,在交换机这里都是一个数据包,所有的包在传输到目的地的过程中都是独立的,相互之间没有任何关联。假设客户端计算机连接局域网的结构如下,网络数据包从计算机发出后,要经过集线器、交换机和路由器最终进入互联网。当数据包经过集线器后,会被广播到整个网络中。也就是说,集线器相当于一个分线器,把一个入口分开多个出口,它不会根据数据包的目的地址去判断应该从哪个出口流出,而是直接广播发送,这就是集线器的缺点,因为这样很容易造成广播风暴。什么是广播风暴?广播风暴就是广播数据充斥整个网络导致设备无法处理,并占用大量网络带宽,导致正常业务不能运行,甚至彻底瘫痪。由于集线器只是原封不动地将信号广播出去,所以即便信号受到噪声的干扰发生了失真,也会原样发送到目的地。这就需要交换机或路由器等设备进行校验发现错误,然后进行丢包重传。这样会导致网络传输效率低,网络延迟大等缺点。所以,我们现在很少使用集线器了,而是使用交换机代替集线器。很多人可能没有见过集线器,如下图所示,集线器大概长这样:
而交换机是长这样,交换机的设计更为复杂,功能也更强大。现如今,不管是企业还是家庭,大部分都在使用交换机了,如大学宿舍可能每个宿舍网线只有一根,但是宿舍有多个人,那就可以买个多****换机,入口插一根网线,可以同时分出多个出口插入多根网线给宿舍的其他同学使用,交换机不仅有集线器的功能还可以更高效率的转发数据。下面,我们来讲一下为什么交换机的工作效率比集线器高。交换机的设计是将网络包原样转发到目的地,当信号到达网线接口,由 PHY(MAU)模块进行接收,这一部分和集线器是相同的。当信号从双绞线传入时,就会进入 PHY(MAU) 模块的接收部分。接下来,PHY(MAU)模块会将网线中的信号转换为通用格式,然后传递给 MAC 模块。MAC 模块将信号转换为数字信息,然后通过包末尾的 FCS 校验错误,如果没有问题则存放到缓冲区中。这部分操作和网卡基本相同,大家可以认为交换机的每个网线接口后面都是一块网卡。网线接口和后面的电路部分加在一起称为一个端口,也就是说交换机的一个端口就相当于计算机上的一块网卡。但交换机的工作方式和网卡有一点不同,网卡本身具有 MAC 地址,并通过核对收到的包的接收方 MAC 地址判断是不是发给自己的,如果不是发给自己的则丢弃;相对地,交换机的端口不核对接收方 MAC 地址,而是直接接收所有的包并存放到缓冲区中。因此和网卡不同,交换机的端口不具有 MAC 地址。交换机将数据包存入缓冲区后,需要查询这个包的接收方MAC地址,是否已经在MAC地址表中,是的,交换机都有一张叫做MAC地址表的东西,上面记录着交换机所有端口上能访问的MAC地址列表信息,交换机和集线器最大的不同就是,交换机拥有MAC地址表。MAC地址表主要包含两个信息,一是设备的MAC地址,二是该设备连接在交换机的哪个端口上。交换机通过这张表就可以判断收到的数据包应该发送到哪个端口,这样大大减少了网络的数据传输量,提供了网络传输的效率,当然交换机也需要维护这张表。首先,当交换机收到数据包后,查询到这个数据包的发送方MAC地址在不在MAC地址表中,如果不在那就把发送方的MAC和绑定的端口写入到MAC地址表中,因为交换机收到数据包肯定是知道从哪个端口收到的,自然就可以记录起来了。当交换机收到数据包时查询接收方的MAC地址不在MAC地址表中该怎么办呢?这个时候就和集线器一样发送一个广播数据包,查询MAC地址,数据包广播到每个端口上,比如广播发送一个“请问谁的MAC地址是00-02-03-B5-C8-F8”的数据包,然后连接交换机端口的计算机收到这个数据包后。如果自己的MAC地址不是这个就丢弃这个数据包,如果自己MAC地址是这个,就会回应一个数据包给交换机,交换机从哪个端口收到回应就把这个端口和回应的MAC地址写入到MAC地址表中,这样就记录了一条数据。但是交换机的存储空间是有限的,不会无限的添加MAC地址到地址表中,当设备移动,或者端口变动的时候,比如我们开会时把笔记本电脑从办公桌拿到会议室,这个时候网线接口变了,那么MAC地址表也需要变动,从交换机的角度讲,本来连接在某个端口上的笔记本电脑消失了。那么,交换机就会删除这个端口上的这台笔记本的MAC地址记录,但交换机是没法自动知道这台笔记本是否消失了的。所以,交换机会判断一段时间内没有使用的MAC地址记录就会自动删除。这样交换机就可以长时间自动添加和删除记录,不需要什么特别的措施就可以正常工作了。交换机根据收到的数据包MAC地址,查询MAC地址表转发数据到相应的端口上,这就是交换机的工作原理了,大家都明白了吗?