关于交换机端口的Trunk和Access模式的分析与验证

2023-10-29

1、理论简析:

以太网交换机的通信是基于端口的通信,其端口类型分为Trunk port(干道端口)、Access port(接入端口)、Hybird port(混合端口)三种。Access port一般用于交换机和用户PC主机相连,连接用户主机和交换机的链路称为接入链路(Access Link);而Trunk port一般用于连接交换机,通过Trunk port相连的链路称为干道链路。Hybird port可以连接交换机和用户主机,也可以连接交换机和交换机(暂不考虑Hybird port)。

其中Access和Trunk是比较常用的端口模式。

Access port只属于一个VLAN,Access链路上的数据帧是不带VLAN tag的帧(因为Access链路要么是PC->Access port,PC本身不会识别VLAN tag,所以PC->Access port是不会带VLAN tag的;要么是Access port->PC,由于出端口目标是明确的,不存在需要带VLAN Tag去区别VLAN,所以Access port->PC也是不需要带VLAN tag的)
而Trunk port可以属于多个VLAN,Trunk上的帧也是带tag的帧,目的就是为了区分不同的VLAN,实现不同交换机的同一VLAN间以及跨VLAN的数据通信。
③带VLAN tag的数据帧(802.1Q)格式如下所示(除去VLAN tag便是标准以太帧格式),其主要的字段是优先级和VLAN ID字段:
这里写图片描述

以下例(如图所示)来说明以太网数据帧在进入和离开Access、Trunl两种不同类型端口时,添加与剥离VLAN tag的步骤。
这里写图片描述

SW1和SW2各有三个端口,其端口类型与链路类型如图所示,SW1:port3和SW2:port3都是trunk port,SW1:port3属于一个VLAN,而SW2:port3属于两个VLAN。

入端口和出端口都是Access port:
①当A要给B发送消息,则A发送一个不带tag的数据帧(源MAC:A,目标MAC:B)到达SW1:port1;
②SW1:port1接收到不带tag的数据帧,根据port1所在所在VLAN(VLAN 1),进入交换机之后便加上VLAN tag,标识了该数据帧属于VLAN 1;
③在经过查找FDB表,知道了要将数据帧送给B则必须从SW1:port 2转发出去,但是SW1:port 2并不在VLAN 1中,所以该报文是不能直接由交换功能转发到SW1:port 2的,即B是不能直接通过二层转发收到来自A的数据帧的;
④那么直接通过FDB转发不行,该报文就不能转发成功了吗?当然不是,假设交换机具备三层功能,并且存在VLAN1~VLAN2的路径,数据帧通过解析出目标IP,借助三层转发表匹配出接口MAC并找到出接口对应端口,或者路由表(初次)找到下一跳的出接口,从而从目标端口SW1:port2转发出去到达B【注:在讲Trunk、Access、Hybrid端口类型时,是忽略三层转发功能的,仅从二层来讲,A发送的报文确实不能到达B】。

入端口和出端口都有Access port与Trunk port:
①当A要给C发送消息,同样A发送一个不带tag的数据帧(源MAC:A,目标MAC:C)到达SW1:port1;
②SW1:port1接收到不带tag的数据帧,根据port1所在所在VLAN(VLAN 1),进入交换机之后便加上VLAN tag,标识了该数据帧属于VLAN 1;
③经过查找FDB表,知道了要将数据帧送给C则必须从SW1:port 3转发出去,经过交换机内部交换芯片处理后到达SW1:port 3即将转发;
④由于SW1:port 3是Trunk端口,则先检查VLAN tag的VLAN ID是否等于PVID,检查不等于则直接发送【如果VID==PVID则剥离tag再转发】。
⑤SW2:port3接收到从Trunk link上收到的带VLAN tag的数据帧,先解析是否带VLAN tag【如果不带则加上tag信息,tag中的VLAN ID设为PVID】,如果带tag则判断,端口是否允许该tag所标识的VLAN数据进入,允许则进入交换机内部进行交换转发,不允许则丢弃;
⑥在交换机内部通过tag信息的标识,查找FDB表数据到达SW2:port1,由于SW2:port1是一个Access port,所以在数据转发前先将tag剥离掉,在转发给C,则C收到一个不带tag的来自A的数据帧。

