网络学习:数据链路层VLAN原理和配置

 一、简介:

        VLAN又称为虚拟局域网,它是用来将使用路由器的网络分割成多个虚拟局域网,起到隔离广播域的作用,一个VLAN通常对应一个IP网段,不同VLAN通常规划到不同IP网段。划分VLAN可以提高网络的通讯质量和安全性。

二、Ethernet 802.1q帧(VLAN 数据帧)

        Ethernet 802.1q 帧与传统的Ethernet帧的区别,就是在源Mac地址后面,在长度/协议类型字段之前加入了4个字节的VLAN标签(VLAN TAG) 

 

1、VLAN TAG

        VLAN TAG:由TPID(标签协议标识符)和TCI(标记控制信息)组成,其中TCI 包含了PRI、CFI、VID等字段。 

标签名长度解释
TPID16bit表示帧类型,取值为0x8100时表示IEEE 802.1Q的VLAN数据帧。
PRI3bitPriority,表示数据帧的802.1Q优先级。取值范围为0~7,值越大优先级越高。
CFI1bitCFI取值为0表示MAC地址以标准格式进行封装,为1表示以非标准格式封装。在以太网中,CFI的值为0。
VID12bitVLAN ID取值范围是0~4095。由于0和4095为协议保留取值,所以VLAN ID的有效取值范围是1~4094。

 三、链路类型与接口类型

        常见的链路类型有:接入链路(Access) 干道链路(Trunk)

常见接口类型有:Access接口Trunk接口Hybrid接口3种接口类型。

1.干道链路(Trunk)

        为了实现跨VLAN间通讯,交换机和交换机间使用干道链路(Trunk)进行相连。为了让交换机设备能正确识别在干道链路上通讯的以太网数据帧必须是打上VLAN TAG的VLAN数据帧。所以通常干道链路的两端要设为能给数据帧打上TAG的Trunk接口。

2.接入链路(Access)

        某些设备只能收发Untagged帧无标记帧,如:个人主机、服务器、Hub集线器等,这样就要求交换机与这些设备连接使用接入链路(Access),并且与接入链路相通的交换机接口使用可以进行VLAN TAG剥离操作的Access接口。

3.缺省VLAN和本征VLAN

        缺省VLAN(华为PVID)本征VLAN(思科)本质上是同一个概念。这里统称缺省VLAN。

        前面提到,设备处理的数据帧都带Tag,当设备收到Untagged帧时,就需要给该帧添加Tag,添加什么Tag,就由接口上的缺省VLAN决定。

        对于Access接口,缺省VLAN就是该接口被划分到的VLAN,也称被接口允许通过VLAN。
        对于Trunk接口和Hybrid接口,一个接口可以允许多个VLAN通过,但是只能有一个缺省VLAN。接口的缺省VLAN和允许通过的VLAN需要分别配置,互不影响。默认的缺省VLAN为VLAN 1。

        当一个数据帧没有打标签,是一个原始的以太网帧时,它属于缺省VLAN。

        缺省VLAN的作用是为了解决无法打vlan标签的设备与能打vlan标签的设备进行通信而存在。

        虽然在交换机之间传输不打标签。但在交换机内部会被打上标签,因为只能在本Vlan内部发送广播。

3.接口汇总分析

接口类型对接收不带Tag的报文处理对接收带Tag的报文处理发送帧处理过程
Access接口        接收该报文,并打上缺省的VLAN ID。

        当VLAN ID与缺省VLAN ID相同时,接收该报文。

        当VLAN ID与缺省VLAN ID不同时,丢弃该报文。

        先剥离帧的PVID Tag,然后再发送。
Trunk接口

        打上缺省的VLAN ID,当缺省VLAN ID在允许通过的VLAN ID列表里时,接收该报文。

        打上缺省的VLAN ID,当缺省VLAN ID不在允许通过的VLAN ID列表里时,丢弃该报文。

