交换机对数据帧的处理规则

2023-05-16

一、概述
以太网交换机对二层帧的转发处理比较复杂,很多同事都不是很清楚。本文将对此问题进行总结,并通过实验进行验证。

二、交换机基本概念
在了解交换机转发规则之前,我们先理解交换机的一些概念,如access、trunk、hybrid和PVID等,这些概念将会经常用到。

  1. access
    以太网交换机的端口有三种链路类型:access、trunk和hybrid。
    access是“接近、进入”的意思。access类型的端口只能属于1个VLAN,从access口出来的数据帧不带VLAN标签,一般用于连接计算机。
  2. trunk
    “trunk”是“干线、树干”的意思。trunk类型的端口可以属于多个VLAN,可以接收和发送多个VLAN的数据帧,一般用于交换机之间的连接。
    trunk端口用来在不同的交换机之间进行互联,以保证在跨越多个交换机上建立的同一个VLAN的成员能够相互通信。与一般的交换机的级联不同,trunk是基于OSI第二层的。
    假如没有trunk技术,我们在两个交换机上分别划分了多个VLAN,那么交换机上相同VLAN的成员如果要互通,就需要在每个VLAN上各取1个端口作级联连接。如果交换机上划了10个VLAN,就需要10条级连线,端口效率太低了。
    当交换机支持trunk技术时,就比较简单了,只需要在两个交换机之间有一条级联线,并将对应的端口设置为trunk,这条线路就可以承载交换机上所有VLAN的信息。
    这样的话,就算交换机上设置了4094个VLAN,也仅需要1个端口就足够了。
  3. hybrid
    “hybrid”是“混合的”的意思。hybrid口同时兼有access口和trunk口的特点。hybrid类型的端口可以属于多个VLAN,可以接收和发送多个VLAN帧,可以用于交换机之间连接,也可以用于连接用户的计算机。
    hybrid端口可以根据需要,设置某些VLAN帧从hybrid口出去时带VLAN标签,某些VLAN帧不带VLAN标签。
  4. PVID
    在VLAN技术中,PVID是端口的一个重要概念。我们先来理解PVID的含义。
    “PVID”是“Port VLAN ID”的缩写,是“端口缺省VLAN ID”的意思,即一个端口缺省属于的VLAN。
    PVID的作用是:当一个数据帧进入交换机端口时,如果没有带VLAN标签,且该端口上配置了PVID,那么,该数据帧就会被打上端口的PVID。如果进入的帧已经带有VLAN标签,那么交换机不会再增加VLAN标签,即使端口已经配置了PVID。

三、交换机端口接收数据帧的处理规则
首先,我们要明白交换机的一点原理:
为了快速高效处理,交换机内部的数据帧一律都带有VLAN标签,以统一方式处理。

当交换机从端口收到二层数据帧时:

  1. Access端口
    (1)收到一个二层帧
    (2)判断是否有VLAN标签:没有则转到第3步,有则转到第4步
    (3)打上端口的PVID,并进行交换转发
    (4)若VLAN标签和PVID一致,转发VLAN帧;否则丢弃

  2. trunk端口
    (1)收到一个二层帧
    (2)判断是否有VLAN标签:没有则转到第3步,有则转到第4步
    (3)打上端口的PVID,并进行交换转发
    (4)判断该trunk端口是否允许该VLAN帧进入:允许则转发,否则丢弃
    (注意:trunk口允许或不允许VLAN帧,是对进入的帧而言的,对出去的帧没有限制。)

  3. hybrid端口
    (1)收到一个二层帧
    (2)判断是否有VLAN标签:没有则转到第3步,有则转到第4步
    (3)打上端口的PVID,并进行交换转发
    (4)判断该hybrid端口是否允许该VLAN帧进入:允许则转发,否则丢弃

    可以看到,trunk口和hybrid口对接收到的数据帧的处理规则是一样的。

