浅谈vlan中pvid的作用

2023-11-06

vlan中的pvid其实就是处理标签的一种方式,在端口为access模式的时候pvid=access端口本身的vlan,也无法单独配置

在端口为trunk的时候pvid是可以根据需求配置的,默认的pvid=vlan1,而在trunk端口模式中,pvid影响的是trunk端口双向的数据帧。在接收方向上trunk端口是对于没有标签的数据帧打上配置的pvid号(vlan号),至于有vlan标签的数据帧不归pvid管,归port trunk-allow vlan x管。在发送方向上trunk端口是对于vlan号和配置的pvid号相同的数据帧进行untag去掉vlan标签的操作(将之变为vlan1的数据帧,也就是没有vlan标签的普通的以太网数据帧)。

在理解了以上的基础上,进行一个pvid功能的验证试验,topology如下:

 

基础配置如下:

sysname SW1
#
vlan batch 10

interface GigabitEthernet0/0/1
 port link-type trunk
 port trunk allow-pass vlan 10
#
interface GigabitEthernet0/0/2
 port link-type access
#
interface GigabitEthernet0/0/3
 port link-type access
 port default vlan 10
#

===============================

sysname SW2
#
vlan batch 10

interface GigabitEthernet0/0/1
 port link-type trunk
 port trunk allow-pass vlan 10
#
interface GigabitEthernet0/0/2
 port link-type access
 port default vlan 10
#

在PC1上分别ping PC2 PC3

PC1>ipconfig
IPv4 address......................: 192.168.1.1
Subnet mask.......................: 255.255.255.0
Gateway...........................: 0.0.0.0

PC1>ping 192.168.1.2

Ping 192.168.1.2: 32 data bytes, Press Ctrl_C to break
From 192.168.1.1: Destination host unreachable
From 192.168.1.1: Destination host unreachable

PC1>ping 192.168.1.3

Ping 192.168.1.3: 32 data bytes, Press Ctrl_C to break
From 192.168.1.1: Destination host unreachable
From 192.168.1.1: Destination host unreachable

此时PC1无法与PC2 PC3通信,但是PC2和PC3在同一个vlan是可以通信

PC2>ipconfig
IPv4 address......................: 192.168.1.2
Subnet mask.......................: 255.255.255.0
Gateway...........................: 0.0.0.0

PC2>ping 192.168.1.1

Ping 192.168.1.1: 32 data bytes, Press Ctrl_C to break
From 192.168.1.2: Destination host unreachable
From 192.168.1.2: Destination host unreachable

PC2>ping 192.168.1.3

Ping 192.168.1.3: 32 data bytes, Press Ctrl_C to break
From 192.168.1.3: bytes=32 seq=1 ttl=128 time=62 ms

下面我们以PC3通信为参照,分别修改sw1的pvid=10,sw2的pvid=1不变

[SW1-GigabitEthernet0/0/1]display this
#
interface GigabitEthernet0/0/1
 port link-type trunk
 port trunk pvid vlan 10
 port trunk allow-pass vlan 10
#

PC3分别pingPC1和PC2

PC3>ping 192.168.1.1

Ping 192.168.1.2: 32 data bytes, Press Ctrl_C to break
From 192.168.1.3: Destination host unreachable

PC3>ping 192.168.1.2

Ping 192.168.1.1: 32 data bytes, Press Ctrl_C to break
From 192.168.1.3: Destination host unreachable

这时候发现都不通了,可以分析一下PC3数据帧转发的过程,首先PC3发送arp给pc1、pc2,arp报文到了sw1后,sw1发现pc3过来的帧是携带vlan10的arp广播,于是只向vlan10内的所有端口发送(包括允许vlan10的trunk口),此时pc1的端口是vlan1,自然无法收到vlan10的arp广播因此不通,而vlan10的arp在经过sw1的trunk时在出去的方向被pvid=10的trunk端口untag掉了vlan10变成vlan1的普通以太网数据帧传到了sw2,sw2发现是vlan1的帧,就只向vlan1内的所有端口发送,而pc3是属于vlan10的自然无法收到vlan1的数据帧。

