11.以太网交换机工作原理
目录
- 一、以太网协议
- 二、以太网交换机原理
- 三、交换机常见问题思考
- 四、同网段数据通信全过程
- 五、跨网段数据通信全过程
- 六、关键知识
- 七、调试命令
前言:在网络中传输数据时需要遵循一些标准,以太网协议定义了数据帧在以太网上的传输标准,了解以太网协议是充分理解数据链路层通信的基础。以太网交换机是实现数据链路层通信的主要设备,了解以太网交换机的工作原理也是十分必要的。
一、以太网协议
-
以太网是当今现有局域网(Local Area Network, LAN)采用的最通用的通信协议标准,该标准定义了在局域网中采用的电缆类型和信号处理方法。
-
以太网是建立在CSMA/CD (Carrier Sense Multiple Access/Collision Detection,载波监听多路访问/冲突检测)机制上的广播型网络。
早期使用集线器(HUB)组网现在使用交换机组网。

-
冲突域
冲突域是指连接在同一共享介质上的所有节点的集合,冲突域内所有节点竞争同一带宽,一个节点发出的报文(无论是单播、组播、广播),其余节点都可以收到。早期以太网(HUB组网):① 在传统的以太网中,同一介质上的多个节点共享链路带宽,争用链路的使用权,这样就会发生冲突。② 同一介质上的节点越多,冲突发生的概率越大。③ 解决机制:CSMA/CD(带有冲突检测的载波侦听多路存取):所有节点都共享网络传输信道,节点在发送数据之前,首先检测信道是否空闲,如果信道空闲则发送,否则就等待;在发送出信息后,再对冲突进行检测,当发现冲突时,则取消发送。交换机以太网(现在用的):① 隔离冲突域,每个接口相当于1个独立的冲突域。② 交换机不同的接口发送和接收数据独立,各接口属于不同的冲突域,因此有效地隔离了网络中物理层冲突域,使得通过它互连的主机(或网络)之间不必再担心流量大小对于数据发送冲突的影响。

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

-
以太网帧格式
以太网技术所使用的帧称为以太网帧 (Ethernet Frame),或简称以太帧。以太帧的格式有两个标准:Ethernet_II格式和IEEE 802.3格式。※ Ethernet_Ⅱ最常用※ thernet_II和IEEE 802.3帧前面两个字段都是D.MAC与S.MAC,交换机只会拆到这,所以交换机不知道接收到的帧具体是哪个格式的。

二、以太网交换机原理
-
典型的园区网架构
出口层(通常为路由器):连接公网核心层(通常是三层交换机):负责用户的数据交换汇聚层(通常是三层交换机):把用户的数据汇聚起来转发给核心层接入层(通常是二层交换机):用于把用户接进来(扩展接口的)

-
以太网二层交换机
以太网二层交换机转发数据的端口都是以太网口,并且只能够针对数据的二层头部 (以太网数据帧头) 中的MAC地址进行寻址并转发数据。 -
交换机的工作原理
交换机在接收到任意类型的数据帧时,首先是学习并生成MAC表项(数据帧源MAC地址与入端口对应关系),如果该项已经存在,会更新其老化时间(华为大部分设备默认是300秒),然后将该数据帧从对应的端口转发出去;如果没有该项,则会将其泛洪(转发给所有端口);

-
MAC地址表
每台交换机中都有一个MAC地址表,存放了MAC地址与交换机端口编号之间的映射关系。华为大部分设备默认地址表项老化时间是300秒。

-
交换机的3种数据帧处理行为
交换机对于从传输介质进入某一端口的帧的处理行为一共有3种:泛洪、转发与丢弃。

-
泛洪
如图所示

-
转发
如图所示

-
丢弃
交换机接收到数据帧,发现其目的MAC地址对应的接口,是其来方向的入接口时,会将其丢弃(找错交换机了)。