由上面分析可知:
①凡是和PC打交道的数据帧都是不带VLAN tag的(因为VLAN是二层交换机的概念,不牵扯PC);
②凡是和进入交换机的数据帧都需要加上VLAN tag,以实现能够在交换机内部交换转发是能够识别不同VLAN;

2、搭建实验环境:

实验环境如下图所示:
这里写图片描述

两个接入层交换机Switch0和Switch1其FE0/1~FE0/24均设置为Access 口,且FE0/1~FE0/12均加入VLAN 1,而FE0/13~FE0/24均加入VLAN 2。因此各PC与Server所处VLAN就如图所示清晰明了:PC0、PC2、Server2处于VLAN1;PC1、PC3、Server3处于VLAN2;另外顶端的直接连接在Multilayer Switch0的FE0/1类型为Access port上的Server1属于VLAN3。

配置如下:

//Multilayer Switch0配置:

//配置gigabitEthernet 0/1为trunk口
Switch>enable 
Switch#configure terminal 
Switch(config)#interface gigabitEthernet 0/1
Switch(config-if)#switchport trunk encapsulation dot1q
Switch(config-if)#switchport mode trunk 
Switch(config-if)#exit

//配置gigabitEthernet 0/2为trunk口
Switch(config)#interface gigabitEthernet 0/2
Switch(config-if)#switchport trunk encapsulation dot1q
Switch(config-if)#switchport mode trunk 
Switch(config-if)#exit
Switch(config)#

//配置VLAN interface
Switch(config)#interface vlan 1
Switch(config-if)#ip address 192.168.10.1 255.255.255.0
Switch(config-if)#no shutdown 
Switch(config)#interface vlan 2
Switch(config-if)#ip address 192.168.20.1 255.255.255.0
Switch(config-if)#no shutdown 
Switch(config)#interface vlan 3
Switch(config-if)#ip address 128.255.240.1 255.255.0.0
Switch(config-if)#no shutdown 

//开启VLAN间路由
Switch(config)#ip routing
Switch(config)#exit
Switch#copy running-config start-config
//Switch0和Switch1配置一致:
Switch>enable 
Switch#configure terminal 
Enter configuration commands, one per line.  End with CNTL/Z.	

//新建VLAN
Switch(config)#vlan 1
Switch(config-vlan)#exit
Switch(config)#vlan 2
Switch(config-vlan)#exit

//指定fastEthernet 0/1 - fastEthernet 0/12端口属于VLAN1,且均是Access port
Switch(config)#interface range fastEthernet 0/1 - fastEthernet 0/12
Switch(config-if-range)#switchport mode access
Switch(config-if-range)#switchport access vlan 1
Switch(config-if-range)#exit
//指定fastEthernet 0/13 - fastEthernet 0/24端口属于VLAN2,且均是Access port
Switch(config)#interface range fastEthernet 0/13 - fastEthernet 0/24
Switch(config-if-range)#switchport mode access
Switch(config-if-range)#switchport access vlan 2
Switch(config-if-range)#exit

//配置gigabitEthernet 0/1为trunk口
Switch(config)#interface gigabitEthernet 0/1
Switch(config-if)#switchport mode trunk 
Switch(config-if)#exit 
Switch(config)#exit
Switch#copy running-config startup-config 
Switch#

测试步骤如下:
①在三台服务器上搭建我们的三个Web网站;
②开启三层交换机的ip routing功能,则任何一个主机可以访问任何一台服务器(由于trunk链路的存在,才可以实现跨交换机实现同一VLAN间通信);
这里写图片描述
③但是当关闭三层交换机的ip routing功能,则主机只能访问本VLAN内Server,不同VLAN的主机不能跨VLAN访问服务器(由于Trunk链路与路由二者均存在,才可以实现不同交换机上不同VLAN间的任意通信)。
这里写图片描述
通过上例,我们就可以明确Trunk 链路的实际作用了。

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

