一组互联节点之间相互沟通最简单的方式是广播,类比于无线电通话:大家都在一个频道上,你说一句,说完了再到我说一句,然后他说一句,每个人都能听得到其它人说话,每个人也都要等其它人说完了才能说,否则就互相听不清。这也类似于一组计算机通过集线器实现互相通信的方式。但是这种方式的缺点很明显,它是单工的,任意时刻只能用一个参与者在发送,宽带利用率非常低,这就好比在开会时,有人说话时其它人应保持安静,否则就会听不清。

然后有了邮局和信使,大家通过信件交流,信件上写有发件人地址和收件人地址,收件人地址可以是「全体」,假设信使是走得飞快的,信使不只有一个负责在邮局和用户之间快速地递送信件,那么通信效率可以变得很高,至少大家可以同时写信了。这里邮局就类比于交换机,信使类比于计算机到交换机的物理信道,信件类比于以太帧,地址类比于 MAC 地址,「全体」类比于广播地址。

目前为止一切都很好,你可以说邮局、信使和用户共同组成了一个通信网络,然而网络上的流量有相当多的一部分不是单对单的,而是广播流量,例如 ARP,mDNS,RA ,DHCP,DLNA 等占了相当一部分,当网络上充斥着这些流量时,正常的单对单的通信效率会受到影响,信使可能忙着处理广播信件,而处理不过来其它单播信件,信使的处理能力是有限的,邮局的分拣能力也是有限的。这里信使的处理能力上限你可以看成物理信道的宽带上限,他取决于信噪比和频宽,邮局的分拣能力你可以理解为交换机的交换容量。

抑制网络广播流量最直接的办法就是缩小广播的范围,例如对于一个 5 口交换机而言,假设它在 Port 0 收到了一个广播流量,那么下一时刻它要把这个广播帧转发给 Port 1 到 Port 4 这 4 个端口,单位时间内产生了了 4 个帧的广播流量,而假如 Port 1 的广播范围仅触达 Port 2,那么这个数字就变成 1 了。

这就好像一个企业,如果只建一个大群,并且把所有人都放到这个大群中讨论任何事情,那么这个大群一定会很吵,而如果建立多个具体事物相关的小群,每个小群仅由相关人员参与,那么与自己无关的消息就会少一些,理论上自己不会收到任何和自己无关的消息,所以每个用户都会感觉世界安静了许多。

在计算机网络中,VLAN 直译为“虚拟局域网”,虚拟局域网技术能够在一个交换网络 (switched network) 中实现对广播域的划分,它将一个大的交换网络,切割成多个不能直接连通的小的交换网络,逻辑上是这样的:如果 A 和 B 是两个不同的广播域,那么 B 广播域中的节点不会收到任何 A 广播域的二层流量,反正亦然,除非这个节点同时位于两个广播域(这是可以做到的,我们后续会讲)。它就好比在一个(甚至是多个)真实的物理交换机中,划分出多个逻辑的、虚拟的交换机。

在一个交换机中对各端口做 VLAN 划分之后,发往一个端口的帧,就只能被和这个端口同属一个 VLAN 的其它端口收到,例如,假设有如下的端口和 VLAN ID 的对应关系

Port VLAN ID
#2 VLAN 2
#3 VLAN 3
#4 VLAN 2
#5 VLAN 2
#6 VLAN 4

下图是该表所描述的 VLAN 配置在某品牌交换机设置页面中的具体实现:

截屏2023-11-26 下午10.19.37.png

以上图片是某品牌网管型交换机的端口 VLAN 设置页面的截图,它的设置就和前面表格描述的一样,这样的设置,将使得每个端口只能收到这个端口所属 VLAN 的流量,具体来说,端口 1,端口 7 和端口 8 只能收到 VLAN 1 的流量,端口 2,4,5 可以收到 VLAN 2 的流量,端口 3 可以收到 VLAN 3 的流量,端口 6 可以收到 VLAN 4 的流量。举例来说,现假设有一台电脑连接到端口 1,它发出一个广播帧,那么只有端口 7 和端口 8 的设备能收到这个广播帧,相对而言,连接到端口 2,4,5,3,6 的设备都收不到这个广播帧,因为这些端口都不属于 VLAN 1。

该设备还要求每个端口至少要属于一个 VLAN,所以我们在上表的基础上还额外配了一个 VLAN 1。

在端口 VLAN 的设置中,也可以将一个端口设为同属于多个 VLAN,该功能对于搭建单臂路由器以及软路由来说是有用的。

假设我们希望用家中空闲的 PC(或服务器)作为路由器,由于 PC 通常只有一个网口,所以我们可能会使用以下网络拓扑来将该 PC 部署为单臂路由:

截屏2023-11-26 下午10.48.02.png

其中 ISP 入户光猫工作在非桥接模式,在光猫上进行 PPPoE 拨号,并且光猫也提供 DHCP 服务,

但是这很快就有一个问题,那 3 个 PC 不光能收到软路由 DHCP 下发的 IP 地址,甚至还能收到光猫 DHCP 下发的 IP 地址,那么在 PC 上就会出现两个默认网关,PC 发出的流量有可能走光猫那个网关,也有可能走软路由,这样软路由就不能有效地管理内网的所有流量了,这就给网络规划工作造成了混乱。像这种情况我们也称之为「DHCP 污染」。

我们可以通过简单地划分两个 VLAN 来解决这个问题,如图:

截屏2023-11-26 下午11.06.08.png

这样,来自光猫的 DHCP 广播就只会到达软路由,并且 PC 和光猫之间无法直接发送以太帧或者广播帧,PC 只能收到来自软路由的 DHCP 广播,PC 要想和光猫通信,无法直接发送以太帧,而是必须要经过软路由转发 IP 封包。VLAN 2 内的 PC 之间仍然可以直接通信,不需要经过软路由或者光猫。