当前位置: 首页 > news >正文

以太网交换机工作原理学习笔记

在网络中传输数据时需要遵循一些标准,以太网协议定义了数据帧在以太网上的传输标准,了解以太网协议是充分理解数据链路层通信的基础。以太网交换机是实现数据链路层通信的主要设备,了解以太网交换机的工作原理也是十分必要的。

1、以太网协议介绍

1.1以太网协议

以太网是当今现有局域网(Local Area Network, LAN)采用的最通用的通信协议标准,该标准定义了在局域网中采用的电缆类型和信号处理方法。

以太网是建立在CSMA/CD (Carrier Sense Multiple Access/Collision Detection,载波监听多路访问/冲突检测)机制上的广播型网络

1.2冲突域

冲突域是指连接在同一共享介质上的所有节点的集合,冲突域内所有节点竞争同一带宽,一个节点发出的报文(无论是单播、组播、广播),其余节点都可以收到。

在传统的以太网中,同一介质上的多个节点共享链路带宽,争用链路的使用权,这样就会发生冲突。

同一介质上的节点越多,冲突发生的概率越大。

交换机不同的接口发送和接收数据独立,各接口属于不同的冲突域,因此有效地隔离了网络中物理层冲突域,使得通过它互连的主机(或网络)之间不必再担心流量大小对于数据发送冲突的影响。

1.3广播域

广播报文所能到达的整个访问范围称为二层广播域,简称广播域,同一广播域内的主机都能收到广播报文。

在传统的以太网中,同一介质上的多个节点共享链路,一台设备发出的广播报文,所有设备均会收到。

交换机对广播报文会向所有的接口都转发,所以交换机的所有接口连接的节点属于一个广播域。

1.4以太网帧格式

以太网技术所使用的帧称为以太网帧 (Ethernet Frame),或简称以太帧。

以太帧的格式有两个标准:Ethernet_II格式和IEEE 802.3格式。

2、以太网交换机原理简介

2.1园区网典型架构

2.2以太网二层交换机

以太网二层交换机转发数据的端口都是以太网口,并且只能够针对数据的二层头部 (以太网数据帧头) 中的MAC地址进行寻址并转发数据。

2.3交换机的工作原理

2.4MAC地址表

每台交换机中都有一个MAC地址表,存放了MAC地址与交换机端口编号之间的映射关系。

2.5交换机的3种数据帧处理行为

交换机对于从传输介质进入某一端口的帧的处理行为一共有3种:

2.5.1泛洪

2.5.2转发

2.5.3丢弃

2.6交换机的MAC地址学习

(1)初始情况,交换机的MAC 地址表是空的。

(2)主机1发送数据帧给主机2。交换机GE0/0/1口接收到数据帧后,在MAC地址表中查询该帧的目的MAC地址,发现没有对应表项,则收到的数据帧是“未知单播帧”。

(3)交换机在MAC地址表中没有查到对应表项,则交换机对该单播帧执行泛洪操作。同时,交换机学习该数据帧的源MAC地址,并创建对应的MAC地址表项,与接收口GE0/0/1关联。

(4)交换机其他端口连接的主机,也会收到该数据帧,但是会丢弃。 主机2收到并处理该数据帧,向主机 1回复,将数据帧发往交换机。

(5)交换机在MAC地址表中查到了对应表项,则交换机对该单播帧执行转发操作,将数据帧从GE0/0/1口转发出去。同时,交换机学习该数据帧的源MAC地址,并创建对应的MAC地址表项,与接收口GE0/0/2关联。

2.7交换机常见问题思考与关键知识

2.7.1常见问题

(1)交换机接口down后,相应MAC地址表项如何变化?

对应接口学习到的MAC地址会在MAC地址表现中消失;

如在SW2上对G0/0/1口进行shutdown;

Shutdown之前:

Shutdown之后:

(2)同一个Vlan中,PC 从交换机A端口迁移到B端口,交换机MAC地址表项如何变化?

