03.《交换的底层逻辑:从基础到应用》

交换基础

文章目录

  • 交换基础
    • MAC 地址:设备的 “全球唯一身份证”
      • MAC 地址的基本属性
      • MAC 地址的三类类型(按通信范围划分)
    • 以太帧
      • 以太帧的两个标准格式
        • 1. Ethernet_II 格式(常用)
        • 2. IEEE 802.3 格式(少用)
      • 以太帧的长度要求
      • 数据帧的分类
    • 交换机的核心工作机制
      • 交换机的三个核心动作
      • MAC 地址表的生成与使用
        • 学习源 MAC 地址(建表)
        • 查询 MAC 地址表(查表)
        • 维护 MAC 地址表(老化)
      • 实验:通过 PC 间 ping 测试理解交换机转发
        • 实验环境
        • 实验流程
        • 操作步骤
          • 配置 PC1 的 IP 地址(以ENSP模拟器 PC 为例)
          • PC1 ping PC2(触发数据帧传输)
          • 查看交换机的 MAC 地址表
          • (可选)手动修改 MAC 地址表老化时间
    • 总结

在局域网中,交换机是连接终端设备(如电脑、打印机)的核心设备,它能高效转发数据,让不同设备之间实现通信。要理解交换机的工作原理,首先需要掌握两个关键概念: MAC 地址(设备的 “身份证”)和 以太帧(数据的 “包装盒”),再结合交换机的转发逻辑,就能清晰理解局域网内数据的传递过程。

MAC 地址:设备的 “全球唯一身份证”

MAC 地址又称 “物理地址” 或 “硬件地址”,是网卡出厂时固化的唯一标识 —— 就像每个人的身份证号,全球不会有两块网卡的 MAC 地址完全相同。

MAC 地址的基本属性

  1. 格式与长度
    • 长度:48 比特(bit),换算为 6 字节(Byte),用 16 进制表示(0-9、A-F)。
    • 书写格式:通常用 “-” 或 “:” 分隔,比如54-89-98-A0-56-5654:89:98:A0:56:56
  2. 地址结构
    • 前 24 比特(前 3 字节):OUI(厂商识别码),由国际组织分配给网卡厂商,比如54-89-98代表某一厂商。
    • 后 24 比特(后 3 字节):设备识别码,由厂商自行分配给每一块网卡,确保同厂商内不重复。

MAC 地址的三类类型(按通信范围划分)

MAC 地址分为单播、组播、广播三类,对应不同的 “通信场景”,核心区别在第 8 个比特(从左数第 2 个字符的第 1 位)。

类型核心特征通信场景(通俗理解)举例
单播 MAC 地址第 8 比特为 0(比如地址第 2 个字符是 0、2、4 等偶数,或 A、C、E 等)一对一通信(“点对点聊天”),比如 PC1 给 PC2 发文件00-1E-10-DD-DD-02(第 2 个字符是 0,第 8 比特为 0)
组播 MAC 地址第 8 比特为 1(比如地址第 2 个字符是 1、3、5 等奇数,或 B、D、F 等)一对多通信(“拉群聊”),比如给局域网内所有视频设备发直播流01-80-C2-00-00-01(第 2 个字符是 1,第 8 比特为 1)
广播 MAC 地址所有 48 比特全为 1,固定格式为FF-FF-FF-FF-FF-FF一对所有通信(“在大厅喊口号”),比如 PC1 查询局域网内的打印机FF-FF-FF-FF-FF-FF(所有字符都是 F,对应比特全为 1)

参考华为文档图例:

image-20250828203714735

以太帧

在数据链路层,数据不是 “裸奔” 传输的,而是会被包装成 “以太帧”(简称 “数据帧”)—— 就像寄快递时要把物品装进带地址的盒子,以太帧也包含 “收件地址”“寄件地址” 和 “包裹内容”。

以太帧的两个标准格式

目前主流的以太帧格式有两种:Ethernet_II(常用,比如我们日常上网、传文件用的就是这种)和 IEEE 802.3(多用于工业控制等特殊场景),两者的区别主要在 “中间字段”。参考华为文档图例:

image-20250828203813133

1. Ethernet_II 格式(常用)
字段长度作用(通俗理解)
D.MAC(目的 MAC 地址)6 字节收件地址:数据要发给哪个设备的网卡
S.MAC(源 MAC 地址)6 字节寄件地址:数据来自哪个设备的网卡
Type(类型字段)2 字节说明 “盒子里装的是什么类型的数据”,比如0800代表 IP 数据(日常上网数据)
用户数据46-1500 字节真正要传递的内容(比如微信消息、文件数据),最少 46 字节(不够会补零),最多 1500 字节
FCS(帧校验序列)4 字节校验数据是否损坏:接收方会计算校验值,若与 FCS 不一致,说明数据传丢了,会丢弃该帧
2. IEEE 802.3 格式(少用)

