数据链路层分析----交换机基本原理

目录

一、交换机基本原理

1、小型交换网络

2、交换机转发行为

二、交换机转发原理

1、MAC地址表

2、交换机初始状态

3、交换机学习MAC地址

 4、ARP协议

5、交换机转发数据帧

 6、目标主机回复


        常见的以太网设备包括Hub、交换机等。交换机工作在数据链路层,它有效地隔离了以太网中的冲突域,极大地提升了以太网的性能。
        随着企业网络的发展,越来越多的用户需要接入到网络,交换机提供的大量的接入端口能够很好地满足这种需求。同时,交换机也彻底解决了困扰早期以太网的冲突问题,极大地提升了以太网的性能,同时也提高了以太网的安全性。
        交换机工作在数据链路层,对数据帧进行操作。在收到数据帧后,交换机会根据数据帧的头部信息对数据帧进行转发。

一、交换机基本原理

1、小型交换网络

2、交换机转发行为

交换机对帧的转发操作行为一共有三种:
交换机转发行为说明
泛洪 (Flooding)
交换机把从某一端口进来的帧通过 所有其它的端口 转发出去。
转发 (Forwarding)
交换机把从某一端口进来的帧通过 另一个端口 转发出去。
丢弃 (Discarding)
交换机把从某一端口进来的帧直接丢弃。

二、交换机转发原理

1、MAC地址表

        交换机中有一个MAC 地址表,里面存放了MAC 地址与交换机端口的映射关系。MAC 地址表也称为CAM(Content Addressable Memory)表。
        MAC 地址表作为交换机转发数据的依据,其含义,可以理解为交换机中某一个端口的端口号与对端设备网卡的MAC 地址的对应关系。换句话说,一个数据帧想要去某一个MAC 地址,应该从交换机的哪一个端口走。

 MAC 地址表与转发行为的关系:

  • 如果进入交换机的是一个单播帧,则交换机会去自己的MAC 地址表中查找这个帧的目的MAC 地址。如果查不到这个MAC 地址,则交换机执行泛洪操作。如果查到了这个MAC 地址,则比较这个MAC 地址在MAC 地址表中对应的端口是不是这个帧进入交换机的那个端口。如果不是,则交换机执行转发操作。如果是,则交换机执行丢弃操作。
  •  如果进入交换机的是一个广播帧,则交换机不会去查MAC 地址表,而是直接执行泛洪操作。
  •  如果进入交换机的是一个组播帧,则交换机的处理行为比较复杂。
        交换机还具有学习能力。当一个帧进入交换机后,交换机会检查这个帧的源MAC 地址,并将该源MAC 地址与这个帧进入交换机的那个端口进行映射,然后将这个映射关系存放进MAC 地址表。

2、交换机初始状态

        初始状态下,交换机并不知道所连接主机的MAC 地址,所以MAC 地址表为空。下图中,SWA 为初始状态,在收到主机A 发送的数据帧之前,MAC地址表中没有任何表项。

 然而,交换机具有很好的学习能力。

3、交换机学习MAC地址

        交换机将收到的数据帧的源MAC 地址和对应接口记录到MAC 地址表中。如下图所示:
  1. 主机A 发送数据给主机C 时,一般会首先发送ARP 请求来获取主机C 的MAC 地址,此ARP 请求帧中的目的MAC 地址是广播地址,源MAC 地址是自己的MAC 地址。
  2. SWA 收到该帧后,会将帧中源MAC 地址和接收端口的映射关系添加到MAC 地址表中。此后,如果交换机收到目标MAC 地址为00-01-02-03-04-AA的数据帧时,都将通过G0/0/1 端口转发。
  3. 默认情况下,交换机学习到的MAC 地址表项的老化时间为300 秒。如果在老化时间内再次收到主机A 发送的数据帧,SWA 中保存的主机A 的MAC地址和G0/0/1 的映射的老化时间会被刷新。

 4、ARP协议

ARP(Address Resolution Protocol,地址解析协议 ),属于网络层。ARP 的作用,已知IP 地址解析MAC 地址。ARP 工作原理:
  • 首先发送ARP 广播,内容是我的IP 的多少,我的MAC 是多少。某一个IP,我想要与你通信,你的MAC 是多少,请告诉我。
  • 局域网(同一网段)内所有主机,都能收到ARP 广播。
  • 只有目标主机收到广播后,回应ARP 单播。
  • 当PC 收到ARP 单播回应后,在计算机中生成ARP 缓存表

