网络是怎样连接的(二十一)—— 交换机工作模式

·  阅读 38

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第19天,点击查看活动详情

交换机工作模式

顺着网络传输的路径,本文我们来探索下交换机。

交换机的设计是将网络包原样转发到目的地。

我们先来探索下交换机的工作模式。

交换机内部结构可以简单理解为有两个模块:接收模块 和 MAC 模块

首先,信号到达网线接口,并由接收模块进行接收,这一部分和集线器是相同的。接下来,接收模块会将网线中的信号转换为通用格式,然后传递给 MAC 模块。MAC 模块将信号转换为数字信息,然后通过包末尾的 FCS 校验错误,如果没有问题则存放到缓冲区中(如果检测到错误就丢弃这个包)。

将包存入缓冲区后,接下来需要查询一下这个包的接收方 MAC 地址是否已经在 MAC 地址表 中有记录了。MAC 地址表主要包含两个信息,一个是设备的 MAC 地址,另一个是该设备连接在交换机的哪个端口上,具体结构如下表所示:

MAC 地址端口控制信息
00-02-B3-1C-9C-F92...
AA-BB-CC_DD-EE-FF7...
.........

MAC 地址是和端口号一一对应的。通过这张表就能够判断出收到的包应该转发到哪个端口。举个例子,如果收到的包的接收方 MA C地址为 00-02-B3-1C-9C-F9,则与上表中的第 1 行匹配,根据端口列的信息,可知这个地址位于 2 号端口上,然后就可以通过交换电路将包发送到相应的端口了。

交换电路的结构如下图所示,它可以将输入端和输出端连接起来。其中,信号线排列成网格状,每一个交叉点都有一个交换开关,交换开关是电子控制的,通过切换开关的状态就可以改变信号的流向。  交换电路的输入端和输出端分别连接各个接收端口和发送端口,网络包通过这个网格状的电路在端口之间流动。每个交叉点上的交换开关都可以独立工作,因此只要路径不重复,就可以同时传输多路信号。

image.png

MAC 地址表的维护

交换机在转发包的过程中,还需要对 MAC 地址表的内容进行维护,维护操作分为两种。

第一种是收到包时,将发送方 MAC 地址以及其输入端口的号码写入 MAC 地址表中。  由于收到包的那个端口就连接着发送这个包的设备,所以只要将这个包的发送方 MAC 地址写入地址表,以后当收到发往这个地址的包时,交换机就可以将它转发到正确的端口了。交换机每次收到包时都会执行这个操作,因此只要某个设备发送过网络包,它的 MAC 地址就会被记录到地址表中。

另一种是删除地址表中某条记录的操作,这是为了防止设备移动时产生问题。  如果连接在某个交换机上的设备突然移动或断开,那么当交换机收到发往这台已经消失的设备的包,它依然会将包转发到原来的端口,通信就会出错,因此必须想办法删除哪些过时的记录。然而,交换机没有办法知道某台设备是否从原来的端口移走。因此地址表中的记录不能永久有效,而是要在一段时间不使用后就自动删除。

过时记录从地址表中删除的时间一般为几分钟,因此在过时记录被删除之前,依然可能有发给该设备的包到达交换机。这时,交换机会将包转发到老的端口,通信就会发生错误,这种情况尽管罕见,但的确也有可能发生。遇到这样的情况,只要重启一下交换机,地址表就会被清空并更新正确的信息,然后网络就又可以正常工作了。

特殊场景

上面我们学习了交换机的基本工作模式,下面我们来看一些特殊场景下交换机的一些操作。

源端口和目标端口是同一个

如下图所示,计算机 A 发送的包到达集线器后会被集线器转发到所有端口上,也就是会到达交换机和计算机 B。这时,交换机转发这个包之后,这个包会原路返回集线器,然后,集线器又把包转发到所有端口,于是这个包又到达了计算机 A 和计算机 B。所以计算机 B 就会收到两个相同的包,这会导致无法正常通信。因此,当交换机发现一个包要发回到原端口时,就会直接丢弃这个包。

image.png

找不到 MAC 地址

还有另外一种特殊情况,就是地址表中找不到指定的 MAC 地址。这可能是因为具有该地址的设备还没有向交换机发送过包,或者这个设备一段时间没有工作导致地址被从地址表中删除了。这种情况下,交换机无法判断应该把包转发到哪个端口,只能将包转发到除了源端口之外的所有端口上,无论该设备连接在哪个端口上都能收到这个包。这样做不会产生什么问题,因为以太网的设计本来就是将包发送到整个网络的,然后只有相应的接收者才接收包,而其他设备则会忽略这个包。

此外,如果接收方 MAC 地址是一个广播地址(广播地址(broadcast address)是一种特殊的地址,将广播地址设为接收方地址时,包会发送网络中的所有的设备。MAC 地址中的 FF:FF:FF:FF:FF:FF 和 IP 地址中的 255.255.255.255 都是广播地址),那么交换机会将包发送到除源端口之外的所有端口。

参考文档

  • 《网络是怎样连接的》—— 户根勤

往期文章

分类:
后端
分类:
后端
收藏成功!
已添加到「」, 点击更改