比 Ethernet_II 多了 “LLC” 和 “SNAP” 字段,用于兼容早期设备,核心字段作用类似:

字段长度作用
D.MAC6 字节目的 MAC 地址
S.MAC6 字节源 MAC 地址
Length(长度字段)2 字节说明 “用户数据的长度”(区别于 Ethernet_II 的 Type 字段)
LLC(逻辑链路控制)3 字节兼容早期局域网协议
SNAP(子网访问协议)5 字节包含 Org Code(3 字节,厂商码)和 Type(2 字节,数据类型),相当于把 Ethernet_II 的 Type 字段拆到这里
用户数据38-1492 字节核心数据(因多了 LLC 和 SNAP,比 Ethernet_II 少 8 字节)
FCS4 字节帧校验

以太帧的长度要求

无论哪种格式,整个以太帧的总长度必须在 64-1518 字节之间

  • 小于 64 字节:“短帧”,可能是干扰或错误数据,交换机会直接丢弃。
  • 大于 1518 字节:“长帧”,可能是异常数据包,交换机会同样丢弃。

数据帧的分类

和 MAC 地址对应,数据帧也分为三类,直接决定交换机的转发方式:

  1. 单播数据帧:目的 MAC 是单播地址(比如 PC1→PC2 的帧)。
  2. 组播数据帧:目的 MAC 是组播地址(比如给多台设备发直播的帧)。
  3. 广播数据帧:目的 MAC 是FF-FF-FF-FF-FF-FF(比如查询局域网设备的帧)。

交换机的核心工作机制

交换机的核心功能是 “高效转发数据帧”,它靠一张 “MAC 地址表” 实现 —— 这张表记录了 “MAC 地址→交换机接口→VLAN” 的对应关系,就像 “小区快递柜对照表”(哪个快递对应哪个柜子)。

交换机的三个核心动作

交换机收到数据帧后,会根据帧的类型和 MAC 地址表,执行三种动作之一:

动作适用场景通俗理解
单播转发已知单播数据帧(MAC 地址表中有目的 MAC 的对应接口)“精准投递”:根据地址表,把帧从对应接口发给目标设备,不打扰其他设备
泛洪1. 未知单播数据帧(地址表中没有目的 MAC) 2. 组播数据帧 3. 广播数据帧“群发找人”:除了接收帧的接口,把帧从所有其他接口发出去,直到目标设备响应
丢弃1. 帧长度小于 64 字节或大于 1518 字节 2. FCS 校验失败(数据损坏)“拒收垃圾”:直接扔掉无效或错误的帧,避免占用网络资源

MAC 地址表的生成与使用

默认情况下,交换机的 MAC 地址表是空的,它会通过 “学习→查表→转发→老化” 四个步骤,动态维护地址表并实现转发:

学习源 MAC 地址(建表)

当交换机收到一个数据帧时,首先会 “记住” 帧的源 MAC 地址和 “接收该帧的接口”,并把这对关系写入 MAC 地址表。

  • 例:PC1(MAC:54-89-98-A0-56-56)通过交换机的 GE0/0/1 接口发帧,交换机就会在地址表中添加一条记录:5489-98a0-5656 → GE0/0/1
查询 MAC 地址表(查表)

接着,交换机会查看帧的目的 MAC 地址,并在地址表中查找是否有对应的接口记录:

  • 若有记录(已知单播帧):执行 “单播转发”,从对应接口发出去。
  • 若没有记录(未知单播帧):执行 “泛洪”,从所有其他接口发出去。
维护 MAC 地址表(老化)

为了避免地址表过大(浪费设备资源),交换机对动态学习的 MAC 地址表项设置了 “老化时间”—— 默认 300 秒(5 分钟)。

  • 如果 5 分钟内,某条表项对应的设备没有再发数据,交换机会自动删除这条记录。
  • 若设备继续发数据,老化时间会 “重置”(重新从 5 分钟开始倒计时)。

实验:通过 PC 间 ping 测试理解交换机转发

通过实际操作,我们可以观察交换机如何学习 MAC 地址、生成地址表,以及如何转发数据帧。

实验环境

实验拓扑

image-20250828203937396

