目录
交换机根据地址表进行转发
MAC 地址表的维护
交换机可同时执行多个转发操作
由于集线器只是原封不动地将信号广播出去 ,所以即便信号受到噪声的干扰发生了失真 , 也会原样发送到目的地 。 这时 , 接收信号的设备 ,也就是交换机 、 路由器 、 服务器等 , 会在将信号转换成数字信息后通过 FCSA校验发现错误 , 并将出错的包丢弃 。 当然 , 丢弃包并不会影响数据的传输,因为丢弃的包不会触发确认响应 。 因此协议栈的 TCP 模块会检测到丢包 , 并对该包进行重传。
交换机根据地址表进行转发
交换机的设计是将网络包原样转发到目的地。它的内部有一张 MAC地址与网线端口的对应表,当接收到包时,会将相应的端口号码和发送方MAC地址写入表中,这样就可以根据地址判断出该设备连接在哪个端口上了。交换机就是根据这些信息来判断把包发送到哪里的。
简单的说,就是根据MAC地址通过查表确定包从哪个端口发出。
信号到达网线接口,并由 PHY(MAU)模块进行接收,这一部分和集线器是相同的。也就是说,它的接口和 PHY(MAU)模块也是以MDI-X 模式进行连接的 B,当信号从双绞线传入时,就会进入 PHY(MAU) 模块的接收部分。
接下来,PHY(MAU)模块会将网线中的信号转换为通用格式,然后传递给 MAC 模块。MAC 模块将信号转换为数字信息,然后通过包末尾的 FCS 校验错误,如果没有问题则存放到缓冲区中 C。这部分操作和网卡基本相同,可以认为交换机的每个网线接口后面都是一块网卡。网线接口和后面的电路部分加在一起称为一个端口,也就是说交换机的一个端口就相当于计算机上的一块网卡 (换句话说,如果在计算机上安装多块网卡,并开启“混杂模式”让网卡接收所有的网络包,然后再安装一个和交换机具备同样功能的网络包转发软件,那么这台计算机就变成了一台交换机)。
交换机的工作方式和网卡有一点不同。网卡本身具有 MAC 地址,并通过核对收到的包的接收方 MAC 地址判断是不是发给自己的,如果不是发给自己的则丢弃;相对地,交换机的端口不核对接收方 MAC 地址,而是直接接收所有的包并存放到缓冲区中。因此,和网卡不同,交换机的端口不具有 MAC 地址。将包存入缓冲区后,接下来需要查询一下这个包的接收方 MAC 地址是否已经在 MAC 地址表中有记录了。MAC 地址表主要包含两个信息,一个是设备的 MAC 地址,另一个是该设备连接在交换机的哪个端口上。MAC 地址和端口是一一对应的,通过这张表就能够判断出收到的包应该转发到哪个端口。
MAC 地址表的维护
交换机在转发包的过程中,还需要对 MAC 地址表的内容进行维护, 维护操作分为两种。
第一种是收到包时,将发送方 MAC 地址以及其输入端口的号码写入MAC 地址表中。由于收到包的那个端口就连接着发送这个包的设备,所以只要将这个包的发送方 MAC 地址写入地址表,以后当收到发往这个地址的包时,交换机就可以将它转发到正确的端口了。交换机每次收到包时都会执行这个操作,因此只要某个设备发送过网络包,它的 MAC 地址就会被记录到地址表中。
第二种是删除地址表中某条记录的操作,这是为了防止设备移动时产生问题。比如,我们在开会时会把笔记本电脑从办公桌拿到会议室,这时设备就发生了移动。从交换机的角度来看,就是本来连接在某个端口上的笔记本电脑消失了。这时如果交换机收到了发往这台已经消失的笔记本电脑的包,那么它依然会将包转发到原来的端口,通信就会出错,因此必须想办法删除那些过时的记录。然而,交换机没办法知道这台笔记本电脑已经从原来的端口移走了。因此地址表中的记录不能永久有效,而是要在一
段时间不使用后就自动删除。过时记录从地址表中删除的时间一般为几分钟,因此在过时记录被删除之前,依然可能有发给该设备的包到达交换机。这时,交换机会将包转发到老的端口,通信就会发生错误,这种情况尽管罕见,但的确也有可能发生。不过大家不必紧张,遇到这样的情况,只要重启一下交换机,地址表就会被清空并更新正确的信息,然后网络就又可以正常工作了。
总之,交换机会自行更新或删除地址表中的记录,不需要手动维护 A。当地址表的内容出现异常时,只要重启一下交换机就可以重置地址表,也不需要手动进行维护。
交换机可同时执行多个转发操作
交换机只将包转发到具有特定 MAC 地址的设备连接的端口,当包从最上面的端口发送到最下面的端口时,其他端口都处于空闲状态,这些端口可以传输其他的包,因此交换机可以同时转发多个包。相对地,集线器会将输入的信号广播到所有的端口,如果同时输入多个信号就会发生碰撞,无法同时传输多路信号,因此从设备整体的转发能力来看,交换机要高于集线器。