四、交换机端口转发数据帧的处理规则
当交换机把数据帧转发出端口时:

  1. Access端口
    (1)将二层帧的VLAN标签剥离,直接发送出去

  2. trunk端口
    (1)比较端口的PVID和将要发送二层帧的VLAN标签
    (2)如果两者相等则转到第3步,否则转到第4步
    (3)剥离VLAN标签,再发送
    (4)直接发送

  3. hybrid端口
    (1)判断VLAN在本端口的属性。用“dis interface”可看到该端口对哪些VLAN是untag,哪些VLAN是tag
    (2)如果是untag则转到第3步,如果是tag则转到第4步
    (3)剥离VLAN标签,再发送
    (4)直接发送

    说明:
    (1)Hybrid口中允许的VLAN分为untag和tag两类,untag和tag是对出去的帧而言的,对进入的帧没有限制
    (2)例如:“Untagged VLAN ID : 2,3”表示VLAN 2和VLAN 3的帧,从本hybrid口发送出去时,将被剥离VLAN标签
    (3)例如:“tagged VLAN ID : 4,5”表示VLAN 4和VLAN 5的帧,从本hybrid口发送出去时,不剥离VLAN标签,直接发送

五、交换机转发数据帧的一个浅显比喻
以上介绍的交换机对数据帧的处理原则,比较枯燥,也不容易理解。我们用一个浅显的例子来比喻一下,以形象地理解。

  1. 旅客进入候机室
    我们把交换机比作机场的候机室,所有不同航班的旅客(相当于不同VLAN的数据帧)都通过候机室进行“转发”。旅客可能会从四面八方、从不同的“入口”进入候机室,“入口”会有所不同(相当于端口有access、trunk和hybrid类型)。
    不同航班的旅客,手里拿的机票会不一样(相当于打了不同VLAN标签的数据帧)。候机室的有些入口,如access入口,是有检票功能的。当旅客拿有机票进入时,会检查机票和本access入口通往的航班(相当于缺省PVID)是否一致。一致则让旅客进入;不一致,则拒绝旅客进入(直接丢弃)。就像到海南的机票,却在北京入口处检票一样,当然不让旅客进入了。如果旅客没有机票,则access入口会让他买本航班的机票(打上本端口的PVID)。
    如果候机室的入口是trunk入口,也就是说这个入口是公共的入口,那么,持不同航班机票(相当于不同VLAN标签)的旅客可以带着机票进入。当然,如果trunk入口不允许某些航班不在此入口进入,则会把这些航班的旅客拦住的(直接丢弃)。如果允许,则让这些允许的航班的旅客带着机票,从trunk入口进入。当然,如果旅客没有机票,入口处会让你买票的(打上端口的PVID)。
    如果候机室的入口是hybrid类型的,其情形和trunk类型时是一样的。
  2. 旅客走出候机室
    现在,我们已经知道,在候机室(交换机)内部,所有旅客都是带有机票的了(交换机内部的所有数据帧都带有VLAN标签,以方便统一处理)。在候机室内部,旅客们怎么知道各自该往哪里走呢?
    旅客们抬头一看,发现了一块巨大的电子公告牌,上面显示着某某航班从哪个出口登机,登机时间是什么,等等(这个电子公告牌对应的是交换机内部的MAC表。MAC表指明了目的MAC地址和到达此目的MAC地址的出口的对应关系。登机时间可理解为MAC表项的老化时间)。所以,旅客们就知道各自要怎么找到出口了。
    如果出口是access出口,那么,出口通往的就是飞机了(对应地,access口一般接的是计算机)。access出口会把旅客的机票收下来(剥掉VLAN标签),把旅客送到飞机上(对应地,是access出口剥去VLAN标签,把VLAN帧变成标准的以太网帧,发送给计算机)。
    如果出口是trunk出口,那么,这个trunk出口连接的是另外一个候机室。如果旅客的机票与trunk出口的默认航班(端口缺省PVID)一致,他就知道:我的航班的出口是这个trunk出口,所以,trunk出口会把旅客的机票没收下来(剥掉VLAN标签),旅客也就可以放心地出去了。
    如果机票与trunk出口的默认航班(缺省PVID)不一致,他就知道,我的航班不在本trunk出口,是在后面出口检票,所以trunk出口会让旅客带着机票出去(相当于把VLAN帧透传出去)。
    如果出口是hybrid口,它兼有access出口和trunk出口的特点,即某些航班的旅客可以在hybrid出口处检票后登机,某些航班的旅客可以带着机票走向另外的入口。当hybrid出口设置了对某些航班进行检票(untagged)时,它就相当于access出口的功能,收下旅客的机票(剥离VLAN标签),再把旅客送出去。当hybrid出口设置了对某些航班不进行检票(tagged)时,旅客可以带着机票走出去,这时候hybrid出口又相当trunk出口。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

