【网络协议详解】——STP技术(学习笔记)

news2024/9/21 4:34:03

目录

  • 🕒 1. STP技术工作原理
  • 🕒 2. BPDU报文
    • 🕘 2.1 配置BPDU
    • 🕘 2.2 TCN BPDU
  • 🕒 3. 实验:了解STP生成过程

🕒 1. STP技术工作原理

以太网交换机使用生成树协议STP(Spanning Tree Protocol),可以在提高网络可靠性的同时又避免环路带来的各种问题。

生成树算法STA(Spanning Tree Algorithm)是生成树协议STP的核心。它的实现目标是:在包含有物理环路的网络中,构建出一个能够连通全网各节点的树型无环逻辑拓扑

STP协议由IEEE 802.1D 定义,描述时使用的是“网桥”,由于“交换机”的本质是“多端口网桥”,接下来都使用“网桥”来描述。

生成树算法的三个步骤:

  1. “选举”根交换机
  2. “选举”根端口
  3. “选举”指定端口并阻塞备用端口

注:这里所谓的“选举”,是通过网络中各交换机相互发送生成树协议专用的数据帧来实现的,这些交换信息的报文称为网桥协议数据单元,简称BPDU

选举根交换机:

  • 根交换机的选举条件:网桥ID(BID)最小者当选
  • 网桥ID(BID)由以下两部分构成:
    • 优先级(2字节)
      • 范围:0 - 61440(也有说法是65535)
      • 步长:4096
      • 默认值:32768
    • 交换机的基本MAC地址(6字节)
  • 网桥ID (BID)的比较方法:
    • 优先级取值越小,则网桥ID(BID)就越小。
    • 若优先级相同,则比较MAC地址,从MAC地址的左侧开始依次比较,数值小的,则网桥ID(BID)就小。

选举根端口:

  • 在每一个非根交换机上选出一个根端口RP(Root Port),并且只能是一个。
  • 根端口RP用于接收根交换机发来的BPDU,也用来转发普通流量。
  • 根端口RP的选举条件:
    • BPDU接收端口到根交换机的路径成本(端口开销)最小。
       链路带宽   成本值  4 M b / s 250 10 M b / s 100 16 M b / s 62 100 M b / s 19 1 G b / s 4 10 G b / s 2 \begin{array}{|c|c|} \hline {\text { 链路带宽 }} & \text { 成本值 } \\ \hline 4 Mb/s & 250 \\ \hline 10 Mb/s & 100 \\ \hline 16 Mb/s & 62 \\ \hline 100 Mb/s & 19 \\ \hline 1 Gb/s & 4 \\ \hline 10 Gb/s & 2 \\ \hline \end{array}  链路带宽 4Mb/s10Mb/s16Mb/s100Mb/s1Gb/s10Gb/s 成本值 250100621942
    • 对端的网桥ID(BID)最小。
    • 对端的端口ID(PID)最小。
      • 优先级范围(1 - 4bit)
        • 范围:0 - 240
        • 步长:16
        • 默认值:128
      • 端口号(5 - 16bit)

选举指定端口(Designated Port)并阻塞备用端口(预备端口):

  • 在每一个网段上选出一个指定端口DP ( Designated Port)并且只能是一个。
  • 指定端口DP用于转发根交换机发来的BPDU,也用来转发普通流量。
  • 指定端口DP的选举条件:
    • 根交换机的所有端都是指定端口DP。
    • 根端口的对端端口一定是指定端口DP。
    • BPDU转发端口到根交换机的路径成本最小。
    • 本端的网桥ID(BID)最小。
    • 本端的端口ID(PID)最小。
  • 剩余端口成为备用端口AP(Alternate Port),将它们阻塞。

在这里插入图片描述

端口状态描述:

端口状态描 述
Disabled(端口没有启用)此状态下端口不转发数据帧,不学习MAC地址表,不参与生成树计算。
Listening(侦听状态)此状态下端口不转发数据帧,不学习MAC地址表,只参与生成树计算,接收并发送BPDU。
Blocking(阻塞状态)此状态下端口不转发数据帧,不学习MAC地址表,此状态下端口接收并处理BPDU,但是不向外发送BPDU。
Learning(学习状态)此状态下端口不转发数据帧,但是学习MAC地址表,参与计算生成树,接收并发送BPDU。
Forwarding(转发状态)此状态下端口正常转发数据帧,学习MAC地址表,参与计算生成树,接收并发送BPDU。
  • 当端口正常启用之后,端口首先进入Listening状态,开始生成树的计算过程。
  • 如果经过计算,端口角色需要设置为预备端口(Alternate Port),则端口状态立即进入Blocking;
  • 如果经过计算,端口角色需要设置为根端口(Root Port)或指定端口(Designated Port),则端口状态在等待Forward Delay之后从Listening状态进入Learning状态,然后继续等待Forward Delay之后,从Learning状态进入Forwarding状态,正常转发数据帧。

🕒 2. BPDU报文

STP生成树的计算,根端口、指定端口的选举,都是借助BPDU(Configuration Bridge Protocol Data Unit)报文进行信息的传递和交换的。

BPDU报文有两类:配置BPDUTCN BPDU

🕘 2.1 配置BPDU

在这里插入图片描述

  • 配置BPDU使用标准LLC格式封装在以太网数据帧中。
  • 配置BPDU只在指定端口(Designated Port)上发送。
  • DMAC:目的MAC地址。发送配置BPDU的数据帧使用保留的组MAC地址01-80-C2-00-00-00,此地址标识所有交换机,但是不能被交换机转发,也即只在本地链路有效。
  • LLC Header:目的服务访问点(Destination Service Access Point, DSAP)和源服务访问点(Source Service Access Point, SSAP)的值都设为二进制01000010。Ctrl字段的值设为3。

在这里插入图片描述

  • 当STP初始计算选举根交换机时,各个交换机主动生成并发送配置BPDU。
  • 选举结束后,只有根交换机才能主动生成并发送配置BPDU
  • 非根交换机只有在自己的根端口收到配置BPDU报文才能根据收到的报文生成配置BPDU从指定端口发送。

配置内容:
在这里插入图片描述

报文标识:

参数比特数描 述
Protocol Identifier (协议标识)16比特取值0x0000
Protocol Version Identifier (协议版本标识)8比特取值0x00
BPDU Type (BPDU类型)8比特配置BPDU报文取值0x00
拓扑改变通知BPDU报文取值0x80
Flags (标志)8比特配置BPDU报文取值0x00
拓扑改变配置BPDU报文取值0x01
拓扑改变确认配置BPDU报文取值0x80

STP计算:

参数比特数描 述
Root Identifier64比特当前根交换机的桥ID
Root Path Cost32比特发送该BPDU报文的交换机的根路径开销
Bridge Identifier64比特发送该BPDU报文的交换机的桥ID
Port Identifier16比特发送该BPDU报文的端口ID

时间参数:

参数比特数描 述
Message Age16比特该BPDU报文从根桥发送到当前交换机的总时间,随时间增长而变大,若达到Max Age,则此配置BPDU被认为已经过期
Max Age16比特BPDU报文的最大生命周期,默认取值20s
Hello Time16比特交换机发送配置BPDU的报文周期,默认取值2s
Forward Delay16比特端口Listening和Learning状态的持续时间,默认取值15s

🕘 2.2 TCN BPDU

如果网络拓扑发生了变化,会触发STP 的重新计算,新的生成树拓扑可能会跟原先的网络拓扑存在一定的差异。

在交换机上,指导报文转发的是MAC 地址表,默认的动态表项的生存时间是300 s,此时,数据转发如果仍然按照原有的MAC 地址表,会导致数据转发错误。

为防止拓扑变更情况下的数据发送错误,STP 中定义了拓扑改变消息泛洪机制。

