计算机网络-VLAN原理与配置

之前我们学习了以太网的基础知识,了解了网络交换设备的发展,交换机的工作原理,广播域和冲突域。

一、概述

还简单了解了以太网的CSMA/CD通讯机制,以太网是建立在CSMA/CD (Carrier Sense Multiple Access/Collision Detection,载波监听多路访问/冲突检测)机制上的广播型网络。CSMA/CD是一种媒体访问控制方法,用于解决网络中多个节点同时发送数据时可能发生的冲突。在CSMA/CD协议中,所有节点在发送数据前都会先侦听信道是否空闲。如果信道空闲,节点会发送数据;如果信道忙碌,节点则会等待一段时间后再次侦听。当两个或更多的节点同时发送数据时,会导致信号发生碰撞。当发生碰撞时,节点会检测到冲突并停止发送数据。其特征是共享通信介质。当主机数目较多时会导致安全隐患、广播泛滥、性能显著下降甚至造成网络不可用。

大家可以想象一下多个交换机串联在一起,有几十台或者几百台交换机进行连接时候,那时候所有的广播数据需要整个网络泛洪会出现什么情况?为了解决这个问题出现了VLAN (Virtual Local Area Network)虚拟局域网,用于隔离广播域。

传统以太网现象: 传统以太网

划分VLAN后: 划分VLAN

二、VLAN的定义与数据格式

2.1 VLAN的原理

VLAN (Virtual Local Area Network)虚拟局域网,特点:

  • 不受地域限制。
  • 同一VLAN内的设备才能直接进行二层通信。

其实可以理解为在交换机内部进行分组,打上标签,属于同组的端口才会进行互相通信。数据链路还是需要通过物理链路进行数据传输的,VLAN只是基于端口进行逻辑隔离。

VLAN通信
VLAN通信

VLAN通过标签识别不同VLAN,VLAN标签 (VLAN Tag)。在二层数据帧直接插入一个VLAN标签。 VLAN标签

VLAN数据帧
VLAN数据帧

VLAN的实现:没有Tag的原始数据帧进入交换机端口被依据IEEE 802.1Q标准(也被称为Dot1Q)定义了一个标记。 VLAN实现

2.2 VLAN的划分方式

有多种划分VLAN的方式,一般常用的就是基于交换机的端口进行划分,其他的比较少见。 VLAN划分方式

VLAN的范围:1~4094,交换机的默认VLAN,VLAN 1,默认交换机所有端口都属于VLAN 1,属于同一个广播域。 基于接口的VLAN划分

三、VLAN的接口类型

思考下,两台交换机都有不同的VLAN,然后交换机间通过线缆连接,那两个连接的接口划分什么VLAN才能使不同VLAN通信呢,配置接口为单个VLAN肯定不能实现全部VLAN互通是吧,因此在二层网络VLAN提供了三种不同的接口类型,以实现不同的功能与使用。

VLAN接口类型
VLAN接口类型

3.1 ACCESS接口

VLAN ID,数据帧中携带的VLAN号,PVID,端口的默认VLAN ID。默认为VLAN1。

ACCESS接口仅允许VLAN ID与接口PVID相同的数据帧通过。 ACCESS接口

简单讲就是接口配置了VLAN后,数据帧进入端口会打上PVID,转发数据时,只会从相同PVID接口转发,就是不同VLAN不会转发和泛洪。

注意:数据帧在交换机内部都是带有VLAN Tag的,只有在发出时才会根据PVID进行剥离或者转发。

一般用于连接电脑、服务器等终端设备。

3.2 Trunk接口

对于Trunk接口,除了要配置PVID外,还必须配置允许通过的VLAN ID列表,其中VLAN 1是默认存在的。

Trunk接口
Trunk接口

Trunk口有一个允许通信的VLAN列表,只有在允许列表才允许通过。允许多个VLAN通过,只允许PVID的数据帧剥离为无tag数据。

Trunk接口特点:

  • Trunk接口仅允许VLAN ID在允许通过列表中的数据帧通过。
  • Trunk接口可以允许多个VLAN的帧带Tag通过,但只允许一个VLAN的帧从该类接口上发出时不带Tag(即剥除Tag)。

Trunk口一般用于交换机之间,Trunk接口还可以用于连接无线AP实现本地转发,以及通过一些特殊配置实现不同VLAN通信。

3.3 Hybrid接口

交换机Hybrid接口是一种特殊的端口模式,它结合了Access接口和Trunk接口的功能。这种接口模式允许多个VLAN的流量通过,并且可以指定哪些VLAN的数据帧被剥离标签。Hybrid接口的主要特点是它具有高隔离度的波分和复用功能,可以实现多个VLAN之间的灵活通信和访问控制。