设备接口IP 地址MAC 地址
PC1Ethernet 0/0/110.1.1.1/2454-89-98-A0-56-56
PC2Ethernet 0/0/110.1.1.2/2454-89-98-C9-64-22
交换机(SW1)GE0/0/1(连 PC1)、GE0/0/2(连 PC2)无(二层交换机无需配置 IP)
实验流程
  1. 配置 PC1 和 PC2 的 IP 地址(静态配置,确保同网段)。
  2. 用 PC1 ping PC2,触发数据帧传输,让交换机学习 MAC 地址。
  3. 查看交换机的 MAC 地址表,验证表项是否生成。
  4. (可选)等待 5 分钟后,再次查看地址表,验证老化功能。
操作步骤
配置 PC1 的 IP 地址(以ENSP模拟器 PC 为例)
  1. 打开 PC1 的 “基础配置” 界面,选择 “IPv4 配置” 为 “静态”。
  2. 填写参数:
    • IP 地址:10.1.1.1
    • 子网掩码:255.255.255.0
    • 网关:0.0.0.0(同网段通信无需网关)
  3. 点击 “应用”,完成 PC1 配置。
  4. 重复上述步骤,配置 PC2 的 IP 为 10.1.1.2,子网掩码 255.255.255.0。如图:

PC1 ping PC2(触发数据帧传输)

在 PC1 的 “命令行” 界面输入 ping 命令,测试连通性:

PC1>ping 10.1.1.2  # 向PC2发送ping请求(ICMP协议数据包)
Ping 10.1.1.2: 32 data bytes, Press Ctrl_C to stop
Reply from 10.1.1.2: bytes=32 seq=1 ttl=128 time=1ms  # 收到PC2的回复,连通成功
Reply from 10.1.1.2: bytes=32 seq=2 ttl=128 time=1ms
  • 此时,PC1 和 PC2 之间会互发数据帧,交换机会自动学习两者的 MAC 地址。
查看交换机的 MAC 地址表

登录交换机(通过 Console 或远程登录),输入命令查看 MAC 地址表:

# 1. 进入交换机的用户视图(默认登录后就是用户视图)
<SW1># 2. 查看MAC地址表(命令:display mac-address,简写dis mac-address)
<SW1>display mac-address
MAC address table of slot 0:  # 插槽0的MAC地址表
-------------------------------------------------------------------------------
MAC Address       VLAN/VSI/SI   PEVLAN CEVLAN Port          Type      LSP/LSR-ID
-------------------------------------------------------------------------------
5489-98a0-5656    1             -      -      GE0/0/1       dynamic   -  # PC1的MAC,对应接口GE0/0/1,动态学习
5489-98c9-6422    1             -      -      GE0/0/2       dynamic   -  # PC2的MAC,对应接口GE0/0/2,动态学习
-------------------------------------------------------------------------------
Total matching items on slot 0 displayed = 2  # 共2条表项
  • 结果说明:交换机已通过 ping 测试,学习到 PC1 和 PC2 的 MAC 地址,并记录了对应的接口(GE0/0/1 和 GE0/0/2),类型为 “dynamic”(动态学习)。
(可选)手动修改 MAC 地址表老化时间

默认老化时间是 300 秒,若需修改(不推荐,除非特殊需求),可在交换机的系统视图中执行命令:

# 1. 进入系统视图
<SW1>system-view
[SW1]# 2. 修改老化时间(单位:秒,范围10-1000000,0表示不老化)
[SW1]mac-address aging-time 600  # 将老化时间改为600秒(10分钟)
[SW1]quit  # 退出系统视图# 3. 验证修改结果(查看系统配置)
<SW1>display current-configuration | include aging-time  # 查看老化时间配置
mac-address aging-time 600  # 确认已修改为600秒

总结

  1. MAC 地址:48 比特全球唯一,分单播(第 8 比特 0)、组播(第 8 比特 1)、广播(全 1)三类。

  2. 以太帧:数据链路层的传输单元,总长度 64-1518 字节,有 Ethernet_II 和 IEEE 802.3 两种格式。

  3. 交换机转发:靠 MAC 地址表工作,核心动作是 “单播转发(已知单播)、泛洪(未知单播 / 组播 / 广播)、丢弃(无效帧)”。
    总结

  4. MAC 地址:48 比特全球唯一,分单播(第 8 比特 0)、组播(第 8 比特 1)、广播(全 1)三类。

  5. 以太帧:数据链路层的传输单元,总长度 64-1518 字节,有 Ethernet_II 和 IEEE 802.3 两种格式。

  6. 交换机转发:靠 MAC 地址表工作,核心动作是 “单播转发(已知单播)、泛洪(未知单播 / 组播 / 广播)、丢弃(无效帧)”。

  7. MAC 地址表:动态学习源 MAC 生成,默认老化时间 300 秒,确保地址表精简高效。