交换机对数据帧的处理规则 的相关文章

  • 音乐播放器的一些思路

  • Arduino笔记实验(初级阶段)—Keypad小键盘

    Arduino笔记实验 初级阶段 Keypad小键盘 文章目录 Arduino笔记实验 初级阶段 Keypad小键盘前言一 电路图二 集成库方案 Keypad 三方集成库代码实验效果展示 三 基于Arduino原生方案4 4按键膜结构图代码
  • Arduino笔记实验(初级阶段)—火焰传感器+有源蜂鸣器实验

    Arduino笔记实验 初级阶段 火焰传感器 43 有源蜂鸣器实验 文章目录 Arduino笔记实验 初级阶段 火焰传感器 43 有源蜂鸣器实验前言一 电路图二 火焰传感器 4引脚 有源蜂鸣器代码实验效果展示 三 火焰传感器火焰传感器模块示
  • Arduino笔记实验(初级阶段)—DHT11温湿度传感器

    Arduino笔记实验 初级阶段 DHT11温湿度传感器 文章目录 Arduino笔记实验 初级阶段 DHT11温湿度传感器前言一 电路图二 DHT11温湿度传感器实验代码实验效果展示 三 DHT11温湿度传感器实验总结 前言 自学笔记 x
  • C语言笔记-26-网络-UDP网络编程

    C语言笔记 26 网络 UDP网络编程 文章目录 C语言笔记 26 网络 UDP网络编程前言一 UDP编程模型概括三 UDP编程模型代码UDP服务端UDP客户端 总结 前言 自学笔记 xff0c 没有历史知识铺垫 xff08 省略百度部分
  • C++笔记-6-c++静态与单例

    C 43 43 笔记 6 c 43 43 静态与单例 文章目录 C 43 43 笔记 6 c 43 43 静态与单例前言一 静态静态成员变量静态成员函数 二 单例饿汉式懒汉式 总结 前言 自学笔记 xff0c 没有历史知识铺垫 xff08
  • C++笔记-4-c++类与继承

    C 43 43 笔记 4 c 43 43 类与继承 文章目录 C 43 43 笔记 4 c 43 43 类与继承前言一 类 Class 构造 析构函数拷贝构造和拷贝赋值 二 继承总结 前言 自学笔记 xff0c 没有历史知识铺垫 xff08
  • C++笔记-5-c++成员变量、函数指针

    C 43 43 笔记 5 c 43 43 成员变量 函数指针 文章目录 C 43 43 笔记 5 c 43 43 成员变量 函数指针前言一 成员变量指针二 成员函数指针总结 前言 自学笔记 xff0c 没有历史知识铺垫 xff08 省略百度
  • Qt实现的计算器

    写在前边 xff1a 这篇文章只是来带着大家一起实现一个基于Qt的计算器 中间会出现很多概念 xff0c 我们不做拓展介绍 xff0c 大家只要知道怎么用就好 xff0c 如果有需要我们后续再详细的对每个模块解析 1 首先介绍一下Qt xf
  • 【vue-element-admin笔记】

    vue element admin项目 xff08 1 xff09 一 使用步骤1 引入库2 出现问题 总结 一 使用步骤 1 引入库 代码如下 xff08 示例 xff09 xff1a git clone https span class
  • 无人机从零到一(组装、校准到起飞)

    一 组装 xff08 螺旋桨可以最后装 xff09 机械结构配置 xff1a 名称型号飞控Pixhawk 2 4 8 xff08 带安全开关 xff0c 蜂鸣器 xff0c 还买了减震板 xff09 螺旋桨8045 ABS xff08 33
  • C++11的多线程线程参数传递,指针与引用

    void foo std this thread sleep for std chrono seconds 1 int main std thread t std cout lt lt 34 before starting joinable
  • 学习(二):I2C、SPI、UART、CAN的特点与区别

    官网教程链接 xff1a https ardupilot org dev docs code overview sensor drivers html I2C 一个主机 xff0c 允许多个从机一种相对简单的通信协议 xff0c 适合短距离
  • C++ Qt 两字节相加(和)的校验位

    函数名称 xff1a checkSum 函数功能 xff1a 校验位 帧头 43 数据段按2字节累加和 若数据段个数为奇数 xff0c 则累加和时在数据段后方补1个字节0x00 函数参数 xff1a QByteArray 帧头 43 数据段
  • 考研复习C++基础问答题(六)

    1 C 43 43 中存储类有哪些 xff1f 存储类定义 C 43 43 程序中变量 函数的范围 xff08 可见性 xff09 和生命周期 这些说明符放置在它们所修饰的类型之前 下面列出 C 43 43 程序中可用的存储类 xff1a
  • STM32CubeMX编辑规范(02)

    STM32CubeMX编辑规范 目录 STM32CubeMX编辑规范前言一 代码编写范围二 项目结构三 单独外设配置四 代码生成设置五 高级设置 前言 采用STM32CubeMX的编辑规范可以更好的在不同的芯片上移植 xff0c 修改外设可
  • 机器人局部避障的动态窗口法DWA (dynamic window approach)-matlab代码修改及动态障碍物避障效果

    具体效果视频 xff1a DWA动态障碍物 哔哩哔哩 https b23 tv pQp6ne 一 源码及问题 最初的源码链接https blog csdn net heyijia0327 article details 44983551 改
  • QQ可以用十六进制登录哦

    又到装逼 时刻了 平常人登QQ是这样的 xff1a 如果我告诉你 xff1a 还可以这样登录 xff0c 你信吗 xff1f 显然我成功了 xff0c 你呢 xff1f 想知道如何快速把QQ号转换为十六进制吗 xff1f 评论里告诉你 xf
  • Keil C51详细安装教程(最新版)

    Keil C51 0x00 说在前面0x01 资源获取0x02 软件安装0x03 还有一步 xff08 重要 xff09 0x04 小问题 0x00 说在前面 x1f4e2 Keil 5常用的分两个版本 xff0c C51和MDK C51用