-
交换机MAC地址学习
交换机只有在报文经过时才能学习并构建相应的mac表项。交换机接收到报文的第一步是学习mac地址,然后才是其他操作。
第一步:

第二步:

第三步:

第四步:

第五步:

三、交换机常见问题思考
-
交换机接口down后,相应MAC地址表项如何变化?
对应接口的MAC地址表项会消失。 -
同一个Vlan中,PC 从交换机A端口迁移到B端口,交换机MAC地址表项如何变化 ?
会进行变迁到新的接口下。 -
MAC地址表的老化时间是多少?为什么需要老化时间?
华为大部分设备默认是300秒,新报文经过会刷新老化时间重新计算;为了高效的利用设备的资源,不要太多的mac地址条目。 -
如何设置“黑洞”MAC?
交换机系统模式下:mac-address blackhole 5489-98EA-0A02 vlan 1 黑洞mac -
交换机的一个接口可以学习多个MAC地址吗?
可以的(因为一个接口下可能连接了其他交换机,其他交换机下也有很多设备) -
交换机的MAC地址表项可以无限增加吗?
不可以,大交换机的较多,中小型交换机的较少。 -
交换机和集线器有和区别?
集线器所有的接口都在一个冲突域下,交换机的每一个接口都是一个独立的冲突域;集线器对于任何报文都是群发,共享链路带宽。集线器:老设备、只会翻红、共享链路带宽。 -
交换机有NAT功能吗?
大部分交换机都没有nat功能(三层交换机和路由器的功能不是完全一样) -
所有交换机的端口都可以切换成路由口吗?
不是,部分交换机的端口可以(高端交换机,比如华为-H系列)
四、同网段数据通信全过程

过程如下:① 主机1不知道主机2的mac地址,arp广播② 交换机收到arp广播,学习主机1的mac地址,泛洪arp③ 主机2接收到arp广播,将主机1的mac与ip写入自己的arp缓存表④ 主机2发送单播给主机1,包含自己的mac与ip⑤ 主机1收到主机2的mac与ip,将其写入arp缓存表,随后封装icmp报文发送给主机2,开始正式访问⑥ 交换机收到icmp,不知道目的(主机2),将其泛洪⑦ 主机2收到icmp后,回包给主机1⑧ 交换机收到主机2的icmp回包时,将主机2的mac地址与其入端口一起写道mac地址表中,随后查找表,发现自己有主机1的mac地址后,将其从GE0/0/1转发。⑨ 主机1接收到主机2的回包,访问结束。
五、跨网段数据通信全过程