当网络拓扑发生变化的时候,除了在整网泛洪拓扑改变信息外,同时修改MAC 地址表的生存期为一个较短的数值,等拓扑结构稳定之后,再恢复MAC 地址表的生存期。

在这里插入图片描述

在向整网泛洪拓扑改变信息的过程中,共涉及三种BPDU:

  1. 拓扑改变通知BPDU:TCN(Topology Change Notification) BPDU。用于非根交换机在根端口上向上行交换机通告拓扑改变信息,并且每隔Hello Time(2秒)发送一次,直到收到上行交换机的拓扑改变确认配置BPDU或者拓扑改变配置BPDU。
  2. 拓扑改变确认配置BPDU:TCAN(Topology Change Acknowledgment Configuration) BPDU。配置BPDU的一种,和普通配置BPDU不同的是此配置BPDU设置了一个Flag位。用于非根交换机在接收到拓扑改变通知BPDU的指定接口上向下行交换机发送拓扑改变通知的确认信息。
  3. 拓扑改变配置BPDU:TCC(Topology Change Configuration) BPDU。此配置BPDU设置了另外一个Flag位。用于从根交换机向整网泛洪拓扑改变信息,所有交换机都在自己所有的指定端口上泛洪此BPDU。

SWA收到SWB发送的拓扑改变通知BPDU之后,每隔2秒向网络中发送拓扑改变配置BPDU(设置了一个Flag位的配置BPDU),使网络中所有的交换机都把MAC地址表的生存期修改为Forward Delay(15秒),经过一段时间(Max Age加上Forward Delay,默认为35秒)之后,SWA(根交换机)在自己发送的配置BPDU中,清除Flag位,表示网络拓扑已经稳定,网络中的交换机恢复MAC地址生存期。

拓扑改变通知BPDU格式:

参数字节数内容
2字节Protocol Identifier0x0000
1字节Protocol Version Identifier0x00
1字节BPDU Type0x80

在这里插入图片描述
拓扑改变确认配置BPDU和拓扑改变配置BPDU都是配置BPDU的一种,和普通的配置BPDU不同的是:

  • 普通的配置BPDU中Flag字段全部设置为0;
  • 拓扑改变确认配置BPDU将Flag字段的第8位设置为1;
  • 拓扑改变配置BPDU将Flag字段的第1位设置为1。

🕒 3. 实验:了解STP生成过程

题目:作为公司的网络管理员,公司的网络使用了两层网络结构,核心层和接入层,在接入层采用了冗余网络,为避免存在的环路问题,决定使用STP 来进行环路控制。

在这里插入图片描述

设备接口接口类型所属VALN允许通过VLAN
IOU1Ethernet 0/0TrunkALL
Ethernet 0/1TrunkALL
IOU2Ethernet 0/1TrunkALL
Ethernet 0/2TrunkALL
Ethernet 0/3AccessVLAN 10ALL
IOU3Ethernet 0/1TrunkALL
Ethernet 0/2TrunkALL
Ethernet 0/3AccessVLAN 10ALL
设备接口IP地址
PC-1Ethernet 0192.168.1.1/24
PC-2Ethernet 0192.168.1.2/24

实验步骤:
1、交换机基本配置
(1)在IOU1、IOU2、IOU3上创建vlan 10
(2)在IOU1、IOU2、IOU3上配置access口和trunk口

2、PC配置IP地址

3、STP基本配置
(1)在思科二层交换机中,STP是默认开启的。
(2)查看生成树的情况。(根网桥ID、交换机ID、各端口角色)

 IOU1#show spanning-tree
 IOU2#show spanning-tree
 IOU3#show spanning-tree

在这里插入图片描述在这里插入图片描述在这里插入图片描述

(3)测试PC1到PC2的连通性在这里插入图片描述

(4)关闭IOU3的e0/1口,再次查看生成树的情况

IOU3(config)#int e0/1
IOU3(config)#shutdown

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(5)再次测试PC1到PC2的连通性
在这里插入图片描述