如涉及版权问题,请联系作者处理!!!!

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

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

相关文章

火语言 RPA 界面应用生成:轻量化开发核心优势

火语言 RPA 界面应用生成功能&#xff0c;主打 “低门槛、快落地”&#xff0c;无需复杂开发环境与专业技术&#xff0c;就能快速实现需求验证与工具搭建&#xff0c;尤其适配中小团队与个人&#xff0c;核心优势如下&#xff1a;​一、1 小时搞定需求验证&#xff1a;3 步落地…

第三方软件测试机构【多语言开发(PHP/Java/Python)WEB 应用的安全专业测试流程】

PHP应用测试安全 文件包含漏洞&#xff1a;检测include/require函数参数未过滤场景&#xff08;如?page../../../etc/passwd&#xff09; 命令注入&#xff1a;检查system()/exec()函数输入验证&#xff08;如| cat /etc/passwd&#xff09; 会话安全&#xff1a;验证session …

C++条件变量学习

1、概述你知道条件变量"虚假唤醒"问题么&#xff0c;下面代码有问题么void CFileTaskThread::Run() {while (!m_bStop){CFileItemRequest* pFileItem;{std::unique_lock<std::mutex> guard(m_mtItems);if (m_Filelist.empty()){if (m_bStop)return;// 等待条件…

React Native系统组件(一)

1&#xff0c;View&#xff0c;UI的构建基石 四个方向&#xff0c;水平&#xff0c;水平倒序&#xff0c;垂直&#xff0c;垂直倒序 flexGrow与flex的区别&#xff0c;flexgrow是分父布局剩余的空间&#xff0c;flex是分父布局全部的空间上面的是flexgrow 123 下面的是flex 123…

Git 代码提交管理指南

目录 1. 初始设置&#xff08;首次使用 Git 时&#xff09; 2. 日常提交工作流程 场景一&#xff1a;已有本地项目&#xff0c;首次连接到远程仓库 场景二&#xff1a;已有远程仓库&#xff0c;克隆到本地 3. 更精细的文件管理 4. 提交信息规范 5. 分支管理策略 6. 高级…

go-mapus最简单的离线瓦片地图协作

基于leaflet.jsleaflet-geoman.jsgolangbeegogormsqlitewebsocket等实现一个最简单的地图协作。绘制图元&#xff0c;其他用户浏览器上实施显示绘制和修改结果&#xff0c;大家可同步进行绘制和修改。设置线型和颜色&#xff0c;粗细和透明度。保存到sqlite数据库。动画演示地图…

调式记录之八位机软件串口

现在在上班&#xff0c;做的项目几乎都是关于八位机的&#xff0c;八位机有个挺CD的点硬件资源少&#xff0c;打印之类的需要软件串口&#xff0c;有时候调的刚到很玄学&#xff0c;也有可能是我知识没有学得恨透。首先我得需要发送这句话并在代码里面设置我的延时时间&#xf…

嵌入式学习day40-硬件(1)

嵌入式&#xff1a;以应用为中心&#xff1a;消费电子(手机、蓝牙耳机、智能音响&#xff09;、医疗电子(心率脉搏、呼吸机&#xff09;、无人机&#xff08;大疆DJ&#xff09;、机器人&#xff08;人形四足机器人)计算机技术&#xff1a;计算机五大组成&#xff1a;运算器(数…

管理中心理学问:面试中教你识别他人需求动机

“我工作是为了钱&#xff0c;为了吃,住&#xff0c;和用钱买东西。”“我工作是为了地位和认可。”“我工作是为了有所归属&#xff0c;为了成为一个团体的成员。”“我工作是想高升。”“我工作是因为人应该工作&#xff0c;这是唯一的权利。”“我工作为了获取知识和认识世界…

【JavaScript】读取商品页面中的结构化数据(JSON-LD),在不改动服务端情况下,实现一对一跳转

前端实践&#xff1a;从商品页面读取 mpn 并实现一对一跳转 在实际开发中&#xff0c;我们经常会遇到这样一种需求&#xff1a; 用户浏览 A 网站的商品页面后&#xff0c;点击按钮能够直接跳转到 B 网站的对应商品。 表面看似只是一个按钮跳转&#xff0c;但如果不同商品需要精…