而后我们保持sw1的pvid=10,将sw2修改pvid=10,再看PC3的通信状况

[SW2-GigabitEthernet0/0/1]disp th
#
interface GigabitEthernet0/0/1
 port link-type trunk
 port trunk pvid vlan 10
 port trunk allow-pass vlan 10
#

PC3>ping 192.168.1.1

Ping 192.168.1.1: 32 data bytes, Press Ctrl_C to break
From 192.168.1.3: Destination host unreachable

PC3>ping 192.168.1.2

Ping 192.168.1.2: 32 data bytes, Press Ctrl_C to break
From 192.168.1.2: bytes=32 seq=1 ttl=128 time=62 ms

可以看到pc3能够ping通pc2,分析如下,pc3的vlan10的arp经过sw1的pvid10的untag变成vlan1转发给sw2后,sw2发现入向的arp是个vlan1的普通帧,而自己trunk的pvid=10,于是给这个没有tag的帧打上vlan10的标签,在广播到所有vlan10的端口中,这时身在vlan10中的pc2就可以收到了,pc2回包也是将自己的vlan10的arp应答消息发给sw2,sw2在出方向(由于pvid=10)将pc2发来的vlan10的帧untag变成vlan1的帧发给sw1,sw1发现入向的帧没有tag(自己的pvid又=10)于是给没有tag的帧打上vlan10的tag,并在vlan10内的所有端口下查找pc3的mac地址,发现pc3的mac地址在G0/0/3端口下,于是将帧通过G0/0/3口发给pc3,这样pc3就完成了一次和pc2的双向通信

=======================================================================

现在,我们将sw1的pvid=1,sw2的pvid=10看看,用pc3都无法ping通pc1和pc2,与之前的pc无法通信原理是一样的,但是不在同一个vlan的pc1却能和pc2通信,这里我们来看一下pc1和pc3的通信过程

[SW1-GigabitEthernet0/0/1]display this 
#
interface GigabitEthernet0/0/1
 port link-type trunk
 port trunk allow-pass vlan 10
#

[SW2-GigabitEthernet0/0/1]disp th
#
interface GigabitEthernet0/0/1
 port link-type trunk
 port trunk pvid vlan 10
 port trunk allow-pass vlan 10
#

PC1>ping 192.168.1.3

Ping 192.168.1.3: 32 data bytes, Press Ctrl_C to break
From 192.168.1.1: Destination host unreachable

PC1>ping 192.168.1.2

Ping 192.168.1.2: 32 data bytes, Press Ctrl_C to break
From 192.168.1.2: bytes=32 seq=1 ttl=128 time=62 ms

pc1发送vlan1的arp到sw1,sw1广播所有允许vlan1的端口中(包括允许vlan1的trunk中),于是arp到sw2,sw2发现是个没有tag的数据帧(自己的pvid=10)于是打上vlan10的标签,广播到vlan10的所有端口中被pc2收到,pc2回帧携带vlan10的帧给sw2,sw2在帧出方向的时候(由于pvid=10)untag掉vlan10的标签,变成vlan1的普通帧转发到sw1,sw1发现是vlan1的普通帧(自己的pvid=1)于是在vlan1的所有端口中查找pc1的mac,发现pc1的mac在g/0/0/2端口下,于是将帧转发给了pc1完成了一次双向的数据帧转发,所以pc1与pc3虽然不在一个vlan但是依然可以通信。

到这里都能理解的话,对于pvid就已经完全掌握了。总结一句话,pvid只在trunk中有用,并且在入向只管没有tag的帧,在出向只管与pvid相同vlan-id的帧。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