过程如下:① 主机1访问主机2的ip地址,发现和自己不是一个网段,将其送给R1(网关路由器)② 但是主机1不知道R1的mac地址,arp③ 交换机收到主机1的arp广播,学习主机1mac地址,泛洪arp④ r1收到arp包,将主机1的mac与ip写入arp表,回给主机1单薄(携带r1的ip与mac)⑤ 交换机收到r1发送的单播,学习r1的mac,查找mac将其转发给主机1⑥ 主机1收到后r1回的单播报文,将r1的ip与mac写入arp表,随后封装icmp报文(目的主机2,mac是R1)⑦ 交换机收到icmp,查找mac地址表,发给R1⑧ R1收到icmp报文后,查看目的IP地址(是主机2),查找路由表,发出去⑨ 到达对端⑩ r1不知道主机2的mac地址,arp,⑪ 交换机收到arp,学习R1的mac地址生成表项,随后泛洪⑫ 主机2收到arp,将R1的ip与mac写到自己的arp表,随后发送单播(携带主机2的ip与mac)给R1交换机收到主机2的单播,学习主机2的mac,发给R1⑭ R1收到单薄,把主机2的ip与mac写入arp表。随后发送icmp包。交换机收到icmp,查找mac地址表,转发给主机2⑯ 主机2收到icmp,回报给主机1,因为跨网段,所以发给网关R1※ 注意:主机1和主机2的网关是R1路由器的两个不同的接口。⑰ 交换机收到icmp,查找mac表,发给R1⑱ R1收到icmp,查找路由表,发给主机1,⑲ 交换机收到icmp,查找mac表,发给主机1⑳ 主机1收到回包,访问结束。
六、关键知识
-
交换机基于目标mac 转发数据。
-
交换机的MAC地址表项需要报文触发才可以构建。
-
交换机的MAC地址表是交换机转发数据“地图”。
-
交换机MAC地址表中存放:mac地址和端口映射
-
泛洪:① 未知单播泛洪 ② 广播泛洪
-
交换机根据接收报文的源mac地址来构建自己的MAC地址表项。
七、调试命令
- dis mac-address 查看mac地址表
- dis mac-address summary 查看mac地址表概述
- dis mac-address aging-time 查看mac地址表老化时间
- mac-address aging-time 305 修改mac地址表的老化时间
- mac-address blackhole 5489-98EA-0A02 vlan 1 黑洞mac
- undo mac-address all 清空mac地址表
- dis arp 查看arp
- reset arp all 清空arp
相关文章:
11.以太网交换机工作原理
目录 一、以太网协议二、以太网交换机原理三、交换机常见问题思考四、同网段数据通信全过程五、跨网段数据通信全过程六、关键知识七、调试命令 前言:在网络中传输数据时需要遵循一些标准,以太网协议定义了数据帧在以太网上的传输标准,了解以…...
【通信基础知识】完整通信系统的流程图及各模块功能详解
2024.2.29 抱歉最近在写毕设大论文,因此没有太多时间更新。然而,在写论文的过程中,发现自己对通信系统的了解还不够全明白,因此差了一些硕博论文总结了一个完整的通信系统流程图。若有不对的地方请多多指正//部分内容有参考ChatGP…...
k8s-项目测试环境部署
部署规划 概述 项目开发好后,我们需要部署,我们接下来就基于 阿里云云效 阿里云容器镜像服务 k8s 搭建部署环境 阿里云云效 : 放代码,可以做cicd(https://www.aliyun.com/product/yunxiao) 阿里云容器镜像服务 :…...
【Elasticsearch管理】缓存机制
文章目录 缓存Field data cache(字段数据缓存)Node query cache(节点查询缓存)Indexing buffer(索引缓冲区)Shard request cache(分片请求缓存)缓存失败启用/禁用缓存根据请求启用/禁…...
JS api基础初学
轮播图随机版 需求:当我们刷新页面,页面中的轮播图会显示不同图片以及样式 分析:①:准备一个数组对象,里面包含详细信息(素材包含) ②:随机选择一个数字,选出数组对应…...
uniapp实战:父子组件传参之子组件数量动态变化
需求说明 现有的设置单元列表,每个带有虚线加号的可以看做是一组设置单元,点击加号可以添加一组设置单元.点击设置单元右上角可以删除对应的设置单元. 实现思路说明 利用数组元素添加或是删除的方式实现页面数量动态变化.由于每个设置单元内容都相同所以单独封装了一个子组件.…...
Ubuntu绑定USB接口到固定端口
绑定端口 打开终端,输入以下命令查看USB端口信息: udevadm info -a -n /dev/ttyUSB0执行后,可以看到部分输出如下: 找到第一个,a-b:c格式的KERNELS,记住这个值,后面会用到。 linlin-B660M-D2H-DDR4:~$ u…...
解决gogs勾选“使用选定的文件和模板初始化仓库”报错500,gogs邮件发送失败,gogs邮件配置不生效,gogs自定义模板等问题
解决gogs勾选“使用选定的文件和模板初始化仓库”报错500,gogs邮件发送失败,gogs邮件配置不生效,gogs自定义模板等问题 前几天出了教程本地部署gogs,在后期运行时发现两个问题: 第一:邮件明明配置了,后台显示未配置,…...
数字后端——DEF文件格式
文章目录 MACRO的不同orientationDEF中在macro orientation定义前需要留空格 MACRO的不同orientation DEF中在macro orientation定义前需要留空格 像下图中这种方向和分号之间没有空格的情况,就是有问题的格式。...
【可做课设、附完整技术文档】流式、异步、实时的Django聊天室!(需进一步定制可联系本人)
介绍 完整源码以及完整项目文档请看源码链接。 此Django项目实现了一个精致易扩展的实时聊天室,可直接作为网页开发的课程设计提交,也可二次开发,比如添加更好看的样式,或者更多更酷炫的功能。 实现了如下功能: 流…...
网络编程:基于TCP和UDP的服务器、客户端
1.基于TCP通信服务器 程序代码: 1 #include<myhead.h>2 #define SER_IP "192.168.126.121"//服务器IP3 #define SER_PORT 8888//服务器端口号4 int main(int argc, const char *argv[])5 {6 //1.创建用于监听的套接字7 int sfd-1;8 sf…...
kubectl 命令行管理K8S(上)
目录 陈述式资源管理方式 介绍 命令 项目的生命周期 创建 kubectl create命令 发布 kubectl expose命令 更新 kubectl set 回滚 kubectl rollout 删除 kubectl delete 应用发布策略 金丝雀发布 陈述式资源管理方式 介绍 1.kubernetes 集群管理集群资源…...
Redis 之四:Redis 事务和乐观锁
事务特点 Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证: 批量操作在发送 EXEC 命令前被放入队列缓存。 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。不具备原子性。 在事务执…...
C# WPF编程-创建项目
1.创建新项目 选择“WPF应用程序”》“下一步” 设置项目 设置项目名称,保存位置等参数>下一步 3.选择框架 4.项目创建成功 5.运行项目...
密码学及其应用(应用篇15)——0/1背包问题
1 问题背景 背包问题是一个经典的优化问题,在计算机科学和运筹学中有着广泛的应用。具体到你提到的这个问题,它是背包问题中的一个特例,通常被称为0/1背包问题。这里,我们有一系列的正整数 ,以及一个正整数,…...
基于springboot+vue的实验室管理系统(前后端分离)
博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 主要内容:毕业设计(Javaweb项目|小程序|Pyt…...
华为OD技术面试案例5-2024年
背景 985本计算机专业,目标院校。 1.15 投递 在某BOSS上投递的简历,HR人很nice,非常负责任。 1.19 收到机试通知 第一题是一个哈夫曼编码,第三题是一个动态规划,机试整体难度不算高,刷leetcode hot100…...
【QT+QGIS跨平台编译】之五十五:【QGIS_CORE跨平台编译】—【qgsmeshcalcparser.cpp生成】
文章目录 一、Bison二、生成来源三、构建过程一、Bison GNU Bison 是一个通用的解析器生成器,它可以将注释的无上下文语法转换为使用 LALR (1) 解析表的确定性 LR 或广义 LR (GLR) 解析器。Bison 还可以生成 IELR (1) 或规范 LR (1) 解析表。一旦您熟练使用 Bison,您可以使用…...
Unity(第二十部)效果 粒子、线条和拖尾
1、粒子系统 粒子系统介绍 Unity 粒子系统是 Unity 引擎中用于创建和控制粒子效果的工具。它可以模拟各种自然现象,如火焰、烟雾、雨滴等,也可以用于创建特效,如魔法光芒、爆炸效果等。 粒子系统组成 在 Unity 中,粒子系统由发射…...
全量知识系统问题及SmartChat给出的答复 之6 三套工具之1
Q15. 提出想法和问题 前面说过,DDD在我要设计的全量知识系统中位于中间层,是专门用来解决“知识汤”问题的。 解决的思路就是以将为在特定领域中的公司经营提供一个责任-权限平面为目的,帮助他们调整商业模式以及组建恰当的组织,…...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
uniapp手机号一键登录保姆级教程(包含前端和后端)
目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...
