【Access、Trunk和Hybrid】

概述

  • Access类型的端口只能属于1个VLAN,一般用于连接计算机的端口;
  • Trunk类型的端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,一般用于交换机之间连接的端口;
  • Hybrid类型的端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,可以用于交换机之间连接,也可以用于连接用户的计算机。
  • Hybrid端口和Trunk端口在接收数据时,处理方法是一样的,唯一不同之处在于发送数据时:Hybrid端口可以允许多个VLAN的报文发送时不打标签,而Trunk端口只允许缺省VLAN的报文发送时不打标签。

以上全部复制粘贴的,如果您看完觉得懂了,那我建议您做下边的实验试试。

详述

术语说明

PVID:又称缺省VLAN。(所以下面我可能两个都会用,希望你能分得清)这个是针对接口的,每个接口都有一个缺省VLAN,默认是1。
VID:VLAN ID,表示该数据帧所属VLAN的编号。这个是针对VLAN数据帧的,是VLAN Tag中的一小段(12bit)。
接收:主要指交换机从另一台设备(主机、交换机、路由器等)收到的数据帧和交换机内部不同端口接收的数据帧
发送:主要指交换机把数据帧发送给另一台设备(主机、交换机、路由器等)。
小小说明一下(其实一点也不小,这个很重要):交换机内部进行数据帧的转发的时候,全都是带tag的。换句话来讲,交换机内部端口与端口之间只有接收关系,不存在发送关系。(有点抽象,你可能需要细品)

Access

接收规则:

  • 收到untag帧,加上本端口的PVID,进行接收。
  • 收到tag帧,与本端口的PVID进行比较:VID与PVID相同,进行接收;VID与PVID不同,直接丢弃。

发送规则:剥掉tag,进行转发。

Trunk

接收规则:

  • 收到untag帧,加上本端口的PVID,然后判断,数据帧VID是否在本端口的允许转发列表(其实就是tagged列表):如果在,进行接收;如果不在,直接丢弃。
  • 收到tag帧,VID是否在本端口的允许转发列表(其实就是tagged列表):如果在,进行接收;如果不在,直接丢弃。

发送规则:VID是否与本端口的PVID一致:如果一致,剥掉tag,进行转发;如果不一致,带着tag转发。

Hybrid

接收规则:

  • 收到untag帧,加上本端口的PVID,如果在untagged或tagged列表中,进行接收;反之,直接丢弃。
  • 收到tag帧,VID如果在untagged或tagged列表中,进行接收;反之,直接丢弃。

发送规则:如果该数据的VID在untagged列表中,剥离tag,进行转发;如果在tagged列表中,带着tag转发。

实例说明

拓扑图:
华为拓扑图-第 2 页.png
下面的问题可以先自己根据上面的规则推理一下,然后再看,效果更佳。

下面的例子就是为了推理,不要扣协议啥的,理解了就行。

  1. PC1与PC2之间为什么通信不了?(Access接收)
    PC1发送数据帧到达交换机G0/0/1端口(Access端口,PVID为10),接收到的是untag帧,会为数据帧加上本端口的PVID,进行接收。一看是要找PC2的,就转发给G0/0/2端口(Access端口,PVID为20),G0/0/2这时候接收到VID为10的数据帧,由于数据帧的VID和本端的PVID不相同,所以直接丢弃。
  2. PC1与PC3之间为什么能通信?(Access接收+发送和Trunk接收+发送)
    PC1发送数据帧到达交换机G00/0/1端口(Access端口,PVID为10),接收到的是untag帧,会为数据帧加上本端口的PVID,进行接收。一看要找PC3的,就转发个G0/0/6端口,(Trunk端口,allow-pass为 VLAN10 20),G0/0/6这时候接收到VID为10的数据帧,查看是否在允许通过的表项里面,一看允许通过,进行接收。发送的时候会查看本端的PVID(1)和数据帧的VID(10)是否一样,一看不一样,直接发送。到达SW2的G0/0/6端口(Trunk端口,allow-pass为 VLAN10 20),接收到这个带着VID为10的数据帧,判断是否在允许通过的表项里面,一看允许通过,进行接收。一看要发给PC3,就把数据帧转发给G0/0/3端口。G0/0/3端口(Access端口,PVID为10),接收到的是VID为10的数据帧,与本端PVID进行比较,一看相同,进行接收。然后要从G0/0/3端口发送到PC3,直接剥掉标签,进行转发。