Hybrid接口特点:

  • Hybrid接口仅允许VLAN ID在允许通过列表中的数据帧通过。
  • Hybrid接口可以允许多个VLAN的帧带Tag通过,且允许从该类接口发出的帧根据需要配置某些VLAN的帧带Tag、某些VLAN的帧不带Tag。
  • 与Trunk最主要的区别就是,能够支持多个VLAN的数据帧,不带标签通过。
Hybrid接口
Hybrid接口

Hybrid接口结合了access和trunk接口的特点,但是好像我实践中用得比较少,一般如果是标准配置上述两个接口也已经足够了。

四、VLAN的最佳实践

结论
结论
access与trunk接口
access与trunk接口
hybrid
hybrid

现实情况下可以灵活使用几种接口实现需求。 配置:

# 创建VLAN
[Huawei] vlan vlan-id# 批量创建vlan
[Huawei] vlan batch { vlan-id1 [ to vlan-id2 ] }# 配置接口类型为ACCESS,必须创建和VLAN才能进行划分VLAN ID
[Huawei-GigabitEthernet0/0/1] port link-type access# 配置Access的默认VLAN
[Huawei-GigabitEthernet0/0/1] port default vlan vlan-id # 配置接口类型Trunk口
[Huawei-GigabitEthernet0/0/1] port link-type trunk# 配置trunk接口放行列表
[Huawei-GigabitEthernet0/0/1] port trunk allow-pass vlan { { vlan-id1 [ to vlan-id2 ] } | all }# 配置trunk的默认VLAN
[Huawei-GigabitEthernet0/0/1] port trunk pvid vlan vlan-id# 配置接口类型Hybrid
[Huawei-GigabitEthernet0/0/1] port link-type hybrid# 配置接口untagged或者tagged的vlan
[Huawei-GigabitEthernet0/0/1] port hybrid untagged vlan { { vlan-id1 [ to vlan-id2 ] } | all }
[Huawei-GigabitEthernet0/0/1] port hybrid tagged vlan { { vlan-id1 [ to vlan-id2 ] } | all }# 配置Hybrid接口的缺省VLAN
[Huawei-GigabitEthernet0/0/1] port hybrid pvid vlan vlan-id# hybrid接口隐含配置
port link_type hybrid
port hybrid pvid vlan 1
port hybrif untagged vlan 1

总结:以太网通过VLAN实现隔离广播域,一般通过接口进行VLAN划分,现实中一般是一个VLAN对应一个子网网段。有三种接口类型,用得较多的是ACCESS用于连接终端,Trunk用于交换机之间互联,Hybrid可以灵活实现复杂的VLAN通信,使用没有那么多。

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/602906.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024 电子科技大学 《820 计算机专业基础》真题及解析(更新中...)

数据结构算法题(15 分,8 7) 1. 比较一棵二叉树的终端节点到根节点的路径长度,路径长度为关键字之和,输出路径长度最短的终端节点。 输入:第一行输入一个整数 n, 表示结点的个数,第二行输入二叉…

Rustdesk打开Win10 下客户端下面服务不会自启,显示服务未运行

