《计算机网络微课堂》3-10 以太网交换机的生成树协议 STP

我们介绍以太网交换机生成树协议的基本概念。

请大家思考一下,应该如何提高以太网的可靠性呢?例如如图所示的以太网,由三台交换机互联而成,每个交换机上都连接有一些主机,为了简单起见,我们只画出了每个交换机上连接的一台主机,如果交换机 A 与 B 之间的链路出现了故障,则交换机 B 上连接的所有主机,既无法与交换机 A 上连接的所有主机进行通信,也无法与交换机 C 上连接的所有主机进行通信。

如果交换机 A 与交换机 B 和 C 之间的链路都出现了故障,则原来的以太网变成了三个独立的较小的以太网,他们之间无法通信。相信很多同学已经想到了,可以通过添加冗余链路的方法来提高以太网的可靠性。

例如在本例中,我们给交换机 B 和 C 之间添加一条冗余链路后,即使交换机 A 和 B 之间的链路出现了故障,整个网络还是联通的,但是冗余链路也会带来负面效应,那就是形成网络环路。如图所示,网络环路会带来一些问题。例如广播风暴,我们来举例说明,假设主机 H1 发送了一个广播帧,交换机 B 收到该帧号,将其从自己的其他所有接口转发出去,交换机 A 收到交换机 B 转发来的该帧后,将其从自己的其他所有接口转发出去。

同样的交换机 C 收到交换机 B 转发来的该证号,将其从自己的其他所有接口转发出去;交换机 C 收到交换机 A 转发来的该帧后,将其从自己的其他所有接口转发出去。

同样的,交换机 A 收到交换机 C 转发来的该帧后,将其从自己的其他所有接口转发出去。交换机 B 收到交换机 C 转发来的该帧后,将其从自己的其他所有接口转发出去。

同样的,交换机 B 收到交换机 A 转发来的盖章后,将其从自己的其他所有接口转发出去。

很显然该广播帧将在各交换机之间反复转发,分别按顺时针和逆时针方向同时兜圈,这就是所谓的广播风暴,广播风暴会大量消耗网络资源,使得网络无法正常转发其他数据帧,也会使主机反复收到广播帧,大量消耗主机资源,还会使交换机的帧交换表震荡(漂移),如图所示,这是交换机 B 的帧交换表,这是其各接口的接口号。为了简单起见,假设各主机的名称也可作为其 MAC 地址,当交换机 B 收到主机 H1 发送的广播帧后进行登记工作,将帧的源 MAC 地址 H1 和帧进入交换机 B 的接口号 1 登记到帧交换表中,这条记录是正确的。

当交换机 B 再次收到交换机 C 转发来的该广播帧后进行登记工作,将帧的源 MAC 地址 H1 和帧进入交换机 B 的接口号 2,这条错误记录登记到帧交换表中,并删除原先正确的记录。

当交换机 B 再次收到交换机 A 转发来的该广播帧号进行登记工作,将帧的源 MAC 地址 H1 和帧进入交换机 B 的接口号 3,这条错误记录登记到帧交换表中,并删除原先错误的记录。

当交换机 B 再次收到交换机 C 转发来的该广播帧后进行登记工作,将帧的源 MAC 地址 H1 和帧进入交换机 B 的接口号 2,这条错误记录登记到帧交换表中,并删除原先错误的记录。很显然有关 MAC 地址 H1 的记录将在这两个错误记录之间反复震荡。


为了可以在增加冗余链路来提高网络可靠性的同时,又避免网络环路带来的各种问题。以太网交换机使用生成树协议,其英文缩写词为 STP 不论交换机之间采用怎样的物理连接,使用生成树协议的交换机都能够自动计算,并构建出一个逻辑上没有环路的网络,其逻辑拓扑结构必须是树形的,也就是没有逻辑环路。