浅谈vlan中pvid的作用 的相关文章

  • 我可以为 Spring Boot 应用程序创建多个入口点吗?

    In 春季启动 需要指定一个主类 它是应用程序的入口点 通常 这是一个具有标准 main 方法的简单类 如下所示 SpringBootApplication public class MySpringApplication public s
  • 哪个 new 首先执行——在构造函数中还是在构造函数外?

    如果我定义一个类如下 public class myClass private x new anotherClass private y public myClass y new anotherClass 哪个变量会更早获得实例 x 或 y
  • 如何在 Spring Boot 1.4 中自定义 Jackson

    我一直无法找到如何使用的示例Jackson2ObjectMapperBuilderCustomizer java在spring boot 1 4中自定义Jackson的功能 boot 1 4 中自定义 Jackson 的 doco http
  • 将对象列表传递给 Freemarker 然后循环

    我已经熟悉了 FreeMarker 一个 Java 模板引擎 我已经能够通过哈希映射将对象传递给模板引擎了 这样就可以了 但是 一旦我尝试将任何类型的多个对象集传递给 FreeMarker 它就会给我一个 freemarker templa
  • 使用Optional作为类中的属性是一个好习惯吗? [复制]

    这个问题在这里已经有答案了 我读过一些关于目的的内容Optional 不幸的是我不记得在哪里 在Java 8中 我很惊讶作者没有提到使用Optional作为类中的属性 由于我在课堂上经常使用选项 我想知道这是否是一个好的做法 或者我可以更好
  • 使用java在mysql中插入带有\\的文件路径

    我正在使用java制作一个独立的应用程序 并且我需要插入用户从文件选择器中选择的图像的路径 我正在获取文件的路径 但是当我将其存储在数据库 mysql 中时 它不会存储 所以当我检索该路径时 该文件不会显示 如何存储文件的路径 这样就可以使
  • SwingWorker 在 Unsafe.park() 处挂起

    我有一个SwingWorker与后台服务器通信 然后更新JFrame 我正在调试我的应用程序并注意到即使在SwingWorker完成了它的工作 它的线程仍然存在 它挂在Unsafe park java lang Object 这是一个本机方
  • 全屏独占模式下的 AWT 框架在窗口弹出对话框中最小化

    我正在开发一个在全屏独占模式下使用 awt 框架的应用程序 一切正常 直到弹出窗口可见 这会抢走焦点 我的应用程序将被最小化 这是我的框架的初始化代码 if ApplicationConfig getInstance useFullscre
  • Maven:如何获取捆绑在包中的 .so 库

    我有一个带有 jar 和 so 文件的第三方库 我配置了 pom xml 如下
  • 使用 viewModel 从 ChildFragment 访问 ParentFragment 中的 ViewModel

    我正在尝试访问ParentViewModel for ParentFragment from ChildFragment using viewModels 这是我的代码 In ParentFragment class ParentFragm
  • 用dagger 2查看依赖注入

    我有一个自定义视图扩展TextView 我应该在哪里调用我的组件来注入视图 component inject customTextView 因此 我发现我需要在自定义视图的构造函数中添加注入 在所有视图中 或者使一个调用另一个 Exampl
  • 摆动刷新周期

    我试图了解何时使用重新验证 重绘 打包 令人惊讶的是 我没有找到详细的底层文档 请随意链接 到目前为止我已经明白这都是 RepaintManager 的责任 油漆 重新油漆指的是脏 干净的东西 pack validate revalidat
  • 将 Class 对象转换为字节

    如果我有一个Class http java sun com j2se 1 5 0 docs api java lang Class html在运行时实例 我可以获得它的 byte 表示形式吗 我感兴趣的字节将在类文件格式 http java
  • Spring @Configuration如何缓存对bean的引用

    使用基于 Java 的配置时 Spring 如何防止再次调用 bar 我想知道编译时注释处理或通过代理方法 Configuration public class AppConfig Bean public Foo foo return ne
  • Jersey bean 验证 ParameterNameProvider

    我正在阅读关于泽西岛的文档Bean验证 https jersey java net documentation latest bean validation html The ParameterNameProvider示例显示如何定义方法的
  • Hive NVL 不适用于列的日期类型 - NullpointerException

    我正在使用 HDFS 上的 MapR Hive 发行版并面临以下问题 如果表的列类型是 日期 类型 则NVL https cwiki apache org confluence display Hive LanguageManual UDF
  • 使用 JPA 和 Hibernate 时 DISTINCT 如何工作

    DISTINCT 在 JPA 中使用什么列 是否可以更改它 以下是使用 DISTINCT 的 JPA 查询示例 select DISTINCT c from Customer c 这没有多大意义 不同的列是基于哪一列 它是否在实体上指定为注
  • 如何使用SAXReader解析GPX文件?

    我正在尝试解析GPX file http en wikipedia org wiki GPS eXchange Format 我用 JDOM 尝试过 但效果不太好 SAXBuilder builder new SAXBuilder Docu
  • 如何使用 JRE 部署 JavaFX 11 桌面应用程序

    我有一个 JavaFX JDK 8 桌面业务应用程序 它使用 Java Web Start 进行部署 用户安装了 Java 8 只需访问 URL 我的 AWS Linux 服务器上的公共 URL 即可下载 启动应用程序 使用 Web Sta
  • 使用反射 API 填充 Proto 中的地图字段

    我正在尝试编写一个模块 该模块将获取 Message Builder 和从字段名称到值的映射 并将用值填充构建器 一切正常 直到我遇到地图字段 使用 Proto3 我收到一条特定消息 我知道我可以执行该消息的字段 builder b put