5、交换机转发数据帧

        当目的MAC 地址为广播地址,或者数据帧的目的MAC 地址不在MAC 表中,交换机会泛洪该帧。
如下图所示: 主机A 发送的数据帧的目的MAC 地址为广播地址,所以交换机会将此数据帧通过G0/0/2 和G0/0/3 端口广播到主机B 和主机C。

 6、目标主机回复

        交换机根据MAC 地址表将目标主机的回复信息单播转发给源主机。
如下图所示:
  1. 主机B 和主机C 接收到此数据帧后,都会查看该ARP 数据帧。但是主机B 不会回复该帧,主机C 会处理该帧并发送ARP 回应,此回复数据帧的目的MAC 地址为主机A 的MAC 地址,源MAC 地址为主机C 的MAC 地址。
  2. SWA 收到ARP 回应数据帧时,会将该帧的源MAC 地址和接口的映射关系添加到MAC 地址表中。
  3. 如果此映射关系在MAC 地址表已经存在,则会被刷新。然后SWA 查询MAC 地址表,根据帧的目的MAC 地址找到对应的转发端口后,从G0/0/1 转发此数据帧。

 三、总结

具体来说,它有以下几个核心功能和解决问题的方向:

  1. 数据转发:交换机能够根据MAC地址表识别网络中的各个设备,并将收到的数据帧直接转发到目标设备,而非广播到所有端口。这提高了数据传输的效率和安全性。

  2. 冲突域隔离:在传统集线器(Hub)组成的网络中,所有设备共享同一个冲突域,导致数据传输速率下降。而交换机可以将每个端口划分成独立的冲突域,有效减少或避免了数据包碰撞的问题。

  3. 带宽优化:交换机为每个连接的设备提供了专用的带宽,使得不同设备之间的通信不会互相干扰,从而提升了整个网络的性能和可用带宽。

  4. VLAN支持:高级交换机还支持虚拟局域网(VLAN)技术,可以逻辑上将一个物理网络划分为多个子网,增强网络安全性和管理灵活性。

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

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

相关文章

三、Three.js模型对象、材质

一、三维向量Vector3与模型位置 点模型Points、线模型Line、网格网格模型Mesh等模型对象的父类都是Object3D,如果想对这些模型进行旋转、缩放、平移等操作,如何实现,可以查询Threejs文档Object3D对相关属性和方法的介绍 1、三维向量Vector3 …

2025.2.16机器学习笔记:TimeGan文献阅读

2025.2.9周报 一、文献阅读题目信息摘要Abstract创新点网络架构一、嵌入函数二、恢复函数三、序列生成器四、序列判别器损失函数 实验结论后续展望 一、文献阅读 题目信息 题目: Time-series Generative Adversarial Networks会议: Neural Information…

【第二节】C++设计模式(创建型模式)-抽象工厂模式

目录 引言 一、抽象工厂模式概述 二、抽象工厂模式的应用 三、抽象工厂模式的适用场景 四、抽象工厂模式的优缺点 五、总结 引言 抽象工厂设计模式是一种创建型设计模式,旨在解决一系列相互依赖对象的创建问题。它与工厂方法模式密切相关,但在应用…

微信小程序:多菜单栏设计效果

一、实现效果 二、代码 wxml 编辑前端界面,步骤 菜单逻辑: 逐步取出数组中的项,首先取出顶部菜单项,然后选中后取出选中的底部数据(左侧菜单+右侧内容),然后点击左侧菜单取出选中的左侧菜单对应的右侧内容 ①这里我的数据是全部封装到一个数组对象的,首先我的循环…

Memcached和redis对比了解

1.介绍 Memcached 是一个高性能、分布式的内存缓存系统,用于加速动态 Web 应用程序,减少数据库负载。它的核心功能是将数据存储在内存中,并通过基于键值对(Key-Value)的方式快速读取数据。 Redis 和 Memcached 选择建…

李沐详解图神经网络(GNN/GCN)

图 顶点可以用向量来表示,边也是,全局信息也是 把image表示成graph 把text表示成graph 一个词和下一个词之间有一条边 分子图 社交网络 空手道俱乐部 引用图(有向) 三大类问题 1.图层面的任务 识别环,对图进行分…

在PyCharm中运行Jupyter Notebook的.ipynb文件及其pycharm软件的基础使用