·        当VLAN ID在接口允许通过的VLAN ID列表里时,接收该报文。

        当VLAN ID不在接口允许通过的VLAN ID列表里时,丢弃该报文。

        当VLAN ID与缺省VLAN ID相同,且是该接口允许通过的VLAN ID时,去掉Tag,发送该报文。

        当VLAN ID与缺省VLAN ID不同,且是该接口允许通过的VLAN ID时,保持原有Tag,发送该报文。

Hybrid接口

        打上缺省的VLAN ID,当缺省VLAN ID在允许通过的VLAN ID列表里时,接收该报文。

        打上缺省的VLAN ID,当缺省VLAN ID不在允许通过的VLAN ID列表里时,丢弃该报文。

        当VLAN ID在接口允许通过的VLAN ID列表里时,接收该报文。

        当VLAN ID不在接口允许通过的VLAN ID列表里时,丢弃该报文。

        当VLAN ID是该接口允许通过的VLAN ID时,发送该报文。可以通过命令设置发送时是否携带Tag。

4.静态VLAN

基于端口的VLAN,即明确指定出各个端口属于哪个VLAN。

5.动态VLAN

基于MAC地址的VLAN:

        通过查询并记录端口所连计算机上网卡的MAC地址来决定端口的所属,属于OSI第二层

        例:假定有一个MAC地址“A”被交换机设定为属于VLAN “10”,那么不论MAC地址为“A”的这台计算机连在交换机哪个端口,该端口都会被划分到VLAN 10中去。计算机连在端口1时,端口1属于VLAN 10;而计算机连在端口2时,则是端口2属于VLAN 10。

        但是,基于MAC地址的VLAN,在设定时必须调查所连接的所有计算机的MAC地址并加以登录。而且如果计算机交换了网卡,还是需要更改设定。

基于IP地址(子网)的VLAN:

        就是通过所连计算机的IP地址,来决定端口所属VLAN的,属于OSI第三层。

        例:假定有一个IP地址“A”被交换机设定为属于VLAN “10”,那么这台计算机的IP地址不变,无论它连在交换机哪个端口,该端口都会被划分到VLAN 10中去。计算机连在端口1时,端口1属于VLAN 10;而计算机连在端口2时,则是端口2属于VLAN 10。

        因此,与基于MAC地址的VLAN相比,能够更为简便地改变网络结构。

基于用户的VLAN:

        根据交换机各端口所连的计算机上当前登录的用户,来决定该端口属于哪个VLAN。

        解释:这里的用户识别信息,一般是计算机操作系统登录的用户,比如可以是Windows域中使用的用户名。这些用户名信息,属于OSI第四层以上的信息。

        总的来说,决定端口所属VLAN时利用的信息在OSI中的层面越高,就越适于构建灵活多变的网络。

四、不同VLAN间的通讯

PC0的IP地址:192.168.1.1

PC2的IP地址:192.168.2.1

1.当PC0发送IP协议帧到交换机,此时发送的是传统的以太网Ethemet II帧。

2.当Switch的Fa0/1口配为Access口时,PC0发送的以太网帧会被打上VLAN 10的标签,变成VLAN数据帧。

3.当VLAN数据帧通过Switch的TRUNK口时,发现VLAN 10与缺省VLAN(VLAN 1)不同保持原标签不动发送帧。当三层交换机接收VLAN数据帧,会根据目的IP地址所对应VLAN 标签重新打上新的VLAN 标签,然后发送给交换机对应VLAN的Access口,最后剥离标签,变成普通的以太网帧发送给PC2。

五、思科VLAN相关配置代码

二层交换机

创建VLAN

VLAN <vlan-id>

重命名VLAN

name <vlan-name>

端口分配VLAN

interface <interface-id> #进入接口配置模式#
switchport mode access #将接口设置为访问模式#
switchport access vlan <vlan-id> #接口分配到指定的VLAN#

汇聚链路端口设置(Trunk模式)

interface <interface-id> #进入要配置为 trunk 的接口配置模式#
switchport mode trunk #修改接口为trunk模式#
switchport trunk allowed vlan <vlan-list> #配置允许通过 trunk 的 VLAN#

三层交换机

1.汇聚链路端口设置(Trunk模式)