下面我语言就稍微简练一些,记不清参数的自己看看上面的图。

  1. PC3可以和PC5进行通信吗?(Hybrid接收+发送)
    (到交换机内部过程同上—省略一百万字)…** 接收**:转发给G0/0/5端口,接收到VID为10的帧,VID在tagged列表中,进行接收。发送给PC5:VID在tagged列表中,带着标签转发。PC5不识别,通信结束。
  2. PC4可以和PC5进行通信吗?(Hybrid接受+发送)
    (到交换机内部过程同上—省略一百万字)… 接收:转发给G0/0/5端口,接收到VID为20的帧,VID在untagged列表中,进行接收。发送给PC5:VID在untagged列表中,带着标签转发。PC5识别,通信结束,了吗?上面的1,2,3由于正反过程一样,所以反方向我没有推理。(绝对不是因为懒)这个咱们反方向推理一下。PC5回应PC4报文,**接收:**G0/0/5收到untag帧,加上本端口的PVID(1),在untagged列表中(默认所有接口都在VLAN1下的untagged列表中,只要你没设PVID就不会变),进行接收。发给G0/0/3端口,接收到VID为1的数据帧,与本端口PVID不相同,因此直接丢弃,通信结束。
  3. 如果SW1的G0/0/6端口的PVID为10,SW2的G0/0/6端口的PVID为20,PC1能和PC3通信吗?PC1能和PC4通信吗?(小小拓展一下下)
    (到交换机内部过程同上—省略一百万字)… **接收:**转发给SW1的G0/0/6端口,接收到VID为10的帧,VID在允许转发列表中,进行接收。VID与本端口PVID一致,剥掉tag,进行转发。SW2的G0/0/6端口接受:收到untag帧,加上本端口的PVID(20),进行接收。如果给PC3,毫无疑问直接丢弃。如果给PC4,则会顺利进行转发。(给Access端口就不分析了哈,这个逆过程类似,也不分析了哈。)

总结

上面的文字是不是看的不耐烦了,其实我是有图的。(嘿嘿)

Access端口

华为拓扑图-第 3 页 (2).png

Trunk端口

华为拓扑图-第 3 页.png

Hybrid端口

华为拓扑图-第 3 页 (1).png

真正的总结

  • 当接收到不带VLAN标签的数据帧时,Access接口、Trunk接口、Hybrid接口都会给数据帧打上VLAN标签,但Trunk接口、Hybrid接口会根据数据帧的VID是否为其允许通过的VLAN来判断是否接收,而Access接口则无条件接收。
  • 当接收到带VLAN标签的数据帧时,Access接口、Trunk接口、Hybrid接口都会根据数据帧的VID是否为其允许通过的VLAN(Access接口允许通过的VLAN就是缺省VLAN)来判断是否接收。
  • 当发送数据帧时:
    • Access接口直接剥离数据帧中的VLAN标签。
    • Trunk接口只有在数据帧中的VID与接口的PVID相等时才会剥离数据帧中的VLAN标签。
    • Hybrid接口会根据接口上的配置判断是否剥离数据帧中的VLAN标签。

因此,Access接口发出的数据帧肯定不带Tag,Trunk接口发出的数据帧只有一个VLAN的数据帧不带Tag,其他都带VLAN标签,Hybrid接口发出的数据帧可根据需要设置某些VLAN的数据帧带Tag,某些VLAN的数据帧不带Tag。

上面总结的内容都是摘自华为官方设备文档,所以,掏出文档看看吧。

实验练习

脑子:这么简单,我会了。手:你确定?

实验拓扑

Clip_2024-07-17_19-02-20.png

实验要求

  1. 端口要求根据拓扑图中标识的进行配置。
  2. 实现PC1,PC2和AR1互通。(二层通信)

实验配置及解析

  1. 基础配置,这就不多分析了,懂得都懂,不懂的我也没办法。
# PC配置IP地址,掩码。略。# SW1基本配置。
vlan batch 10interface Ethernet0/0/1port link-type accessport default vlan 10interface Ethernet0/0/21port link-type accessport default vlan 10   # SW2基本配置
vlan batch 20interface Ethernet0/0/2port hybrid pvid vlan 20port hybrid untagged vlan 20interface Ethernet0/0/21port link-type accessinterface Ethernet0/0/22port link-type trunk# SW3基本配置
vlan batch 30interface Ethernet0/0/22port link-type trunkinterface GigabitEthernet0/0/1port hybrid pvid vlan 30port hybrid tagged vlan 30# AR1基础配置
interface GigabitEthernet0/0/1.30# 是不是不懂下面这条命令,巧了不,我也忘了,所以你查查设备手册吧。dot1q termination vid 30ip address 10.1.10.254 255.255.255.0 # 下面这条我也忘了,不好意思。arp broadcast enable
  1. PC1和PC2之间进行通信。
    Access的端口特性是发送不带tag的,所以从E0/0/21端口出去的数据是没有标签的。而E0/0/21也是Access端口,E0/0/2是Hybrid端口,且端口PVID是20,所以问题就集中在Access配置什么PVID能使这两个端口正常通信?这猜也猜到了吧,当然配20了。原因:Access端口接收到untag帧,会打上自己的PVID,然后转发给E0/0/2,Hybrid端口接收到tag帧,VID(20)在untagged列表,进行接收。发送的时候由于VID在untagged列表中,剥离tag,进行转发。(逆过程类似,不再阐述。)
