# 聊聊 vlan 的基本概念

本文仅针对 VLAN 的基本原理给出解释说明，需读者具备《计算机网络》基础知识。且本文不给出任何实现和交换机操作方面的指导，如需这方面指导请自行 Google。

# 1 VLAN 提出的初心

先聊聊 VLAN 最原始的定义和被提出的初心：

根据原始的定义，「VLAN（Virtual Local Area Network）即虚拟局域网，是一种通过将局域网内的设备逻辑地而不是物理地划分成一个个网段从而实现虚拟工作组的技术。」

优势也很明显：

- 一个VLAN内部的广播和单播流量都不会转发到其他VLAN中。即使是处在同一网段的两台计算机，如果不在同一VLAN中，它们各自的广播流也不会相互转发。

- 划分VLAN有助于控制流量、减少设备投资、简化网络管理、提高网络的安全性。由于VLAN隔离了广播风暴，也隔离了不同VLAN之间的通讯。

**简言之，就是同一个交换机下，在二层（链路层）划分成若干个独立的部分（广播域）。**

那么，由此就提出了最简单的 VLAN 模型，基于端口的 VLAN 划分（port-based）：

<br/>

# 2 Port-based VLAN

![聊聊vlan.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1656397861854/ghCf6yPk-.png align="left")

上面的图给出了一个支持 VLAN 的四口交换机最简单的设计：将 1-2 口设置为一个 VLAN，将 3-4 口设置为另一个VLAN，然后彼此处在彼此的广播域内。

**最基本、最常见的 VLAN 划分也就是这种情况。**

<br/>

将一个交换机分成若干部分，这个的确简单，但随着网络规模的扩大，有些现实的问题就出现在眼前：目前一个交换机已经不能满足所需，但 PC-1 和 PC-2、PC-5、PC-6 要进行通信，怎么办呢？


![聊聊vlan.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1656400450992/tpBv9CyDx.png align="left")


最直观简单的莫过于换一个六口交换机，然后不同 VLAN 之间相互联通，即：

![聊聊vlan.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1656400859171/5_OITFAV9.png align="left")

# 3 Tag-based VLAN

上面更换六口交换机的方法简单有效，但也非常的暴力。如果有 10 个 VLAN，那是不是要预留 20 个 Port ？有没有更好的方法？能不能就是用一个口联通不同交换机的若干个 VLAN？

实现上也不难以想象，可以把这种连接多个交换机的端口作为特定的端口，执行特定的策略规则 —— 对于有 VLAN ID 标记的数据包，我们根据包里的 VLAN ID，转发到对应设备连接端口不就好了嘛。构想入下图所示。那么对应的，我们便引出 Tag Port 的概念。

![聊聊vlan.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1656401880206/6K_DcJ9-e.png align="left")

为了便于直观理解，（本标题下述场景）可先将 Tag 口简单地理解为连接交换机和交换机，Untag 口连接交换机和设备。我们此处认为设备发出的数据包是不带 VLAN 信息的。

直观的规则，我们通过下面的表格来定义：


![聊聊vlan.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1656498006984/uXb9mhBve.png align="left")

结合上面的图片，就非常好理解了，将接口 1、2 设置为同一个 VLAN ID（例如 VLAN 1）但 Untag，将接口 3、4 设置为同一个 VLAN ID（例如 VLAN 2）& Untag，将接口 5 设置为 Tag 状态，利用接口 5 连接两个交换机即可。