我们来举例说明,如图所示,为了提高可靠性,5 台交换机之间进行了冗余连接,冗余链路不止一条,网络环路也不止一个。为了简单起见,各交换机上连接的主机没有画出。我们用绿色的小圆圈表示交换机的接口状态为正常状态,用橙色的小方块表示交换机的接口状态为阻塞状态,用红色的叉表示出现了故障,如果各交换机的各接口都处于正常状态,则会存在多个网络环路。实际上各交换机之间按照生成树协议中规定的生成树算法,交互一些参数后,就可以判断出自己应该阻塞自己的哪些接口。例如图中所示,这样就会形成一个逻辑上没有环路的网络,如图所示。

当然这个逻辑上没有环路的网络,一定要确保联通整个网络,否则就没有意义了。当首次连接交换机或网络物理拓扑发生变化时,这有可能是人为改变造成的,也有可能是出现故障造成的,交换机都将进行生成树的重新计算。例如假设这段链路出现了故障,相关交换机检测到该故障后,重新计算生成树,决定将自己之前阻塞的接口恢复为正常状态,这样就会形成一个新的逻辑上没有环路的网络。

需要说明的是,生成树协议所使用的生成树算法,以超出本系列课程的教学大纲,对生成树算法感兴趣的同学,可以参看我们的另一个系列课程,计算机网络简明教程和仿真实验。

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

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

相关文章

数学建模和计算机建模的异同点

数学建模和计算机建模都是复杂系统分析和预测的重要手段,它们在理论基础、应用领域、实现方法等方面既有联系也有区别。 数学建模 定义: 数学建模是指利用数学语言(如方程式、算法、图表等)来描述现实世界中的问题或现象的过程。…

CSS3用户界面