(注意需使用PyCharm专业版,学生、教师可以申请免费使用:https://www.jetbrains.com/shop/eform/students) 1. pycharm2024版汉化 https://blog.csdn.net/m0_74103046/article/details/144560999 2. pycharm中的python控制台和J…

【算法】----多重背包问题I,II(动态规划)

🌹作者:云小逸 📝个人主页:云小逸的主页 📝Github:云小逸的Github 🤟motto:要敢于一个人默默的面对自己,强大自己才是核心。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前…

前后端项目部署服务器(传统部署和Docker部署)

内外网 开发环境连外网(8.140.26.187),测试/生产环境连内网(172.20.59.17) 内外网地址不同,但指定的库是同一个 内网IP地址范围包括: 10.0.0.0 到 10.255.255.255172.16.0.0 到 172.31.2551…

【从0做项目】Java搜索引擎(7) web模块

阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 文章导读 零:项目结果展示 一:后端web模块 1:思路 2&#xff1a…

掌握.NET Core后端发布流程,如何部署后端应用?

无论你是刚接触.NET Core的新手还是已有经验的开发者,在这篇文章中你将会学习到一系列实用的发布技巧与最佳实践,帮助你高效顺利地将.NET Core后端应用部署到生产环境中 目录 程序发布操作 Docker容器注册表 文件夹发布 导入配置文件 网站运行操作 …

嵌入式工业级显示器在环保垃圾柜设备中发挥着至关重要的作用

嵌入式工业级显示器在环保垃圾柜设备中发挥着至关重要的作用。以下是其具体作用的分析: 一、提供交互界面 嵌入式工业级显示器为环保垃圾柜设备提供了一个直观、易用的交互界面。用户可以通过触摸屏幕进行操作,如选择垃圾分类类别、查看投放指南、查询…

Apifox 增强 AI 接口调试功能:自动合并 SSE 响应、展示DeepSeek思考过程

在API调试的世界里,效率和准确性往往决定了开发者的成败。你是否曾为处理SSE(Server-Sent Events)响应而烦恼?又是否期待在调试时能直观看到AI的“思考过程”?Apifox这次全新升级,将AI接口调试功能推向新高…

[python]windows上安装yolov12环境

yolov12出来了,地址github.com/sunsmarterjie/yolov12,咱们看看怎么在windows上把环境安装一下首先看看官方安装流程: wget https://github.com/Dao-AILab/flash-attention/releases/download/v2.7.3/flash_attn-2.7.3cu11torch2.2cxx11abiF…

前端知识点---vue的声明周期(vue)

文章目录 创建挂载更新销毁 vue的生命周期有四个阶段: 创建 挂载, 更新和销毁 创建 是vue组件从创建到准备渲染的过程 dom还没挂载到页面中 进行了初始化工作: 初始化数据(data,props) . 设置计算属性computed 初始化方法 methods 绑定事件watch 创建阶段的钩子函数beforeCrea…

装修流程图: 装修前准备 → 设计阶段 → 施工阶段 → 安装阶段 → 收尾阶段 → 入住

文章目录 引言I 毛坯房装修的全流程**1. 装修前准备****1.1 确定装修预算****1.2 选择装修方式****1.3 选择装修公司****1.4 办理装修手续****2. 设计阶段****2.1 量房****2.2 设计方案****2.3 确认方案****3. 施工阶段****3.1 主体拆改****3.2 水电改造****3.3 防水工程****3.…

智能马达保护器:为工业电机安全运行保驾护航

在工业生产中,电动机作为核心动力设备,其稳定运行直接关系到生产效率与安全性。然而,复杂的工况环境、频繁启停和突发负载变化,常导致电机面临过载、缺相、短路等故障风险。安科瑞智能马达保护器凭借其智能化、高精度、多功能的设…

Unity学习part4

1、ui界面的基础使用 ui可以在2d和矩形工具界面下操作,更方便,画布与游戏窗口的比例一般默认相同 如图所示,图片在画布上显示的位置和在游戏窗口上显示的位置是相同的 渲染模式:屏幕空间--覆盖,指画布覆盖在游戏物体渲…

雷龙CS SD NAND(贴片式TF卡)测评体验

声明:非广告,为用户体验文章 前段时间偶然获得了雷龙出品的贴片式 TF 卡芯片及转接板,到手的是两片贴片式 nand 芯片搭配一个转接板,其中有一片官方已经焊接好了,从外观来看,正面和背面设计布局合理&#x…

tailwindcss学习01

系列教程 01 入门 02 vue中接入 03 工具类优先 入门 # 注意使用cmd不要powershell npm init -y # 如果没有npx则安装 npm install -g npx npm install -D tailwindcss3.4.17 --registry http://registry.npm.taobao.org npx tailwindcss init修改tailwind.config.js /** ty…