(6)更改IOU3的优先级,使其成为根网桥

IOU3(config)#spanning-tree vlan 1 priority 4096

(7)再次查看生成树的情况
在这里插入图片描述在这里插入图片描述

在这里插入图片描述


❗ 转载请注明出处
作者:HinsCoder
博客链接:🔎 作者博客主页

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

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

相关文章

连续签到积分兑换试用流量主小程序开发

每日签到积分兑换试用流量主小程序开发 打卡兑奖小程序。用户签到活得积分。积分可以兑换商品。观看激励视频广告可以积分翻倍。 用户可以参加试用商品活动参加试用需要提交信息。可以通过分享方式直接获取试用资格。 以下是流量主小程序的功能列表: 广告位管理&a…

JavaWeb——HTTP 协议的基本格式和 fiddler 的用法

目录 一、HTTP定义 二、HTTP协议的工作流程 三、抓包工具Fiddler的用法 1、介绍 2、原理 3、抓包结果 (1)、HTTP请求 (2)、HTTP响应 四、HTTP协议的格式 1、HTTP请求 (1)、请求行 (2…

OpenAPI的签名校验

前言 作为一个后端开发,提供API接口或者对接第三方API接口的时候,考虑接口的防刷、重放等安全问题,严格意义上,都需要加上双方约定的签名规则。 大致思路 一般情况下,签名规则没有墨守成规的规定,只要考…

MediaPipe Face Detection可运行在移动设备上的亚毫秒级人脸检测

MediaPipe人脸检测 MediaPipe人脸检测是一种超快速的人脸检测解决方案,具有6个界标和多人脸支持。它基于BlazeFace,BlazeFace是为移动GPU推理量身定制的轻巧且性能良好的面部检测器。检测器的超实时性能使其可应用于需要准确地关注面部区域作为其他任务特定模型: 例如 1、3…

如何有效解决企业文件安全事件频发问题?

企业文件安全是企业必须解决的一个关键问题。随着数字化趋势的不断发展,企业严重依赖于以电子格式存储和访问数据。这种转变使得组织必须实施适当的安全协议,以确保其敏感数据免受未经授权的访问或盗窃。 企业网盘的使用已经在公司中流行起来&#xff0c…

ChatGPT:3. 使用OpenAI创建自己的AI网站:2. 使用 flask web框架快速搭建网站主体

使用OpenAI创建自己的AI网站 如果你还是一个OpenAI的小白,有OpenAI的账号,但想调用OpenAI的API搞一些有意思的事,那么这一系列的教程将仔细的为你讲解如何使用OpenAI的API制作属于自己的AI网站。博主只能利用下班时间更新,进度慢…

mybatis是如何集成到spring的之SqlSessionFactoryBean

文章目录 1 前言1.1 集成spring前使用mybatis的方式1.2 集成mybatis到spring的关键步骤 2 SqlSessionFactoryBean对象分析2.1 buildSqlSessionFactory做了什么事情?2.2 为什么是SqlSessionFactoryBean却可以使用SqlSessionFactory? 3 验证demo4 举一反三…

【QT】自定义工程封装成DLL并如何调用(带ui界面的)

一、动态库的封装 1、首先新建一个Library工程 2、修改类型为共享库,自定义项目名称以及项目路径 3、选择编译器 4、选择动态库所需要的模块 5、自定义类名,点击下一步 6、点击下一步 7、项目总览 8、此时的文件中还没有ui文件,因为要封装带…

南京邮电大学算法与设计实验四:回溯法(最全最新,与题目要求一致)

要求用回溯法求解8-皇后问题,使放置在8*8棋盘上的8个皇后彼此不受攻击,即:任何两个皇后都不在同一行、同一列或同一斜线上。请输出8皇后问题的所有可行解。 用回溯法编写一个递归程序解决如下装载问题:有n个集装箱要装上2艘载重分…

pg事务:隔离级别(2)

事务隔离级别的历史 ANSI SQL-92定义的隔离级别和异常现象确实对数据库行业影响深远,甚至30年后的今天,绝大部分工程师对事务隔离级别的概念还停留在此,甚至很多真实的数据库隔离级别实现也停留在此。但后ANSI92时代对事物隔离有许多讨论甚至…

【5.20】五、安全测试——渗透测试

目录 5.3 渗透测试 5.3.1 什么是渗透测试 5.3.2 渗透测试的流程 5.3 渗透测试 5.3.1 什么是渗透测试 渗透测试是利用模拟黑客攻击的方式,评估计算机网络系统安全性能的一种方法。这个过程是站在攻击者角度对系统的任何弱点、技术缺陷或漏洞进行主动分析&#x…

如何在项目管理中实现任务活动的留痕管理?

项目工作为什么需要留痕呢? 1,记录项目工作:在项目管理工作中常常涉及多部门协作,工作留痕可以帮助我们有效复原已经发生了的工作活动,从而留下印迹供日后查证。 2,支撑工作复盘:在项目工作结束之后&…

SpringBoot程序启动速度提速分析

传统的破程序(百万行级一个微服务),在我的P15-gen2代电脑上启动一次需要80秒左右(直接运行三次,取平均值),在其它人电脑上可想而知了。 大概记录几点 1 优化肯定是需要找工具观察的,不观测还…

MyBatis、MyBatis-plus

文章目录 MyBatis一、MyBatis简介1. 什么是MyBatis2. MyBatis开发步骤3. 环境搭建4. MyBatis的映射文件(UserMapper)5. 动态sql语句6. MyBatis的增删改查 二、MyBatis核心配置文件(sqlMapConfig)1. MyBatis常用配置1)environments…