关于交换机端口的Trunk和Access模式的分析与验证 的相关文章

  • object-c万能解决bug思路

    有关运算符重载 C 支持运算符重载 但 Objective C 中不支持 然而 Objc 中可以看到下面的用法 id obj dict keyStr 它和 id obj dict objectForKey keyStr 等价 这里的 的用法
  • java综合技术分享

    1 心跳机制 1 1心跳包机制 跳包之所以叫心跳包是因为 它像心跳一样每隔固定时间发一次 以此来告诉服务器 这个客户端还活着 事实上这是为了保持长连接 至于这个包的内容 是没有什么特别规定的 不过一般都是很小的包 或者只包含包头的一个空包
  • stack queue free-lock implate

    https github com kayaklee libhalog blob master test clib hv sample lifo cpp https github com kayaklee libhalog blob mast
  • thrift源码解析之server

    文章目录 前言 概述 TSimpleServer serve 1 listen 2 accept 3 newlyConnectedClient TNonblockingServer serve 1 registerEvents 1 赋值us
  • Java中Thread类的基本用法

    目录 一 创建线程的方式 1 继承Thread类 2 实现Runnable接口 3 匿名内部类中创建Thread子类对象 4 匿名内部类中创建Runnable子类对象 5 lambda表达式创建Runnabl子类对象 二 Thread的常见
  • netty 系列之:java 中的 base64 编码器

    简介 什么是 Base64 编码呢 在回答这个问题之前 我们需要了解一下计算机中文件的分类 对于计算机来说文件可以分为两类 一类是文本文件 一类是二进制文件 对于二进制文件来说 其内容是用二进制来表示的 对于人类是不可立马理解的 如果你尝试
  • 驱动移植学习心得

    系统移植 把操作系统 Linux 能够在芯片 板子 上运行 目标 在开发板上运行操作系统 嵌入式系统 linux 以应用为中心 把软硬件进行裁剪 适用于应用的专用计算机系统 1 交叉编译环境搭建 开发主机 编译工具 针对开发板的编译工具 a
  • C语言库编译时添加编译时间和svn版本号

    1 功能应用背景和开发思路 1 应用背景 当程序出错时 我们想要知道库的版本信息 这样有助于定位错误是哪个版本引入的 缩小排查的范围 就算程序没有出错 能知道库的版本 也方便知道程序的版本 2 思路 在编译源码时 获取svn版本和编译时间并
  • Python 中的键值(具名)参数:如何使用它们

    键值参数是 Python 的一个特性 对于从其他编程语言转到 Python 的人来说 不免看起来有些奇怪 人们在学习 Python 的时候 经常要花很长时间才能理解键值参数的各种特性 在 Python 教学中 我经常希望我能三言两语就把键值
  • 阿里巴巴达摩院通义千问【附申请链接】阿里版ChatGPT

    Welcome to Aedream同学 s blog 文章目录 报名测试 实际体验效果 阿里云作为数一数二的全球云平台 阿里的大语言模型通义千问还是值得期待的 凭借强大的算力支持还是有机会赶上人工智能发展浪潮 早前阿里巴巴达摩院关于人工智
  • Java Map 所有的值转为String类型

    可以使用 Java 8 中的 Map replaceAll 方法将所有的值转为 String 类型 Map
  • spring 事务异常org.springframework.beans.factory.support.DefaultListableBeanFactory@1b4c1d7: defining be

    事务异常错误信息 org springframework beans factory support DefaultListableBeanFactory 1b4c1d7 defining beans indexController tes
  • 浅谈对Linux中行规程(Line Discipline)的理解

    文章目录 前言 一 Line Discipline是什么 二 在输入子系统中的位置 总结 前言 学完Linux驱动程序中的输入子系统 Input System 后 又接触到行规程 Line Discipline 明明这个行规程也是用来处理输
  • Linux网络编程:Web服务器

    文章目录 一 超文本编辑语言HTML 二 HTTP超文本传输协议 1 请求和响应消息流程 myhttpd c getline函数 用于读取http协议头 2 错误 2 1 处理出错返回disconnect 2 2 错误页面展示send er
  • 【机器学习】:梯度提升决策树(GBDT)

    综述 GBDT Gradient Boosting Decision Tree 又叫 MART Multiple Additive Regression Tree 是一种迭代的决策树算法 该算法由多棵决策树组成 所有树的结论累加起来做最终答
  • 深度解读Q_D指针与Q_Q指针

    首先是Q D指针 先贴上我们的测试用例 class TEST class TESTPrivate public TESTPrivate TEST parent q ptr parent a 666 cout lt lt TESTPrivat
  • 【C++】初阶 --- 引用(超级详细版!!!)

    文章目录 一 引用的概念 二 引用的特性 1 引用在定义时必须初始化 2 一个变量可以有多个引用 3 引用一旦引用一个实体 再不能引用其他实体 三 常引用 被const 修饰的引用 1 权限的放大 2 权限的平移 3 权限的缩小 4 临时变
  • Java 字符串Base64编码和解码

    编码 String message 我是码农 String encode Base64 getEncoder encodeToString message getBytes StandardCharsets UTF 8 方式一 String