随机推荐

  • Java学习之JavaWeb篇

    图床路径 Kuang JavaWeb Java Web 1 基本概念 web开发 web xff0c 网页的意思 xff0c www baidu com静态web html xff0c css提供给所有人看的数据 xff0c 始终不会变化
  • Typora自动上传图片到Gitee图床

    Typora自动上传图片到Gitee图床 序言 思路 Gitee作为免费的图床 xff0c Typora作为最好用的blog博客笔记软件 xff0c 通过PicGo软件配置将Typora中的图片自动保存到Gitee图床 xff0c 获得云端
  • 关于百度OCR和EasyOCR的研究记录

    现行方案 xff1a 迅捷OCR软件 采用迅捷OCR文字识别软件 xff0c 购买了一年的期限 操作需要使用pyautogui来操作软件进行操作 xff0c 现在也可以使用USB鼠键模块KM3来真实模拟鼠标键盘的操作 xff0c 可信度更高
  • qt打开项目,只有pro文件其它文件消失:-1: error: msvc-version.conf loaded but QMAKE_MSC_VER isn‘t set

    之前在电脑打开开发的项目 xff0c 突然今天打开突然只有pro文件其它文件消失了 xff0c 在文件管理器里面找也都还有 打开项目只剩下蓝色框里面的 网上查了一些资料 xff0c 发现是开发程序事qt的版本不同所导致 解决方法 点开项目
  • 表格中重复项设置一级和二级序号排序

    摘要 xff1a 一级分类存在重复项 xff0c 需要排序 xff0c 二级分类也存在重复项 xff0c 也需要排序 xff0c 相同一级分类中的二级分类需要重新从一开始排序 xff08 重点和难点 xff09 先来看看效果 xff1a 公
  • 动态数码管显示实验

    文章目录 摘要实验器件简介实验原理硬件电路图硬件电路连线实验代码实验结果思考以及注意事项实验视频教程资源分享 摘要 本实验采用了普中科技的51单片机开发板 本实验以静态数码管显示实验为基础 https blog csdn net weixi
  • C51中intrins_h头文件解释分析

    文章目录 摘要源代码说明举个栗子 摘要 这是关于C51中使用循环移位等函数的头文件定义的分析 源代码 span class token comment INTRINS H Intrinsic functions for C51 Copyri
  • 喜马拉雅音频下载+x2m文件转换

    文章目录 摘要软件免费音频VIP音频 摘要 一款关于喜马拉雅音频的小神器 x2m格式转换为m4a格式 批量下载操作 软件 绿色免费的小工具ximalaya downloader amp x2m decoder xff0c 当然是在电脑上运行
  • http报错:405 (METHOD NOT ALLOWED)

    使用post请求ajax数据时 xff0c 报错 xff1a 405 METHOD NOT ALLOWED 将post请求改为get请求
  • Http怎么解决粘包拆包的?

    发送端 xff1a 应用层协议的每个包到达传输层 xff0c 如果是tcp xff0c 会可能出现以下情况 1 应用层的每个包被拆成多个tcp报文 xff0c 分别发送 xff0c 这是拆包 xff1b 2 应用层的多个包组成一个tcp报文
  • ROS TCP通信

    Reference https blog csdn net deyuzhi article details 51725074 https blog csdn net weixin 43795921 article details 85307
  • Ubuntu+ROS安装及rosdep init失败解决办法

    1 安装Ubuntu16 04 18 04 xff08 1 xff09 双系统硬盘安装 xff1a 参考双硬盘Window10与Ubuntu16 04 18 04安装 脚踩香蕉皮的博客 CSDN博客 Ubuntu 18 04 xff1a 链
  • c++ 编译 报错 未定义的引用

    遇到的问题有两种情况 一个是static没初始化 一个是模板类实现和定义分开写 这里主要记录一下模板类实现和定义分开写报错的问题 xff08 都放在 h文件中就不会报错 xff09 自己尝试用 传统 方法 xff0c 及在 h文件里声明 在
  • JNI基础语法

    一 Java和JNI类型对照 1 1 基本类型对照表 Java类型Native类型C C 43 43 类型大小Booleanjbooleanunsigned char无符号8位Bytejbytechar有符号8位Charjcharunsig
  • STL源码剖析 笔记之三 迭代器

    第三章 迭代器概念与traits编程技法 Design Patterns 中提供有23个设计模式的完整描述 迭代器模式定义如下 xff0c 提供一种方法 xff0c 使之能够依序巡防某个聚合物 容器 所含的各个元素 xff0c 而又无需暴露
  • 带复杂命令启停功能的二自由度自动进样器

    给8051发送 34 Start E 34 后 系统开始工作 发送 34 Stop E 34 后 系统停止工作 与之前以串口中断为主线的控制逻辑不同 这里以定时器0中断为主线 其实也就是以系统序列动作为主线 并提高了串口中断的优先级 以实时
  • Python温度转换实例

    我的第一个程序 xff1a TempCovert py TemStr 61 input 34 请输入带有符号的温度值 xff1a 34 if TemStr 1 in 39 F 39 39 f 39 C 61 eval TemStr 0 1
  • 不同数据类型所占字节

    一 32位处理器 xff1a char xff1a 1个字节 char p xff1a 4个字节 int xff1a 4个字节 unsigned int xff1a 4个字节 double xff1a 8个字节 short xff1a 2个
  • 浏览器中输入www.baidu.com后发生了什么

    一道经典的面试题 xff1a 你输入网址后到页面显示出来 xff0c 中间发生了什么 xff1f 第一步 浏览器查找该域名的 IP 地址 第二步 浏览器根据解析得到的IP地址向 web 服务器发送一个 HTTP 请求 第三步 服务器收到请求
  • 交换机对数据帧的处理规则

    一 概述 以太网交换机对二层帧的转发处理比较复杂 xff0c 很多同事都不是很清楚 本文将对此问题进行总结 xff0c 并通过实验进行验证 二 交换机基本概念 在了解交换机转发规则之前 xff0c 我们先理解交换机的一些概念 xff0c 如