VLAN 详解一(VLAN 基本原理及 VLAN 划分原则)
VLAN 详解一(VLAN 基本原理及 VLAN 划分原则)
在早期的交换网络中,网络中只有 PC、终端和交换机,当某台主机发送一个广播帧或未知单播帧时,该数据帧会被泛洪,甚至传递到整个广播域。而广播域越大,产生的网络安全问题、垃圾流量问题,就越严重。为了应对这些问题就出现了 VLAN 技术,VLAN(Virtual LAN)就是虚拟局域网,其主要功能就是用来隔离广播域。
文章目录
- VLAN 详解一(VLAN 基本原理及 VLAN 划分原则)
- 一、什么是 VLAN?
- 二、VLAN 的作用及特点
- 1.VLAN 的作用
- 2.VLAN 的特点
- 三、VLAN 的基本原理
- 1.如何实现 VLAN 的划分
- 2.VLAN 数据帧
- 四、VLAN 的划分
- 1.VLAN 的规划原则
- 2.VLAN 的划分方式
一、什么是 VLAN?
VLAN(Virtual LAN)虚拟局域网就是一种可以将局域网在逻辑上划分为新的相互之间独立的局域网的技术。
通过使用 VLAN,可以将位于不同物理位置的设备划分到同一个逻辑网络中,或将位于同一物理位置的设备划分到不同的逻辑网络中。
这种划分是基于逻辑连接的而不是基于物理连接的。
二、VLAN 的作用及特点
1.VLAN 的作用
- 隔离广播域
- 提高网络的安全性
- 增强网络的健壮性
- 可以灵活的构建用户分组
2.VLAN 的特点
- 一个 VLAN 就是一个广播域
- 同一个 VLAN 内的终端(PC、服务器等)之间可以直接进行通信
- 不同 VLAN 内的终端,无法直接进行二层的通信,只能通过三层通信来进行互联
- 限制广播域,一个广播域的报文都会被隔离在一个VLAN内
- VLAN的划分不受地域的限制
三、VLAN 的基本原理
1.如何实现 VLAN 的划分

-
在数据帧中打上 VLAN 标签,如果不处理就无法识别它是属于哪一个 VLAN,也不知道往哪里。
-
要使交换机能够分辨不同 VLAN 的报文,就需要在报文中添加标识 VLAN 信息的字段。
2.VLAN 数据帧
注:终端(PC、服务器等)不能识别 Tagged 数据帧,所以终端处理和发出的都是 Untagged 数据帧;但为了提高处理效率,交换机内部处理的数据帧一律都是 Tagged 数据帧。
VLAN 数据帧形式分为 有标记帧(Tagged 帧)和 无标记帧(UnTagged 帧)
- 无标记帧(Untagged 帧):原始的以太网数据帧,未加入 4 字节 VLAN 标签的数据帧。
- 有标记帧(Tagged 帧):IEEE 802.1Q协议规定,在以太网数据帧的目的 MAC 地址和源 MAC 地址字段之后,协议类型字段之前,加入 4 个字节的 VLAN 标签(又称 VLAN Tag,简称 Tag)的数据帧。