在SW2的角度来看,原本是从G0/0/3接口学习到PC2的MAC,当PC接到SW2的G0/0/4号接口时,不会立刻发生改变,除非MAC地址表学习到PC2的MAC地址时间老化,PC2对外进行通信,那么SW2学习到PC2的MAC接口就会发生改变,变为G0/0/4。

(3)MAC地址表的老化时间是多少?为什么需要老化时间?

对于华为的设备默认是300秒。(查看命令display mac-address aging-time)

修改MAC地址老化时间命令:mac-address aging-time XXX

一般不建议进行修改。

为什么需要老化时间?

原因是使设备能够高效的进行工作运行。如果不老化,内存空间越来越小,设备性能就会降低。

(4)如何设置“黑洞”MAC?

通过命令mac-address blackhole 5489-98EA-0A02 vlan X进行设置。

PC1就无法进入到SW2去访问PC3

(5)交换机的一个接口可以学习多个MAC地址吗?

可以的,例如SW2的G0/0/3口,既可以学习到PC1的MAC,又可以学习到PC2的MAC。

(6)交换机的MAC地址表项可以无限增加吗?

不可以,设备的内存空间有限。

display mac-address summary 当前设备可以存放32768条。

(7)交换机和集线器有什么区别?

交换机:采用存储转发原理工作,具有自动过滤和学习功能。当交换机接收到数据包时,会先将其存储在内部缓存中,然后检查数据包的MAC地址,并根据地址表将数据包转发到正确的端口。这种机制可以有效减少网络冲突,提高数据传输效率。

集线器:则采用广播原理工作。当集线器接收到数据包时,会将其广播到所有连接的端口上,无论目标设备是否在该端口上。这种机制容易导致网络冲突和性能下降,特别是在设备数量较多的情况下。

(8)交换机有NAT功能吗?

大部分是没有的,传统的交换机不具备NAT功能,但多层交换机或集成服务路由器等复合型网络设备可以支持NAT功能。不能说完全没有。

(9)所有交换机的端口都可以切换成路由口吗?

不是所有交换机的端口都可以切换成路由口。不排除一些高级交换机可以切换成路由口。

2.7.2关键知识

(1)交换机基于目标mac 转发数据。

(2)交换机的MAC地址表项需要报文触发才可以构建。

(3)交换机的MAC地址表是交换机转发数据“地图”。

(4)交换机MAC地址表中存放:mac地址和端口映射

(5)泛洪:① 未知单播泛洪  ② 广播泛洪

(6)交换机根据接收报文的源mac地址来构建自己的MAC地址表项

3、同网段数据通信全过程

场景描述:

▫ 任务:主机1想要访问主机2

▫ 主机:初始化状态

▫ 交换机:刚上电,初始化状态

当主机1去访问主机2,在建立ICMP通信之前,首先从主机1发送ARP请求,去广播请求学习,192.168.1.2的MAC在哪,当它找到192.168.1.2的位置后,通过IP地址学习MAC,接着单播返回给192.168.1.1,解析192.168.1.2的MAC是0050-5600-0002,报文信息完善之后,ICMP就建立了。

在主机1的E0/0/1接口进行抓包:

同网段数据通信的全过程相对简单,主要发生在同一局域网(LAN)内,不涉及路由器的路由决策。以下是该过程的简要描述:

(1)源主机阶段

封装数据包:源主机(如PC1)将要发送的数据封装成IP数据包,数据包中包含源IP地址、目标IP地址以及具体的数据内容。由于是同网段通信,源主机和目标主机的IP地址将位于相同的子网内。

ARP请求:源主机检查其ARP缓存,以查看是否已知目标主机(如PC2)的MAC地址。如果不知道,源主机会向本地网络发送一个ARP(地址解析协议)请求广播,询问目标IP地址对应的MAC地址。

接收ARP响应:网络中的设备(包括目标主机)会监听ARP请求。如果目标主机接收到请求,并且IP地址匹配,它会向源主机发送一个ARP响应,其中包含其MAC地址。