环境: Rustdesk1.19 问题描述: Rustdesk打开Win10 下客户端下面服务不会自启,显示服务未运行 解决方案: 1.查看源代码 pub async fn start_all() {crate::hbbs_http::sync::start();let mut nat_tested = false;check_zombie()

go work

vscode gopls插件工具依赖go work,否则会报错 https://github.com/golang/tools/blob/master/gopls/doc/workspace.md Go 1.18 新特性多模块工作区教程-让多模块开发变得简单 - Go语言中文网 - Golang中文社区

A2DP Source如何从android系统拿到音频数据

Android 13 简单来说就是两条本地socket通道,分别使用文件: #define A2DP_CTRL_PATH "/data/misc/bluedroid/.a2dp_ctrl" #define A2DP_DATA_PATH "/data/misc/bluedroid/.a2dp_data" A2DP_CTRL_PATH是控制通道,A2DP…

物联网协议Coap中Californium CoapClient解析

目录 前言 一、CoapClient对象 1、类定义 2、Client方法调用 二、发送请求 1、构建请求 2、发起请求 3、接收响应 总结 前言 在之前的博客中物联网协议Coap之Californium CoapServer解析,文中简单介绍了CoapServer的实现。在物联网开发环境中,除了…

给Flutter + FireBase 增加 badge 徽章,App启动器 通知红点。

在此之前需要配置好 firebase 在flutter 在项目中。(已经配置好的可以忽略此提示) Firebase 配置教程:flutter firebase 云消息通知教程 (android-安卓、ios-苹果)_flutter firebase_messaging ios环境配置-CSDN博客 由于firebase 提供的消息…

在Gitee上维护Erpnext源

在Gitee上维护Erpnext源 官方的frappe和erpnext地址: GitHub - frappe/frappe: Low code web framework for real world applications, in Python and Javascript GitHub - frappe/erpnext: Free and Open Source Enterprise Resource Planning (ERP) 1, 仓库地址输入frappe的官…

HAL——SPI

学习目标 掌握SPI配置方式掌握SPI读写操作 学习内容 需求 SPI配置 打开SPI1,选中全双工模式。观察下方自动生成的引脚,是否和自己开发板引脚对应。 修改引脚,来动右侧芯片引脚视图,找到开发板对应引脚,进行修改。 观察修改后的…

SpringBoot-Redis

依赖 <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId>配置 # 服务器连接端口 spring.redis.port6379 # 服务器地址 spring.redis.host127.0.0.1 # 数据库索引&#xff08;默认为0&#xff09…

【GitHub】-design-pattern-extend(设计模式扩展)

写在前面 偶然间看到一篇文章 《Java 中保持扩展性的几种套路和实现》&#xff0c;写的不错&#xff0c;但是类图画的差了点儿意思。于是&#xff0c;自己动手画了画&#xff0c;对其中的内容作了一些调整&#xff0c;对包做了进一步划分&#xff0c;便于理解消化。以下是对Git…

Linux rsh命令教程:远程shell命令的使用和注意事项(附案例详解和注意事项)

Linux rsh命令介绍 rsh&#xff08;remote shell&#xff09;提供用户环境&#xff0c;也就是Shell&#xff0c;以便指令能够在指定的远端主机上执行。rsh连接到指定的主机&#xff0c;并执行指定的命令。rsh将其标准输入复制到远程命令&#xff0c;将远程命令的标准输出复制到…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《考虑多元不确定性和备用需求的微电网双层鲁棒容量规划》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 这个标题涉及微电网&#xff08;Microgrid&#xff09;的双层鲁棒容量规划&#xff0c;考虑了多元不确定性和备用需求。让我们逐步解读这个标题&#xf…

【KD】知识蒸馏(knowledge distillation)简单介绍

最近学到了知识蒸馏的相关知识&#xff0c;来简单总结一下૮꒰ ˶• ༝ •˶꒱ა。 知识蒸馏 知识蒸馏&#xff0c;是一种模型压缩的手段。通过训练学生模仿教师的行为&#xff0c;将嵌入在大的教师模型中的知识迁移到小的学生模型。 例如&#xff0c;TinyBERT(Jiao et al.,2…

RocketMQ源码 发送顺序消息源码分析

前言 rocketmq 发送顺序消息和普通消息的主流程区别大部分一致的&#xff0c;区别在于&#xff1a;普通消息发送时&#xff0c;从所有broker的队列集合中 轮询选择一个队列&#xff0c;而顺序队列可以提供用户自定义消息队列选择器&#xff0c;从NameServer 分配的顺序 broker…

使用JavaScript实现动态生成并管理购物车的深入解析

一、引言 在当前的互联网时代&#xff0c;电子商务已成为我们日常生活的重要组成部分。购物车作为电子商务网站的核心功能之一&#xff0c;其实现方式对于用户体验至关重要。本文将深入探讨如何使用JavaScript实现一个动态生成并管理购物车的功能&#xff0c;并详细介绍其实现…

Linux Shell数学运算与条件测试

一、Shell数学运算 1.Shell常见的算术运算符号 序号算术运算符号意义1、-、*、/、%加、减、乘、除、取余2**幂运算3、–自增或自减4&&、||、&#xff01;与、或、非5、!相等、不相等&#xff0c;也可写成6、、-、*、/、%赋值运算符&#xff0c;a1相等于aa1 2.Shell常…

.NET Standard 支持的 .NET Framework 和 .NET Core

.NET Standard 是针对多个 .NET 实现推出的一套正式的 .NET API 规范。 推出 .NET Standard 的背后动机是要提高 .NET 生态系统中的一致性。 .NET 5 及更高版本采用不同的方法来建立一致性&#xff0c;这种方法在大多数情况下都不需要 .NET Standard。 但如果要在 .NET Framewo…

QT 高DPI解决方案

一、根据DPI实现动态调整控件大小&#xff08;三种方式&#xff09; 1、QT支持高DPI&#xff08;针对整个进程中所有的UI&#xff09; // main函数中 QApplication::setAttribute(Qt::AA_EnableHighDpiScaling)tips&#xff1a;&#xff08;1&#xff09;如果不想全局设置&am…

Nodejs搭配axios下载图片

新建一个文件夹&#xff0c;npm i axios 实测发现只需保留node_modules文件夹&#xff0c;删除package.json不影响使用 1.纯下载图片 其实该方法不仅可以下载图片&#xff0c;其他的文件都可以下载 const axios require(axios) const fs require(fs) var arrPic [https:…

最大输出 18W,集成 Type-C PD 输出和各种快充输出协议

一、产品简介 IP6510是一款集成同步开关的降压转换器、支持 9 种输出快充协议、支持 Type-C 输出和 USB PD协议&#xff0c;为车载充电器、快充适配器、智能排插提供完整的解决方案。 IP6510 内置功率 MOS&#xff0c;输入电压范围是 4.5V到 32V&#xff0c;输出电压范围是 3…