随机推荐

  • [网络安全自学篇] 四.实验吧CTF实战之WEB渗透和隐写术解密

    最近开始学习网络安全相关知识 接触了好多新术语 感觉自己要学习的东西太多 真是学无止境 也发现了好几个默默无闻写着博客 做着开源的大神 接下来系统分享一些网络安全的自学笔记 希望读者们喜欢 上一篇文章分享了解BurpSuite工具的安装配置
  • Klocwork部署的安全最佳实践

    Klocwork是一款静态代码分析和SAST工具 适用于 C C C Java JavaScript Python和Kotlin 可识别软件安全性 质量和可靠性问题 帮助强制遵守标准 阅读本文 您将了解Klocwork的设置步骤 助力您实现
  • 微信小程序使用.concat()等数组连接爆错原因

    微信小程序数组连接爆错 当我们在微信小程序中使用数组连接时有时候会出下以下的错误 js里面的写法如下 this setData goods this data goods concat res data 其原因的是因为在微信小程序的data
  • 【STM32F407电机控制学习笔记】TIM8输出PWM&触发ADC采集电流cubeMX配置

    时钟配置 高速时钟使用外部晶振 HCLK配置为160MHz 方便后续定时器分频 TIM8配置 TIM8的Channel1 Channel3用于输出两路互补的PWM Channel4 PWM不输出 用于触发ADC采样 中心对齐模式1 计数器在
  • 如果更好的做好MES系统运维

    因人因时因地制宜 治疗疾病要根据人体的体质 性别 年龄等不同 以及季节 地理环境以制定适宜的治疗方法 我觉得mes运维也应该采用相同的方式 下面先了解一下常见的三种运维方式 第一种方式 企业有自己的信息中心 不同的人负责不同的模块 员工职责
  • 使用ant-design-pro-vue时,将登录从mock换成后台出现问题(请求出现错误,请稍后再试)

    因为我不是专门的前端 所以搞这个时 困难重重 在使用这个模板时 我想要将登录换成从后台进行响应 在一开始我是通过项目中的mock文件下的auth js来找到对应的响应数据 看到如上图所示 我心想 稳了 结果我后台就按照这个来造了一个测试 结
  • 孔板流量计计算公式_差压式流量计常用计算公式及计算实例

    差压式流量计维修中计算工作是仪表人不可缺少的 在本文分享差压式流量计常用流量计算公式及计算实例 掌握这些干货技术 对用好差压式流量计有事半功倍效果 流量计算公式1 差压式流量计的差压与流量关系的换算差压式流量计的差压与流量的平方成正比 或者
  • 【Django快速开发实战】(30~51)使用Django创建一个基础应用:职位管理系统

    30 遗留系统集成 为已有系统数据库生成管理后台 流程说明 为已有数据库生成管理后台 创建项目和应用 创建新项目 django admin startproject empmanager 创建新应用 django admin startap
  • 基于idea-学生管理系统(list),包含五门课的成绩。

    学生的类 有学生的性别 籍贯 姓名和五门课程的成绩 用private进行封装 同时写出getter和setter方法 package com zheng people public class Student private String
  • Redis学习笔记9:主从复制

    一 主从复制是什么 主从复制 是指将一台Redis服务器的数据 复制到其他的Redis服务器 前者称为主节点 master leader 后者称为从节点 slave follower 数据的复制是单向的 只能由主节点到从节点 Master以
  • java和C#在嵌套类上的差异

    平时不太用java的inner class 也就知道里面inner class可以访问外部对象的实例成员 今天碰巧试了一下C 和java的嵌套类的区别 感觉java的嵌套类其实更像是嵌套对象的样子 而C 的嵌套类则就是类定义的嵌套的感觉只可
  • 使用supervisor使Laravel的queue保持后台常驻

    我的个人博客 逐步前行STEP 一 安装supervisor 1 yum install python setuptools 2 easy install supervisor 二 配置supervisor 1 echo superviso
  • 离10000小时的差距

    03年之前没有 看到程序就烦 03年 04年 ASP写网站 打下一点程序基础 对目前影响应该在100小时左右 05年下半年 06年上半年 学WIN32程序设计 DX等 折合每天3小时到4小时 大约1000小时 06年工作原因 基本可以忽略
  • windows10上传文件到vmware虚拟机

    网上看了很多的方案 有共享文件夹的 也有安装vmware tools的 都试过了不成功 后来使用的ftp工具上传 先使用 ip addr 看虚拟机的IP地址 第二条ens33下面的地址 我本机安装的filezilla 然后远程 默认端口22
  • ELI5:导数,偏导数

    导数 导数就是描述某个事物的变化速率 举个最常见的例子 当人从某地移动到另一地点的时候 速度就是这个移动的导数 因为它描述了移动的变化速率 再继续看 加速度就是速度的导数 因为加速度描述了速度的变化速率 当加速度恒定的时候 我们可以想到 速
  • href 属性 和 target属性

  • 悟空浏览器——青龙羊毛

    青龙羊毛之元宵特辑 六 今日中青看点又迎来了一波黑号 本菜鸡再次中奖 非酋体质 每次必中招 啥也不说了 发个新毛吧 悟空浏览器之前毛毛很多 有个群友和我说过 现在那位群友都褪裙了 毛毛才有脚本 猴哥 猴哥浏览器也是头条系的 不知道能坚持多久
  • 初等代数不等式2

    表示共有个参数的所有积之和 共有项 第个参数的指数是 第个参数的指数是 故 表示共有个参数的所有积之和 共有项 第个参数的指数是 第个参数的指数是 第个参数的指数是 故 即 表示共有个参数的所有积之和 共有项 第个参数的指数是 第个参数的指
  • 【JDK】二、环境变量从jdk17切换为jdk8后不生效的解决办法

    环境变量从jdk17切换为jdk8后不生效的解决办法 一 问题描述 二 环境变量为java17时的截图 三 修改为java8时的截图 四 解决办法 1 原因分析 2 删除jdk17和jdk8默认的配置或者把默认的下移 统一使用自己的 JAV
  • 浅谈vlan中pvid的作用

    vlan中的pvid其实就是处理标签的一种方式 在端口为access模式的时候pvid access端口本身的vlan 也无法单独配置 在端口为trunk的时候pvid是可以根据需求配置的 默认的pvid vlan1 而在trunk端口模式