封装数据帧:一旦源主机获得目标主机的MAC地址,它就将IP数据包封装成以太网数据帧。数据帧的源MAC地址是源主机的MAC地址,目标MAC地址是目标主机的MAC地址。

(2)交换机转发阶段

接收数据帧:交换机接收到源主机发送的数据帧后,会读取数据帧的目标MAC地址。

查找MAC地址表:交换机在其MAC地址表中查找与目标MAC地址相匹配的条目。由于这是同网段通信,交换机通常会在其MAC地址表中找到对应的条目,该条目指定了数据帧应该被转发到的端口。

转发数据帧:交换机将数据帧转发到与目标MAC地址相关联的端口。由于目标主机和源主机位于同一网段,因此数据帧通常会直接到达目标主机,而无需经过其他网络设备。

(3)目标主机接收阶段

接收数据帧:目标主机通过其网络接口接收到数据帧。

解封装:目标主机解封装数据帧,以提取IP数据包。

处理数据:目标主机根据IP数据包中的目标IP地址确认数据包是发给自己的,然后进一步处理数据包中的数据。

整个过程主要涉及到ARP协议用于解析MAC地址,以及交换机根据MAC地址表进行数据帧的转发。由于源主机和目标主机位于同一网段,因此不需要路由器的参与,数据帧可以直接在局域网内传输。

4、跨网段数据通信全过程

场景描述:

▫ 任务:主机1想要访问主机2

▫ 主机:初始化状态

▫ 交换机:刚上电,初始化状态

(1)源主机阶段

封装数据包:源主机(如PC1)将要发送的数据封装成数据包,数据包中包含源IP地址、目标IP地址以及具体的数据内容。

判断网段:源主机通过比较本地IP地址、子网掩码和目标IP地址,判断目标主机(如PC2)是否在同一网段内。如果不在同一网段,则需要进行跨网段通信。

发送数据:源主机将数据包封装成数据帧,其中目的MAC地址设置为网关(通常是路由器的一个接口)的MAC地址,然后通过物理介质(如以太网)发送给交换机。

(2)交换机转发阶段

接收与转发:交换机接收到数据帧后,根据目的MAC地址查找MAC地址表,确定数据帧的转发端口。由于目的MAC地址是网关的MAC地址,交换机将数据帧转发给网关(路由器)。

(3)路由器转发阶段

解封装与解析:路由器接收到数据帧后,首先解封装得到IP数据包。然后,路由器解析IP数据包中的目标IP地址,查找路由表以确定下一跳地址。

重新封装与转发:路由器根据路由表中的下一跳地址,通过ARP协议获取下一跳设备的MAC地址。然后,路由器将IP数据包重新封装成新的数据帧,其中源MAC地址是路由器自身的MAC地址,目标MAC地址是下一跳设备的MAC地址。之后,路由器将新封装的数据帧发送给下一跳设备。

(4)多次转发(可能)

如果目标主机与源主机之间相隔多个网段,数据包可能需要经过多个路由器的转发。在每个路由器上,都会重复上述的解封装、解析、重新封装和转发的过程,直到数据包到达目标网段的网关。

(5)目标网段网关转发阶段

解封装与识别:目标网段的网关(可能也是路由器)接收到数据包后,解封装得到IP数据包,并识别出目标IP地址属于本网段内的某台主机(如PC2)。

ARP请求(可选):如果网关没有目标主机(PC2)的MAC地址,可能会发送ARP请求到本网段内,以获取目标主机的MAC地址。

封装与发送:网关获取到目标主机的MAC地址后,将IP数据包封装成数据帧,其中目的MAC地址为目标主机的MAC地址,然后通过物理介质发送给目标主机。

(6)目标主机接收阶段

接收与处理:目标主机接收到数据帧后,解封装得到IP数据包。然后,目标主机根据IP数据包中的目标IP地址判断是否是自己的数据包。如果是,则进一步处理数据包中的数据;如果不是,则可能将数据包丢弃或转发给同一网段内的其他主机。