VLAN 数据帧字段:
| 字段 | 长度 | 作用 | 备注 | 操作 |
|---|---|---|---|---|
| TPID | 16 bit | Tag Protocol Identifier(标签协议标识符),代表数据帧类型 | 设备厂商可以自定义 TPID 的值。当邻居设备将 TPID 值配置为非 0x8100 时,为了能够识别这样的报文,实现互通,必须在本设备上修改 TPID 值,确保和邻居设备的TPID值配置一致 | 取值为 0x8100 时表示 IEEE 802.1Q 的VLAN数据帧。如果不支持 IEEE 802.1Q 的设备收到这样的帧,就会将其丢弃 |
| PRI | 3 bit | Priority,表示数据帧的优先级,用于 QoS | 取值范围为 0~7,值越大优先级越高 | 当网络阻塞时,交换机优先发送优先级高的数据帧 |
| CFI | 1 bit | Canonical Format Indicator(标准格式指示位),表示 MAC 地址在不同的传输介质中是否以标准格式进行封装 | CFI 取值为 0 表示 MAC 地址以标准格式进行封装,为 1 表示以非标准格式封装 | CFI 用于兼容以太网和令牌环网 |
| VID | 12 bit | VLAN ID,表示该数据帧所属的 VLAN 编号 | VLAN ID取值范围是 0~4095。其中 0 和 4095 为协议保留取值,所以VLAN ID的有效取值范围是 1~4094 | 交换机利用 VLAN 标签中的 VID 来识别数据帧所属的 VLAN。广播帧只能在同一 VLAN 内转发,使用 VID 进行识别就可以将广播域限制在一个VLAN内。 |
四、VLAN 的划分
1.VLAN 的规划原则
VLAN 的分配原则可以依据实际的业务、部门、应用等场景进行划分。
VLAN ID 的分配在有效范围内,可以随意分配和选取,但是为了提高 VLAN ID 的连续性,一般采用VLAN ID 和子网关联的方式进行分配。