interface <interface-id> #进入要配置为 trunk 的接口配置模式#
switchport trunk encapsulation dot1q #配置 trunk 的封装协议#
switchport mode trunk #配置接口为 trunk 模式#

2.接口配置IP地址

interface <interface-id> #进入接口配置模式#
no switchport #二层端口提升三层端口#
ip address <ip-address> <subnet-mask> #配置ip#

3.开启路由模式

ip routing #开启路由功能#

4.VLAN配置ip地址

interface vlan <vlan-id> #进入 VLAN 接口配置模式#
ip address <ip-address> <subnet-mask> #配置 VLAN 接口的 IP 地址和子网掩码#

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Unity类银河恶魔城学习记录5-1.5-2 P62-63 Creating Player Manager and Skill Manager源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili PlayerManager.cs using System.Collections; using System.Collections.G…

【制作100个unity游戏之24】unity制作一个3D动物AI生态系统游戏3(附项目源码)

最终效果 文章目录 最终效果系列目录前言随着地面法线旋转在地形上随机生成动物不同部位颜色不同最终效果源码完结系列目录 前言 欢迎来到【制作100个Unity游戏】系列!本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第24篇中,我们将探索如何用unity制作一…

B2080 计算多项式的值(洛谷)

题目描述 假定多项式的形式为 … x1&#xff0c;请计算给定单精度浮点数 x 和正整数 n 值的情况下这个多项式的值。多项式的值精确到小数点后两位&#xff0c;保证最终结果在 double 范围内。 输入格式 输入仅一行&#xff0c;包括 x 和 n&#xff0c;用单个空格隔开。 输…

前端滚动组件分享

分享一个前端可视化常用的卡片列表滚动组件&#xff0c;常用于可视化项目左右两侧的卡片列表的滚动。效果如下图所示&#xff1a; 组件描述 当鼠标移入滚动区域时&#xff0c;滚动行为停止当鼠标再次离开时&#xff0c;滚动继续 源码展示 <template><div ref"…

【RPA】智能自动化的未来:AI + RPA

伴随着人工智能&#xff08;AI&#xff09;技术的迅猛进步&#xff0c;机器人流程自动化&#xff08;RPA&#xff09;正在经历一场翻天覆地的变革。AI为RPA注入了新的活力&#xff0c;尤其在处理复杂任务和制定决策方面。通过融合自然语言处理&#xff08;NLP&#xff09;、机器…

uni-app x,一个纯原生的Android App开发工具

uni-app x&#xff0c;下一代uni-app&#xff0c;一个神奇的产品。 用vue语法、uni的组件、api&#xff0c;以及uts语言&#xff0c;编译出了kotlin的app。不再使用js引擎和webview。纯纯的kotlin原生app。 uni-app x&#xff0c;让“跨平台开发性能不如原生”的这条曾广为流…

CSP-202109-1-数组推导

CSP-202109-1-数组推导 解题思路 如果 currentValue 与 previousValue 相同&#xff0c;说明这个值不是一个独特的新值&#xff0c;因此只将它加到 sumTotal 上。如果 currentValue 与 previousValue 不相同&#xff0c;说明这是一个新的独特值&#xff0c;因此既将它加到 su…

EMC学习笔记(二十三)降低EMI的PCB设计指南(三)

双层板电源分配 1.单点与多点分布2.星型分布3.创建网格平面4.旁路和磁珠5.将噪声保持在芯片附近 tips&#xff1a;资料主要来自网络&#xff0c;仅供学习使用。 1.单点与多点分布 在一个真正的单点配电系统中&#xff0c;每个有源元件都有自己独立的电源和地&#xff0c;这些…

让AI更“智能”的Agent,究竟是什么?

引言 我相信对许多对AI感兴趣的读者来说&#xff0c;“Agent”是个听起来既熟悉又陌生的词汇&#xff0c;而由于ChatGPT引发的浪潮又将Agent的概念推上顶峰&#xff0c;正好借助这个机会我来好好解释一下这个词汇。 Agent的基本含义 在AI领域&#xff0c;Agent基本可以被理解…