通过以上步骤,跨网段数据通信得以实现,使得不同网段内的设备能够相互通信。

相关文章:

以太网交换机工作原理学习笔记

在网络中传输数据时需要遵循一些标准,以太网协议定义了数据帧在以太网上的传输标准,了解以太网协议是充分理解数据链路层通信的基础。以太网交换机是实现数据链路层通信的主要设备,了解以太网交换机的工作原理也是十分必要的。 1、以太网协议…...

ECCV`24 | 蚂蚁集团开源风格控制新SOTA!StyleTokenizer:零样本精确控制图像生成

文章链接:https://arxiv.org/pdf/2409.02543 代码&数据集链接: https://github.com/alipay/style-tokenizer 亮点直击 介绍了一种名为StyleTokenizer的新方法,用于在扩散模型中进行风格控制。这种方法允许通过一个任意参考图像实现对生成…...

Flutter的升级和降级步骤

升级 1.版本升级 // 升级到指定版本 flutter upgrade 版本号 // 升级到最新版本 flutter upgrade 2. 更新开发配置 启动 Android Studio。 打开 Settings 对话框,查看 SDK Manager。 如果你已经打开了一个项目,请打开 Tools > SDK Manager。 如果…...

计算机网络与Internet应用

一、计算机网络 1.计算机网络的定义 网络定义:计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享…...

[建模已更新]2024数学建模国赛高教社杯A题:“板凳龙” 闹元宵 思路代码文章助攻手把手保姆级

本系列专栏将包括两大块内容 第一块赛前真题和模型教学,包括至少8次真题实战教学,每期教学专栏的最底部会提供完整的资料百度网盘包括:真题、数据、可复现代码以及文章. 第二块包括赛中详细思路建模、代码的参考助攻, 会提供2024年高教社国赛A的全套参考内容(一般36h内更新完毕…...

Spring Boot-自定义banner

在 Spring Boot 应用中,你可以自定义启动时显示的 banner。这些 banner 可以包括图形、文字或者其他形式的标识。如图所示: 1. 使用 banner.txt 文件 默认情况下,Spring Boot 使用项目的 banner.txt 文件中的内容作为启动时的 banner。你可以…...

2158. 直播获奖(live)

代码 #include<bits/stdc.h> using namespace std; int main() {int n,w,a[100000],cnt[601]{0},i,j,s;cin>>n>>w;for(i0;i<n;i){scanf("%d",&a[i]);cnt[a[i]];int x(i1)*w/100;if(!x) x1;for(j600,s0;j>0;j--){scnt[j];if(s>x){cou…...

python---爬取QQ音乐

如Cookie为非vip&#xff0c;仅能获取非vip歌曲 1.下载包 pip install jsonpath 2.代码 import os import time import requests from jsonpath import jsonpathdef search_and_download_qq_music(query_text):headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; …...

tomato靶场攻略

1.使用nmap扫描同网段的端口&#xff0c;发现靶机地址 2.访问到主页面&#xff0c;只能看到一个大西红柿 3.再来使用dirb扫面以下有那些目录&#xff0c;发现有一个antibot_image 4.访问我们扫到的地址 &#xff0c;点金目录里看看有些什么文件 5.看到info.php很熟悉&#xff0…...

Django+Vue3前后端分离学习(一)(项目开始时settings.py里的设置)

一、创建django项目 二、修改settings.py里的配置&#xff1a; 1、修改语言和时区&#xff1a; # 语言编码 LANGUAGE_CODE zh-hansTIME_ZONE UTCUSE_I18N True# 不用时区 USE_TZ False 2、配置数据库&#xff1a; DATABASES {default: {ENGINE: django.db.backends.m…...

一些数学经验总结——关于将原一元二次函数增加一些限制条件后最优结果的对比(主要针对公平关切相关的建模)

1.没有分段的情况 原函数为一元二次凹函数&#xff08;开口向下&#xff09;&#xff0c;如下&#xff1a; 因为要使得其存在正解&#xff0c;必须满足&#xff0c;那么。 上述函数的最优结果为&#xff1a;&#xff0c;。 对应的mathematica代码如下&#xff1a; Clear[&q…...

C++ | Leetcode C++题解之第394题字符串解码

题目&#xff1a; 题解&#xff1a; class Solution { public:string src; size_t ptr;int getDigits() {int ret 0;while (ptr < src.size() && isdigit(src[ptr])) {ret ret * 10 src[ptr] - 0;}return ret;}string getString() {if (ptr src.size() || src[…...

getLocation:fail, the permission value is offline verifying

getLocation:fail, the permission value is offline verifying 后端会根据appid和secret生成 签名&#xff0c;前端wx配置时一定用appid来验证签名的正确 本次错误为配置初始化失败&#xff1a;前端与后端的appId不一致&#xff0c;我的失误也...

【数据分享】《中国城市统计年鉴》(1985-2023)全PDF版本 第一次补档

数据介绍 中国城市&#xff0c;如同一本生动的历史书&#xff0c;承载着经济、社会的快速变迁。《中国城市统计年鉴》记录了城市的发展轨迹&#xff0c;是我们理解城市化进程、洞察城市挑战的重要指南。 这份年鉴的数据庞大而详实&#xff0c;囊括了中国城市发展的多个方面。…...

什么是LED智能会议一体机?COB超微小间距LED会议一体机大势所趋

LED智能会议一体机&#xff0c;作为现代会议室革新的核心装备&#xff0c;正逐步颠覆传统会议模式的界限。它不仅仅是一台集成了高清显示、触控互动、音视频处理及远程协作等功能于一体的智能设备&#xff0c;更是推动会议效率与体验双重飞跃的关键力量。随着技术的不断进步&am…...

两种在wordpress网站首页调用woocommerce产品的方法

要在WordPress网站首页调用WooCommerce产品&#xff0c;您可以使用以下方法&#xff1a; 方法1&#xff1a;使用WooCommerce Shortcode WooCommerce提供了一个内置的shortcode&#xff0c;可以直接在WordPress页面或帖子中插入产品。要在首页显示指定数量的产品&#xff0c;请…...

新一代交互模式:LUICUIVUI

随着技术的发展&#xff0c;特别是人工智能和机器学习的进步&#xff0c;交互方式也在不断演变。以下是一些新概念&#xff0c;它们描述了当下和未来可能的交互方式&#xff1a; Conversational UI (CUI)&#xff1a; 以对话为基础的用户界面&#xff0c;用户通过自然语言与系统…...

chapter06 面向对象基础 知识点Note

文章目录 前言类的设计 属性和行为对象的内存解析 &#xff08;堆 栈 方法区&#xff09;类的成员之一 变量(属性) field类的成员之二 方法 method对象数组方法重载 overload可变个数的形参 语法糖方法的值传递机制递归关键字package importMVC设计模式import导入面向对象特征之…...

【Nginx系列】Nginx中rewrite模块

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

codesys进行控制虚拟轴运动时出现的一些奇怪bug的解释

codesys进行控制虚拟轴运动时出现的一些奇怪bug的解释 问题描述第一个奇怪的bug&#xff1a;新建的工程没有SoftMotion General Axis Pool选项第二个奇怪的bug&#xff1a;在新建工程SoftMotion General Axis Pool选项时&#xff0c;无法手动添加第三个奇怪的bug&#xff1a;虚…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中&#xff0c;附加包含目录、附加库目录和附加依赖项是三个至关重要的设置&#xff0c;它们相互配合&#xff0c;确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中&#xff0c;这些概念容易让人混淆&#xff0c;但深入理解它们的作用和联…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统&#xff0c;它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间&#xff0c;使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的&#xff0c;要在 …...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...