用户界面 appearance appearance 属性用于控制元素是否采用用户代理(浏览器)的默认样式(外观) element {appearance: auto | none;}auto(默认):元素采用浏览器提供的默认样式。none:元素不采用任何默认样式,显示为“裸”元素,通常表现为无特定样式的简单框。input[…

Vue-前端自动化部署方案-scp2(实战版)

Vue-前端自动化部署方案-scp2 首先安装所需的npm插件 npm install scp2 //自动化部署 npm install ora //美化控制台 npm install chalk //美化控制台使用方式 在根级目录新增upload.js // 引入scp2 const client require("scp2"); const ora require("ora…

Web API 实现方式主流平台

Web API 实现方式主流平台 Web API 的实现方式和主流平台多种多样,每种方式和平台都有其独特的特性和应用场景。以下是主要的实现方式、主流平台及一些实现案例: 实现方式 REST (Representational State Transfer) 特点: 轻量级,基于HTTP…

2010-2022年各省新质生产力数据(含原始数据+测算代码+计算结果)

2010-2022年各省新质生产力数据(含原始数据测算代码计算结果) 1、时间:2010-2022年 2、范围:31省 3、指标:gdp(亿元)、在岗职工工资:元、第三产业就业比重、人均受教育平均年限、…

空间注意力机制

第一步是沿着通道维度进行最大池化和平均池化,比如下面3*3的特征图,有3个通道。 第二步新特征图进行拼接并经过卷积调整通道数 第三步经过Sigmoid函数后乘到输入上 代码: class SpatialAttention(layers.Layer):def __init__(self):super(S…

多环境和前后多环境实战

文章目录 一.多环境1.1 什么是多环境1.2 多环境分类1.2.1 本地环境(自己的电脑)1.2.2 开发环境(远程开发)1.2.3 测试环境1.2.4 预发布环境1.2.5 正式环境1.2.6 沙箱环境(实验环境) 1.3 如何实现1.3.1 抽象配…

实验报告2-多线程并发

实验报告2-多线程并发 一、实现思路 生产者消费者问题描述了共享固定大小缓冲区的两个线程——即所谓的“生产者”和“消费者”——在实际运行时会发生的问题。生产者的主要作用是生成一定量的数据放到缓冲区中,然后重复此过程。与此同时,消费者也在缓冲…

Hadoop学习之hdfs的操作

Hadoop学习之hdfs的操作 1.将HDFS中的文件复制到本地 package com.shujia.hdfs;import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.junit.After; import org.junit.Before; import org.j…

山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(十四)- 函数式编程(3)

目录 Optional 创建对象 安全消费值 安全获取值 ofElseGet ofElseThrow 过滤 判断 数据转换 函数式接口 只有一个抽象方法的接口称为函数接口 常用默认方法 基本数据类型优化 Optional 可以避免空指针异常<br/> 创建对象 public static void main(String[…

Leetcode.560.和为k的子数组

原题链接&#xff1a;链接 代码&#xff1a; class Solution { public:int subarraySum(vector<int>& nums, int k) {int n nums.size();vector<int> vec(n1);for(int i 1;i<n;i){vec[i] vec[i-1]nums[i-1];}unordered_map<int,int> hash;hash[0…

Linux-应用编程学习笔记(三、文件属性和目录)

一、文件类型 1、普通文件&#xff08;ls -l 文件&#xff0c;权限前边第一个"-"代表普通文件&#xff1b;stat 文件&#xff09; 文本文件&#xff1a;ASCII字符 二进制文件&#xff1a;数字0/1 2、目录文件&#xff08;‘’d&#xff09;&#xff1a;文件夹 3…

利用微服务SpringCloud如何实现熔断?

熔断是一种保护机制&#xff0c;用于处理由于服务故障或负载过重引起的服务请求失败问题。在分布式系统中&#xff0c;如果一个服务发生故障或负载过重&#xff0c;它可能会导致其他依赖于它的服务也出现故障&#xff0c;最终导致整个系统崩溃。熔断器就是为了解决这个问题而设…

c语言IO

前言 老是忘记c语言IO操作&#xff0c;故写个文章记录一下 打开文件 fopen FILE *fopen(const char *path, const char *mode);mode 返回值 如果文件成功打开&#xff0c;fopen 返回一个指向 FILE 结构的指针。如果文件打开失败&#xff08;例如&#xff0c;因为文件不存…

Flutter 中的 RotationTransition 小部件:全面指南

Flutter 中的 RotationTransition 小部件&#xff1a;全面指南 在 Flutter 中&#xff0c;动画是增强用户界面和提供流畅用户体验的强大工具。RotationTransition 是 Flutter 提供的一种动画组件&#xff0c;用于在父组件大小变化时旋转子组件。本文将详细介绍 RotationTransi…

AWS数据库之Neptune

Amazon Neptune是一项快速、可靠且完全托管的图形数据库服务&#xff0c;可帮助我们轻松构建和运行使用高度互连数据集的应用程序。Amazon Neptune的核心是专门构建的高性能图形数据库引擎&#xff0c;它进行了优化以存储数十亿个关系并将图形查询延迟降低到毫秒级。 Amazon N…

跨平台之用VisualStudio开发APK嵌入OpenCV(三)

本篇将包含以下内容&#xff1a; 1.使用 Visual Studio 2019 开发一个 Android 的 App 2.导入前篇 C 编译好的 so 动态库 3.一些入门必须的其它设置 作为入门&#xff0c;我们直接使用真机进行调试&#xff0c;一方面运行速度远高于模拟器&#xff0c;另一方面模拟器使用的…

java 拦截器-用户无操作超时退出利用Redis

1、授权过滤&#xff0c;只要实现AuthConfigAdapter接口 2、利用Redis token超时时间&#xff0c;用户访问后台续时 效果 Component public class AuthFilter implements Filter {private static Logger logger LoggerFactory.getLogger(AuthFilter.class);Autowiredprivat…

OWASP top10--SQL注入(二)

目录 06&#xff1a;SQL注入提交方式 6.1、get提交 6.2、post提交 6.3、cookie提交 6.4、HTTP Header头提交 07&#xff1a;注入攻击支持类型 7.1、union注入&#xff1a; 7.1.1、union操作符一般与order by语句配合使用 7.1.2、information_schema注入 7.2、基于函数…

RAG技术中的文本分块与重排序策略:提升大型语言模型应用效果的关键

在探讨RAG&#xff08;Retrieval-Augmented Generation&#xff09;技术中的文本分块&#xff08;Chunking&#xff09;方法时&#xff0c;我们需关注其对大型语言模型&#xff08;LLM&#xff09;应用效果的直接影响。文本分块是处理和优化信息检索过程的关键步骤&#xff0c;…