随机推荐

  • 线程与进程的区别

    1 一个程序至少有一个进程 一个进程至少有一个线程 2 线程的划分尺度小于进程 使得多线程程序的并发性高 3 进程在执行过程中拥有独立的内存单元 而多个线程共享内存 从而极大地提高了程序的运行效率 4 每个独立的线程有一个程序运行的入口 顺
  • 老油条表示真干不过,部门新来的00后网络安全工程师已把我卷崩溃,想离职了...

    在程序员职场上 什么样的人最让人反感呢 是技术不好的人吗 并不是 技术不好的同事 我们可以帮他 是技术太强的人吗 也不是 技术很强的同事 可遇不可求 向他学习还来不及呢 真正让人反感的 是技术平平 却急于表现自己的人 每天加班到12点 在老
  • 在Idea中,如何在SpringBoot中使用jsp页面

    在Idea中 如何在SpringBoot中使用jsp页面 1 首先 创建一个SpringBoot工程 选择Spring Initializr 然后点击next 修改工程路径 jdk根据自己安装的具体的jdk版本进行选择 根据项目所需进行选择
  • 刷脸支付彻底解决顾客的支付安全更方便

    创业能成功 其中一项不为人知的关键就在于你无需热爱自己所做的事情 热情当然必需要有 但它可以是因为这个生意能赚钱 而不是对产品的热情 当然这是纯粹的生活选择 不过鉴于赚钱能给自己和他人带来的好处 我希望你发现光是能赚到钱就足以是一种热情 生
  • Unreal4引擎开发学习日志

    Unreal4引擎开发学习笔记1 相关说明 本游戏引擎学习日志是笔者根据网上相关教学视频所写 是对视频内容的精炼与总结 如果您认为笔者所写不清晰明确 可以访问以下链接 Unreal入门第一季 虚幻C 基础训练 虚幻4引擎介绍 虚幻4是一套为
  • 插件编写傻瓜教程>>VC6.0

    gt gt 写在前面本教程主要讲解如何用按键精灵自带的模版编写插件 请大家在教程没全部写完之前不要跟贴 谢谢合作 需要的工具 VC6 0 编辑语言 C gt gt 初步接触1 安装VC6 0 建议不要使用创天的汉化版 2 解压插件自带的模版
  • 软件定价:我们深谙其道吗?

    本文为翻译初稿 更多精彩内容 敬请关注 高效能程序员的修炼 人民邮电出版社 一段时间以来频繁光顾iPhone应用商店 以致于产生了个副作用 我开始从根本上改变了对软件定价的看法 这么多优秀的iPhone应用程序 要么是免费的 要么只卖区区几
  • 关于在windows使用msys2 + mingw + gcc/g++ 编译godot的笔记

    关于在windows使用msys2 mingw gcc g 编译godot的笔记 编译参数 1 target release debug release debug 2 多线程参数 j数字 3 profile是自定义构建参数 可以启用或者禁
  • python中找出numpy array数组的最值及其索引介绍

    转自 微点阅读 https www weidianyuedu com 在list列表中 max list 可以得到list的最大值 list index max list 可以得到最大值对应的索引 但在numpy中的array没有index
  • Echarts饼状图属性设置大全

    1 标题设置 title text 学生生源地来源分布图 subtext 模拟数据 x 设置水平安放位置 默认左对齐 可选值 center left right number x坐标 单位px x center y 设置垂直安放位置 默认全
  • FPGA--IP核之RAM

    RAM 的英文全称是 Random Access Memory 即随机存取存储器 它可以随时把数据写入任一指定地址的存储单元 也可以随时从任一指定地址中读出数据 其读写速度是由时钟频率决定的 RAM主要用来存放程序及程序执行过程中产生的中间
  • 深度学习理论总结(1)

    0 前言 为了在暑假能更好的发展自己 鉴于对深度学习的浓厚兴趣 楼主开始学习深度学习的相关知识 本系列内容是在楼主学习吴恩达老师的深度学习课程后进行的总结 使用的程序软件为python 如有纰漏还请各位大佬指出 我将虚心接受 1 深度学习概
  • Visual Studio Code常用插件详解

    文章目录 前言 VS Code必备插件 1 IntelliCode 2 IntelliCode API Usage Examples 3 Settings Sync 前端必备插件 1 Auto Close Tag 2 Auto Rename
  • USB移植(FLASH)

    USB移植 FLASH 一 说明 准备好USB源文件 可参考正点原子USB读卡器实验例程 下载正点原子资料或光盘资料 例程在 STSW STM32121 STM32 USB FS Device Lib V4 0 0 Projects Mas
  • UID卡、IC卡、ID卡、CUID 卡、FUID 卡、UFUID 卡 有什么区别?

    生活中 我们经常用到门禁卡 考勤卡 电梯卡还有停车卡 这些功能是怎么实现的呢 这是靠卡里封装的芯片和线圈来实现各种功能 不同的芯片频率 容量 读写性各不相同 常见的是IC卡还有ID卡 还有一种叫UID的卡 许多客户不了解UID卡是什么 有什
  • Mac:Split文件分割命令

    1 背景 在宁波银行工作 发现一个包太大传不了 因此要转成小文件 2 分割文件 split b 300m cheetah node v1 1 0 SNAPSHOT tgz cheetah node v1 1 0 SNAPSHOT tgz 那
  • elementUI的下拉框

    效果图 代码
  • [Obsidian]懒人必备插件附使用教程

    最近才知道了Obsidian 就使用Obsidian整理了一下笔记 评价是Obsidian确实是一种挺好的整理笔记的东西 主要就是想复习时候翻书其实挺麻烦 Obsidian提供了链接功能 可以比较好地查找到以前的知识 虽说笔记多了容易不太好
  • 用python实现神经网络

    一 BP神经网络 这里介绍目前常用的BP神经网络 其网络结构及数学模型如下 x为 n 维向量 y 为 n 维向量 隐含层有 q 个神经元 假设 N 有个样本数据 1 2 y t x t t 1 2 N 从输入层到隐含层的权重记为 1 2 1
  • 关于交换机端口的Trunk和Access模式的分析与验证

    1 理论简析 以太网交换机的通信是基于端口的通信 其端口类型分为Trunk port 干道端口 Access port 接入端口 Hybird port 混合端口 三种 Access port一般用于交换机和用户PC主机相连 连接用户主机和