2.VLAN 的划分方式
VLAN 的划分方式大致可分为:基于接口划分、基于 MAC 地址划分、基于 IP 子网划分、基于协议划分、基于策略划分。
| 划分方式 | 基于内容 | 预设 | 操作 |
|---|---|---|---|
| 基于接口划分 | 根据交换机的接口来划分 VLAN | 预先给交换机的每个接口配置不同的 PVID | 当一个数据帧进入交换机时,如果没有带 VLAN 标签,该数据帧就会被打上接口指定 PVID 的标签,然后数据帧将在指定 VLAN 中传输 |
| 基于 MAC 地址划分 | 根据数据帧的源 MAC 地址来划分 VLAN | 预先配置 MAC 地址和 VLAN ID 映射关系表 | 当交换机收到的是 Untagged 帧时,就根据该表给数据帧添加指定 VLAN 的标签,然后数据帧将在指定 VLAN 中传输 |
| 基于IP子网划分 | 根据数据帧中的源 IP 地址和子网掩码来划分 VLAN | 预先配置 IP 地址和 VLAN ID 映射关系表 | 当交换机收到的是 Untagged 帧,就根据该表给数据帧添加指定 VLAN 的标签,然后数据帧将在指定 VLAN 中传输 |
| 基于协议划分 | 根据数据帧所属的协议(族)类型及封装格式来划分 VLAN | 预先配置以太网帧中的协议域和 VLAN ID 的映射关系表 | 如果收到的是 Untagged 帧,就根据该表给数据帧添加指定 VLAN 的标签,然后数据帧将在指定 VLAN 中传输 |
| 基于策略划分 | 根据配置的策略划分 VLAN | 预先配置策略,可以实现多种组合的划分方式,包括接口、MAC 地址、IP 地址等 | 如果收到的是 Untagged 帧,且匹配配置的策略时,就给数据帧添加指定 VLAN 的标签,然后数据帧将在指定 VLAN 中传输 |
如果文章对各位小伙伴有帮助的话欢迎三连!!!
另外,文章如有错误之处,也欢迎各位大佬批评指正!!!
相关文章:
VLAN 详解一(VLAN 基本原理及 VLAN 划分原则)
VLAN 详解一(VLAN 基本原理及 VLAN 划分原则) 在早期的交换网络中,网络中只有 PC、终端和交换机,当某台主机发送一个广播帧或未知单播帧时,该数据帧会被泛洪,甚至传递到整个广播域。而广播域越大ÿ…...
Android - 分区存储 MediaStore、SAF
官方页面 参考文章 一、概念 分区存储(Scoped Storage)的推出是针对 APP 访问外部存储的行为(乱建乱获取文件和文件夹)进行规范和限制,以减少混乱使得用户能更好的控制自己的文件。 公有目录被分为两大类:…...
Shiro框架权限控制
首先去通过配置类的用户认证,在用户认证完成后,进行用户授权,用户通过授权之后再跳转其他的界面时,会进行一个验证,当前账号是否有权限。 前端权限控制显示的原理 在前端中,通常使用用户的角色或权限信息来…...
centOS7 安装tailscale并启用子网路由
1、在centOS7上安装Tailscale客户端 #安装命令所在官网位置:https://tailscale.com/download/linux #具体命令为: curl -fsSL https://tailscale.com/install.sh | sh #命令执行后如下图所示2、设置允许IP转发和IP伪装。 安装后,您可以启动…...
spring 项目中如何处理跨越cors问题
1.使用 CrossOrigin 注解 作用于controller 方法上 示例如下 RestController RequestMapping("/account") public class AccountController {CrossOriginGetMapping("/{id}")public Account retrieve(PathVariable Long id) {// ...}DeleteMapping(&quo…...
importlib --- import 的实现
3.1 新版功能. 源代码 Lib/importlib/__init__.py 概述 importlib 包具有三重目标。 一是在 Python 源代码中提供 import 语句的实现(并且因此而扩展 __import__() 函数)。 这提供了一个可移植到任何 Python 解释器的 import 实现。 与使用 Python 以…...
【PyTorch】现代卷积神经网络
文章目录 1. 理论介绍1.1. 深度卷积神经网络(AlexNet)1.1.1. 概述1.1.2. 模型设计 1.2. 使用块的网络(VGG)1.3. 网络中的网络(NiN)1.4. 含并行连结的网络(GoogLeNet)1.5. 批量规范化…...
用python编写九九乘法表
1 问题 我们在学习一门语言的过程中,都会练习到编写九九乘法表这个代码,下面介绍如何编写九九乘法表的流程。 2 方法 (1)打开pycharm集成开发环境,创建一个python文件,并编写第一行代码,主要构建…...
Google Gemini 模型本地可视化
Google近期发布了Gemini模型,而且开放了Gemini Pro API,Gemini Pro 可免费使用! Gemini Pro支持全球180个国家的38种语言,目前接受文本、图片作为输入并生成文本作为输出。 Gemini Pro的表现超越了其他同类模型,当前版…...
数据修复:.BlackBit勒索病毒来袭,安全应对方法解析
导言: 黑色数字罪犯的新玩具——.BlackBit勒索病毒,近来成为网络安全领域的头号威胁。这种恶意软件以其高度隐秘性和毁灭性而引起广泛关注。下面是关于.BlackBit勒索病毒的详细介绍,如不幸感染这个勒索病毒,您可添加我们的技术服…...
拓扑排序实现循环依赖判断 | 京东云技术团队
本文记录如何通过拓扑排序,实现循环依赖判断 前言 一般提到循环依赖,首先想到的就是Spring框架提供的Bean的循环依赖检测,相关文档可参考: https://blog.csdn.net/cristianoxm/article/details/113246104 本文方案脱离Spring Be…...
Java的NIO工作机制
文章目录 1. 问题引入2. NIO的工作方式3. Buffer的工作方式4. NIO数据访问方式 1. 问题引入 在网络通信中,当连接已经建立成功,服务端和客户端都会拥有一个Socket实例,每个Socket实例都有一个InputStream和OutputStream,并通过这…...
一个简单的光线追踪渲染器
前言 本文参照自raytracing in one weekend教程,地址为:https://raytracing.github.io/books/RayTracingInOneWeekend.html 什么是光线追踪? 光线追踪模拟现实中的成像原理,通过模拟一条条直线在场景内反射折射,最终…...
C++学习笔记(十二)------is_a关系(继承关系)
你好,这里是争做图书馆扫地僧的小白。 个人主页:争做图书馆扫地僧的小白_-CSDN博客 目标:希望通过学习技术,期待着改变世界。 提示:以下是本篇文章正文内容,下面案例可供参考 文章目录 前言 一、继承关系…...
DC电源模块的设计与制造技术创新
BOSHIDA DC电源模块的设计与制造技术创新 DC电源模块的设计与制造技术创新主要涉及以下几个方面: 1. 高效率设计:传统的DC电源模块存在能量转换损耗较大的问题,技术创新可通过采用高效率的电路拓扑结构、使用高性能的功率开关器件和优化控制…...
Sketch for Mac:实现你的创意绘图梦想的矢量绘图软件
随着数字时代的到来,矢量绘图软件成为了广告设计、插画创作和UI设计等领域中必不可少的工具。在众多矢量绘图软件中,Sketch for Mac(矢量绘图软件)以其强大的功能和简洁的界面脱颖而出,成为了众多设计师的首选。 Sket…...
ReactNative0.73发布,架构升级与更好的调试体验
这次更新包含了多种提升开发体验的改进,包括: 更流畅的调试体验: 通过 Hermes 引擎调试支持、控制台日志历史记录和实验性调试器,让调试过程更加高效顺畅。稳定的符号链接支持: 简化您的开发工作流程,轻松将文件或目录链接到其他…...
SVN忽略文件的两种方式
当使用版本管理工具时,提交到代码库的文档我们不希望存在把一些临时文件也推送到仓库中,这样就需要用到忽略文件。SVN的忽略相比于GIT稍显麻烦,GIT只需要在.gitignore添加忽略规则即可。而SVN有两种忽略方式,一个是全局设置&#…...
手写VUE后台管理系统10 - 封装Axios实现异常统一处理
目录 前后端交互约定安装创建Axios实例拦截器封装请求方法业务异常处理 axios 是一个易用、简洁且高效的http库 axios 中文文档:http://www.axios-js.com/zh-cn/docs/ 前后端交互约定 在本项目中,前后端交互统一使用 application/json;charsetUTF-8 的请…...
JavaScript装饰者模式
JavaScript装饰者模式 1 什么是装饰者模式2 模拟装饰者模式3 JavaScript的装饰者4 装饰函数5 AOP装饰函数6 示例:数据统计上报 1 什么是装饰者模式 在程序开发中,许多时候都我们并不希望某个类天生就非常庞大,一次性包含许多职责。那么我们就…...
大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist
现象: android studio报错: [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决: 不要动CMakeLists.…...
【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...
快速排序算法改进:随机快排-荷兰国旗划分详解
随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...
java 局域网 rtsp 取流 WebSocket 推送到前端显示 低延迟
众所周知 摄像头取流推流显示前端延迟大 传统方法是服务器取摄像头的rtsp流 然后客户端连服务器 中转多了,延迟一定不小。 假设相机没有专网 公网 1相机自带推流 直接推送到云服务器 然后客户端拉去 2相机只有rtsp ,边缘服务器拉流推送到云服务器 …...
结合PDE反应扩散方程与物理信息神经网络(PINN)进行稀疏数据预测的技术方案
以下是一个结合PDE反应扩散方程与物理信息神经网络(PINN)进行稀疏数据预测的技术方案,包含完整数学推导、PyTorch/TensorFlow双框架实现代码及对比实验分析。 基于PINN的反应扩散方程稀疏数据预测与大规模数据泛化能力研究 1. 问题定义与数学模型 1.1 反应扩散方程 考虑标…...
使用高斯朴素贝叶斯算法对鸢尾花数据集进行分类
高斯朴素贝叶斯算法通常用于特征变量是连续变量,符合高素分布的情况。 使用高斯朴素贝叶斯算法对鸢尾花数据集进行分类 """ 使用高斯贝叶斯堆鸢尾花进行分类 """ #导入需要的库 from sklearn.datasets import load_iris from skle…...
