网络学习:数据链路层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://www.hqwc.cn/news/460149.html

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

相关文章

探索C语言中的联合体与枚举:数据多面手的完美组合!

​ ✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C语言学习 贝蒂的主页&#xff1a;Betty‘s blog 1. 联合体的定义 联合体又叫共用体&#xff0c;它是一种特殊的数据类型&…

leetCode二叉树的堂兄弟节点

题目描述 在二叉树中&#xff0c;根节点位于深度 0 处&#xff0c;每个深度为 k 的节点的子节点位于深度 k1 处。 如果二叉树的两个节点深度相同&#xff0c;但 父节点不同 &#xff0c;则它们是一对堂兄弟节点。 我们给出了具有唯一值的二叉树的根节点 root &#xff0c;以…

从概念到实践:数字孪生在智慧城市建设中的应用与挑战

一、引言 随着科技的飞速发展&#xff0c;数字孪生这一概念逐渐受到广泛关注。数字孪生通过建立物理世界的数字模型&#xff0c;为城市的管理和规划提供了前所未有的可能性。智慧城市作为现代城市发展的重要趋势&#xff0c;正逐渐成为人们关注的焦点。本文将探讨数字孪生在智…

编译原理实验3——自下而上的SLR1语法分析实现(包含画DFA转换图、建表、查表)

文章目录 实验目的实现流程定义DFA状态实现代码运行结果测试1测试2测试3 总结 实验目的 实现自下而上的SLR1语法分析&#xff0c;画出DFA图 实现流程 定义DFA状态 class DFA:def __init__(self, id_, item_, next_ids_):self.id_ id_ # 编号self.item_ item_ # productio…

Redis保证数据不丢失的手段

Redis 保证数据不丢失的主要手段有两个&#xff1a; 持久化集群运行 我们分别来看它们两的具体实现细节。 # 1.Redis 持久化 持久化是指将数据从内存中存储到持久化存储介质中&#xff08;如硬盘&#xff09;的过程&#xff0c;以便在程序重启或者系统崩溃等情况下&#xf…

C++完成使用map Update数据 二进制数据

1、在LXMysql.h和LXMysql.cpp分别定义和编写关于pin语句的代码 //获取更新数据的sql语句 where语句中用户要包含where 更新std::string GetUpdatesql(XDATA kv, std::string table, std::string where); std::string LXMysql::GetUpdatesql(XDATA kv, std::string table, std…

机器学习之指数分布

指数分布&#xff1a; 指数分布可以用来表示独立随机事件发生的时间间隔。如果一个随机变量X的概率密度函数满足以下形式&#xff0c;就称X服从参数λ的指数分布&#xff0c;记作X ~ E(λ)或X~Exp&#xff08;λ&#xff09;。指数分布只有一个指数参数&#xff0c;且λ>0&a…

c++多态(3) -- 虚析构函数

代码: enum class _ANIMALS_TYPE {CAT,DOG,ANIMAL_COUNT };class Animal { public:Animal(_ANIMALS_TYPE type, int age,const char* name);~Animal();virtual void eat()const 0; private:_ANIMALS_TYPE type; // 动物类型int age; // 动物年龄char* na…

【Spring源码解读!底层原理进阶】【上】探寻Spring内部:BeanFactory和ApplicationContext实现原理揭秘✨

&#x1f389;&#x1f389;欢迎光临&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;特别推荐给大家我的最新专栏《Spring 狂野之旅&#xff1a;底层原理高级进阶》 &#x1f680…

解决CORS错误(Spring Boot)

记录一下错误&#xff0c;以博客的形式 前言 跨域&#xff08;Cross-Origin&#xff09;是指在Web开发中&#xff0c;当一个Web应用试图从一个源&#xff08;域名、协议、端口组合&#xff09;获取资源时&#xff0c;该请求的目标与当前页面的源不同。具体来说&#xff0c;当一…

SpringBoot之事务源码解析

首先事务是基于aop的&#xff0c;如果不了解aop的&#xff0c;建议先去看下我关于aop的文章: Spring之aop源码解析  先说结论&#xff0c;带着结论看源码。首先&#xff0c;在bean的生命周期中&#xff0c; 执行实例化前置增强&#xff0c;会加载所有切面并放入缓存&#xff0…

Django模板(三)

一、标签URL 返回与给定视图和可选参数相匹配的绝对路径引用(不含域名的 URL) {% url some-url-name v1 v2 %} 第一个参数是url模式名称,后面跟着的是参数,以空格分隔可以使用关键字: {% url some-url-name arg1=v1 arg2=v2 %}如果您想检索命名空间的URL,请指定完全限定…