# SW2配置
interface Ethernet0/0/21port default vlan 20   
  1. PC1和AR1之间进行通信。
    思路和第二问连着,PC1的数据帧经过Access端口后,打上了tag(20),转发给E0/0/22端口,E0/0/22接收到带有tag的数据帧,去查允许转发列表,有VLAN20,进行接收。发送的时候,会比对本端口的PVID,如果一致,就剥离tag,如果不一致,就带着tag进行转发。剥不剥呢?肯定剥的。why?咱们看看路由器这边,路由器可以接收的VLAN30的数据帧(不看手册的你,越来越蒙圈),也就是说,数据帧给G0/0/1端口的时候是需要VID等于30,我们需要做的就是让数据经过两个Trunk端口,需要转变一下VID,熟不熟悉?这不就是实例5吗?所以就不过多讲解。(其实就是懒,嘿嘿。)
# SW2配置
interface Ethernet0/0/22port trunk pvid vlan 20port trunk allow-pass vlan 20# SW3配置
interface Ethernet0/0/22port trunk pvid vlan 30port trunk allow-pass vlan 30
  1. PC2和AR1之间进行通信
    完成上面的配置,你会神奇的发现,PC2也能Ping通AR1,不信?你试试。

参考文献

华为官方设备文档
155和150(2023).交换-端口类型.哔哩哔哩.检索于2024年7月17号
写在最后:强烈推荐155和150这位UP主的视频,这位UP总能以最小的图,让你复习最多的知识点。(看着简单,其实是真的不简单!)

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

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

相关文章

自己编写一个谷歌浏览器插件, 模拟某音直播间自动发消息

闲来没事, 做个插件玩一玩,于是一顿学习。 按照浏览器插件规范,一顿代码编写, 搞了一个简单的插件。仅做学习。 可以实现在直播间自动发消息。 定时轮发。 实现原理: 利用谷歌popub.js 发送消息。 在content-script.…

g2plot如何实现面积图和折线图的动态切换?

一开始的时候显示的是面积图: 当我点击折线图的时候,要变成折线图: 当我再点击面积图的时候,还要变回面积图: 要实现这个功能,得知道g2plot几个重要的API。 参考文档如下:https://g2plot…

防火墙之双机热备篇

为什么要在防火墙上配置双机热备技术呢? 相信大家都知道,为了提高可靠性,避免单点故障 肯定有聪明的小伙伴会想到那为什么不直接多配置两台防火墙,然后再将他们进行线路冗余,不就完成备份了吗? 答案是不…

JDK、JRE、JVM的区别java的基本数据类型

说一说JDK、JRE、JVM的区别在哪? JDK: Java Delopment kit是java工具包,包含了编译器javac,调试器(jdb)以及其他用于开发和调试java程序的工具。JDK是开发人员在开发java应用程序时候所需要的的基本工具。…

海外社媒矩阵为何会被关联?如何IP隔离?

在当今的数字时代,社交媒体已经成为人们日常生活中不可或缺的一部分。通过社交媒体,人们可以与朋友互动,分享生活,甚至进行业务推广和营销。然而,社交媒体账号关联问题逐渐受到广泛关注。社交媒体账号为何会关联&#…

问题清除指南|成功解决pipmatplotlib因为ConnectTimeoutError更新失败问题

前言:跑baseline需要升级matplotlib和pip,在此记录一个错误和一个「别致」的解决方案。 北京时间 14:00 左右,在终端环境中运行命令python -m pip install --upgrade pip,报错: 多次尝试,未果。 隔天上午 0…

Elasticsearch 企业级实战 01:Painless 脚本如何调试?

在企业级应用中,Elasticsearch 常常被用来处理复杂的数据查询和操作。 Painless 是 Elasticsearch 的内置脚本语言,虽然强大,但调试起来并不容易。 本文将详细介绍如何在实战中有效调试 Painless 脚本,以提高开发和运维效率。 本文…

2.javaWeb_请求和响应的处理(Request,Response)