蓝桥杯备赛Day9——链表进阶

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5]示例 2: 输入:head = [1], n = 1 输出:[]示例 3: 输入:head = [1,2], n = 1 输出:[1]提示: 链表中结点的数目为 sz1 <= sz <= 300 &l…

心情切换器(仅供娱乐)

本次分享主要内容较为新奇&#xff0c;作用程度可以说没用&#xff0c;仅供娱乐(注&#xff1a;本次成果使用的为vue框架实现) 一、静态及呈现图 <div class"switchMood"><h2>心情转换器</h2><!--输入当前心情表单--><div class"fr…

Project 2010下载安装教程,保姆级教程,附安装包和工具

前言 Project是一款项目管理软件&#xff0c;不仅可以快速、准确地创建项目计划&#xff0c;而且可以帮助项目经理实现项目进度、成本的控制、分析和预测&#xff0c;使项目工期大大缩短&#xff0c;资源得到有效利用&#xff0c;提高经济效益。软件设计目的在于协助专案经理发…

PlantUML绘制UML图教程

UML&#xff08;Unified Modeling Language&#xff09;是一种通用的建模语言&#xff0c;广泛用于软件开发中对系统进行可视化建模。PlantUML是一款强大的工具&#xff0c;通过简单的文本描述&#xff0c;能够生成UML图&#xff0c;包括类图、时序图、用例图等。PlantUML是一款…

k8s 部署java应用 基于ingress+jar包

k8 集群ingress的访问模式 先部署一个namespace 命名空间 vim namespace.yaml kind: Namespace apiVersion: v1 metadata:name: ingress-testlabels:env: ingress-test 在部署deployment deployment是pod层一层封装。可以实现多节点部署 资源分配 回滚部署等方式。 部署的…

Docker部署前端项目

某次阿里云的自动流水线失败了&#xff0c;代码本地跑起来莫得问题&#xff0c;错误日志提示让我跑一下npm run build &#xff0c;但是俺忽然发现&#xff0c;我跑了&#xff0c;文件打包好了&#xff0c;但是往哪里运行呢&#xff1f;这涉及到要构建一个环境供打包文件部署吧…

运维高级篇-分库分表(拆分策略详解)

分库分表 介绍 问题分析 随着互联网及移动互联网的发展&#xff0c;应用系统的数据量也是成指数式增长&#xff0c;若采用单数据库进行数据存 储&#xff0c;存在以下性能瓶颈&#xff1a; IO瓶颈&#xff1a;热点数据太多&#xff0c;数据库缓存不足&#xff0c;产生大量磁盘…

【前端web入门第四天】01 复合选择器与伪类选择器

文章目录: 1. 复合选择器 1.1 后代选择器 1.2 子代选择器 1.3 并集选择器1.4 交集选择器(了解) 2.伪类选择器 2.1 伪类-文本2.2 伪类-超链接&#xff08;拓展) 1. 复合选择器 什么叫复合选择器? 由两个或多个基础选择器&#xff0c;通过不同的方式组合而成。 复合选择器的作…

基于微信小程序的校园失物招领小程序

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

【JavaEE】_传输层协议UDP与TCP

目录 1. 开发中常见的数据组织格式 1.1 XML 1.2 JSON 1.3 Protobuf 2. 端口号 3. UDP协议 4. TCP协议 4.1 特点 4.2 TCP报文格式 4.3 TCP可靠性机制 4.3.1 确认应答机制 4.3.2 超时重传机制 4.3.2.1 丢包的两种情况 4.3.2.2 重传时间 4.3.3 连接管理机制 4.3.3…

肯尼斯·里科《C和指针》第13章 高级指针话题(3)命令行参数

处理命令行参数是指向指针的指针的另一个用武之地。有些操作系统&#xff0c;包括UNIX和MS-DOS&#xff0c;让用户在命令行中编写参数来启动一个程序的执行。这些参数被传递给程序&#xff0c;程序按照它认为合适的任何方式对它们进行处理。 13.4.1 传递命令行参数 这些参数如何…