使用JAVA代码实现跳动爱心(脱单节程序员必备哦)

520!!!表白日,你脱单了吗?你跟对象彻夜不归了吗? 如果没有说明,你的诚心不够,来给对象一个代码表白吧! 话不多说,先上效果图: 实现代码如下&…

kicad学习笔记6:kicad启动及其grid参数设置和修改

1。kicad启动&#xff1a; single_top.cpp 启动函数&#xff1a; 1。 IMPLEMENT_APP( APP_SINGLE_TOP )2。 PGM_SINGLE_TOP::OnPgmInit()3。 PGM_BASE::InitPgm2。kicad参数 grid参数定义&#xff1a; struct GRID_SETTINGS {bool axes_enabled;std::vector<wxString&…

华为OD机试真题 Java 实现【天然蓄水池】【2023Q1 200分】

一、题目描述 公元2919年&#xff0c;人类终于发现了一颗宜居星球——X星。现想在X星一片连绵起伏的山脉间建一个天然蓄水库&#xff0c;如何选取水库边界&#xff0c;使蓄水量最大&#xff1f; 要求&#xff1a; 山脉用正整数数组s表示&#xff0c;每个元素代表山脉的高度。…

基于springboot人事管理系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SpringBoot 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 前言 基于springboot人事管…

vscode录音及语音实时转写插件开发并在工作区生成本地mp3文件 踩坑日记!

前言 最近接到一个需求&#xff0c;实现录音功能并生成mp3文件到本地工作区&#xff0c;一开始考虑到的是在vscode主体代码里面开发&#xff0c;但这可不是一个小的工作量。时间紧&#xff0c;任务重&#xff01;市面上实现录音功能的案例其实很多&#xff0c;一些功能代码是可…

【敬伟ps教程】修复工具

文章目录 模糊工具锐化工具涂抹工具减淡、加深工具海绵工具仿制图章工具图案图章工具修复画笔工具污点修复画笔工具修补工具内容感知移动工具红眼工具 模糊工具 模糊工具的主要功能就是把图像变的模糊。虽然是把图像变模糊&#xff0c;但是模糊工具应用也是很广泛的。使用模糊工…