2.请求和响应的处理 文章目录 2.请求和响应的处理一、动态资源和静态资源javax.servlet(包) 二、Servlet体系1.简介2.HttpServlet3.Servlet生命周期 三、Request对象1.ServletRequest1)ServletRequest主要功能有:2)ServletRequest类的常用方法: 2.HttpServletReques…

通过SchedulingConfigurer 接口完成动态定时任务

通过SchedulingConfigurer 接口完成动态定时任务 一.背景 在Spring中,除了使用Scheduled注解外,还可以通过实现SchedulingConfigurer接口来创建定时任务。它们之间的主要区别在于灵活性和动态性。Scheduled注解适用于固定周期的任务,一旦任…

生成式 AI 的未来,对话系统 (Chat)与自主代理 (Agent)相辅相成

目录 1. 概念解释生成式 AI对话系统 (Chat)自主代理 (Agent) 2. 代码示例对话系统示例 (使用 Python 和 NLTK 库)自主代理示例 (使用 Python 模拟简单的自主学习) 3. 逻辑性分析4. 通俗易懂的解释5. 与其他相似概念的对比6. 常见问题和解答7. 技术挑战与解决方案对话系统的技术…

内容安全(深度行为检测技术、IPS、AV、入侵检测方法)

1、深度行为检测技术 深度行为检测技术:是一种基于深度学习和机器学习的技术,它通过分析用户在网络中的行为模式,识别异常或潜在威胁行为,从而保护网络安全和内容安全 分类: 深度包检测技术(Deep Packet…

Kafka Producer发送消息流程之消息异步发送和同步发送

文章目录 1. 异步发送2. 同步发送 1. 异步发送 Kafka默认就是异步发送,在Main线程中的多条消息,没有严格的先后顺序,Sender发送后就继续下一条,异步接受结果。 public class KafkaProducerCallbackTest {public static void mai…

Unity Apple Vision Pro 开发(四):体积相机 Volume Camera

文章目录 📕教程说明📕教程内容概括📕体积相机作用📕创建体积相机📕添加体积相机配置文件📕体积相机配置文件参数📕体积相机的边界盒大小📕体积相机边界盒大小和应用边界盒大小的区别…

【GraphRAG】微软 graphrag 效果实测

GraphRAG 本文将基于以下来源,对Microsoft GraphRAG分析优缺点、以及示例实测分析。 1. Source 代码仓库: Welcome to GraphRAGhttps://microsoft.github.io/graphrag/ 微软文章1(2024.2.13):GraphRAG: Unlocking…

Hadoop3:MR程序的数据倾斜问题处理

一、数据倾斜 什么是数据倾斜? 学过Redis集群的都知道数据倾斜这个问题。 就是大量数据,分配不均匀的现象。 二、MR数据倾斜 1、怎么判断出现数据倾斜? 数据频率倾斜——某一个区域的数据量要远远大于其他区域。 数据大小倾斜——部分记…

Android中OkHttp3中超时时间概述

目录 前言connectTimeoutreadTimeoutwriteTimeoutcallTimeoutpingInterval拓展 前言 可以看到,使用还是很简单的。主要相关的有这五个参数,其中我们常用到是就是connectTimeout、readTimeout和writeTimeout。 再看上图,可以看到默认下connec…

js | Core

http://dmitrysoshnikov.com/ecmascript/javascript-the-core/ Object 是什么? 属性[[prototype]]对象。 例如,下面的,son是对象,foo不是对象。打印出来的son,能看到有一个prototype 对象。 prototype vs _proto_ v…

R语言实现神经网络ANN

# 常用激活函数 # 自定义Sigmoid函数 sigmod <- function(x){return(1/(1exp(-x))) } # 绘制Sigmoid曲线 x <- seq(-10,10,length.out 100) plot(x,sigmod(x),type l,col blue,lwd 2,xlab NA,ylab NA,main Sigmoid函数曲线)# 自定义Tanh函数 tanh <- function(…

Qt QProcess 进程间通信读写数据通信

本文介绍了如何使用Qt的QProcess 进行程序开发&#xff0c;包括启动进程间通信、设置环境变量、通用方法&#xff1b;方便在日常开发中使用&#xff1b; 1.使用Qt进行程序开发&#xff0c;可以通过QProcess类用于启动外部程序并与其进行通信.&#xff1b; 进程A&#xff08;…

微服务设计原则——高性能:锁

文章目录 1.锁的问题2.无锁2.1 串行无锁2.2 无锁数据结构 3.减少锁竞争参考文献 1.锁的问题 高性能系统中使用锁&#xff0c;往往带来的坏处要大于好处。 并发编程中&#xff0c;锁带解决了安全问题&#xff0c;同时也带来了性能问题&#xff0c;因为锁让并发处理变成了串行操…