HTML5实现好看的邀请函网页源码

HTML5实现好看的邀请函网页源码 前言一、设计来源1.1 邀请函主页1.2 邀请函活动信息1.3 邀请函内容1.4 邀请函活动地址1.5 邀请函活动流程1.6 邀请函活动奖励1.7 邀请函联系我们 二、效果和源码2.1 动态效果2.2 源代码 结束语 HTML5实现好看的邀请函网页源码&#xff0c;酷炫的…

传输层TCP 与 安全层SSL/TLS

本章节主要探讨三个问题&#xff1a;1. SSL/TSL 的区别和联系是什么&#xff1f;2. 我们常说的 “三次握手” 发生在哪个阶段&#xff0c;SSL/TSL层有参与吗?3. HTTPS混合加密发生在哪个层?一、SSL 和 TLS 联系继承关系&#xff1a;TLS 直接基于 SSL 3.0 设计&#xff0c;可以…

【数学建模学习笔记】时间序列分析:ARIMA

零基础看懂 ARIMA 模型&#xff1a;从原理到实战如果你完全没接触过 “时间序列预测”&#xff0c;也不懂复杂公式&#xff0c;这篇会用 “说人话” 的方式帮你搞懂 ARIMA 模型&#xff0c;以及文中代码到底在做什么。一、先搞懂&#xff1a;ARIMA 是用来干嘛的&#xff1f;简单…

【macOS】垃圾箱中文件无法清理的“含特殊字符文件名”的方法

【macOS】垃圾箱中文件无法清理的“含特殊字符文件名”的方法文件名包含特殊字符&#xff08;如空格、中文符号等&#xff09;导致终端无法正确识别文件路径。 可以尝试以下解决方法&#xff1a;使用文件路径自动补全输入 rm &#xff08;注意 rm 后有空格&#xff09;&#xf…

​​​​​​​Blender 重拓扑修改器实战指南:从基础操作到细节优化​

在 Blender 建模中&#xff0c;重拓扑是解决 “高模难编辑、低模细节差” 的关键。传统手动重拓扑效率低&#xff0c;重拓扑修改器能自动生成规整拓扑&#xff0c;保留模型外形&#xff0c;适合游戏资产、动画角色等场景。 一、核心作用与适用场景​ 重拓扑修改器并非 “一键完…

C/C++哆啦A梦

写在前面 用代码绘制童年记忆中的那个蓝胖子——哆啦A梦&#xff0c;是我对经典角色的一次深情致敬。这段程序不仅是一幅静态图像的生成&#xff0c;更是一次对童年幻想世界的数字重建。通过精确的几何控制与色彩搭配&#xff0c;我将那个圆润可爱、温暖可靠的机器人重新带回眼…

CSS入门指南:30字掌握核心技巧

1. CSS初体验 1.1. CSS定义 层叠样式表 (Cascading Style Sheets&#xff0c;缩写为 CSS&#xff09; 用来描述 HTML 文档的呈现&#xff08;美化内容&#xff09; 1.2. CSS引入方式 内部样式表&#xff1a;学习使用 CSS 代码写在head里面的 style标签 里面 外部样式表&…

从实操到原理:一文搞懂 Docker、Tomcat 与 k8s 的关系(附踩坑指南 + 段子解疑)

目录 一、先分清&#xff1a;Docker、Tomcat、k8s 到底是 “干啥的”&#xff1f; 二、它们的 “合作关系”&#xff1a;从 Java 项目到集群部署的全流程 三、实际应用场景&#xff1a;什么时候该用谁&#xff1f; 1. 单独使用场景 2. 组合使用场景&#xff08;最常见&…

测试覆盖率不够高?这些技巧让你的FastAPI测试无懈可击!

url: /posts/0577d0e24f48b3153b510e74d3d1a822/ title: 测试覆盖率不够高?这些技巧让你的FastAPI测试无懈可击! date: 2025-09-02T01:49:10+08:00 lastmod: 2025-09-02T01:49:10+08:00 author: cmdragon summary: FastAPI通过TestClient工具支持单元测试,模拟HTTP请求直接…

Qwen3-Reranker-0.6B 模型结构

模型加载 import torch from modelscope import AutoModel, AutoTokenizer, AutoModelForCausalLMtokenizer AutoTokenizer.from_pretrained("Qwen/Qwen3-Reranker-0.6B", padding_sideleft) model AutoModelForCausalLM.from_pretrained("Qwen/Qwen3-Reranke…