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

【HCIA-网工探长】12:生成树笔记

0. 前言

我们知道,大部分交换机都是二层交换机,交换机有它自己的三大纪律:

  1. 根据源MAC地址学习(记录MAC地址与端口的映射关系)
  2. 根据目的MAC地址转发
  3. BUM帧泛洪

这里的 BUM 指的是:

  • Broadcast:广播
  • Unknown Unicast:未知单播
  • Multicast:组播

1. 二层环路

当我们人类认为早期的交换机已经设计得天衣无缝时,环路来了。
环路形成后,泛洪出去的帧会反复到达环路上每一个交换机。此时会出现两个问题:一是 广播风暴 ,交换机频繁处理需要泛洪的BUM帧,再无暇处理正常的帧;二是 MAC帧地址漂移 ,交换机是通过源MAC地址学习MAC帧与端口的关系的,可此时MAC帧可以在环路中自由穿梭 —— 也就是说,同一个源MAC地址,一会儿从0端口来了,一会儿又从1端口来了。MAC地址就像漂移一样,让交换机频繁更新映射关系表,造成对应关系彻底混乱。

此时,愤怒的网工们想到一个办法,就是把网线拔了,不让环路形成。
可平静下来后,他们意识到:如果交换机可以主动去阻塞端口,不就相当于物理上把网线拔了吗? 等到端口可以使用时,再把阻塞的端口打开,不就相当于把拔下来的网线又接上去了吗?

可是,我们应该阻塞哪些端口来让这个环路消失呢?

2. STP的诞生

1984 年,一位卓越的女网工 Radia Joy Perlman 正在处理这个问题。她计划开发出一种简单的协议,使得网桥(交换机的前身)设备可以定位局域网中的环路。她想到了可以使用图论中 生成树(也叫支撑树) 的思路来破除环路。

在网络中的所有网桥上实施的算法允许网桥在网络中指定一个根网桥 。然后,每个网桥映射网络并确定到根网桥的最短路径,从而停用其他冗余路径。

她为这个核心思想写过一首诗:

I think that I shall never see
我想我永远不会看到
A graph more lovely than a tree.
一张比树更可爱的图。
A tree whose crucial property
这个树的关键属性
Is loop-free connectivity.
是无环路连接
A tree which must be sure to span
一个必须确保支撑住图的树
So packets can reach every LAN.
让数据包可以到达每个LAN。

First the root must be selected.
首先,必须选择根
By ID it is elected.
按 ID 选举产生
Least cost paths from root are traced.
跟踪从 root 开始的最低成本路径
In the tree these paths are placed.
把这些路径放置在树中

A mesh is made by folks like me
网络是由像我这样的人制作
Then bridges find a spanning tree.
然后,网桥们找到一个生成树
— Radia Perlman, Algorhyme

3. 如何配置 STP(Spanning Tree Protocol)

首先给出官方文档:STP/RSTP/MSTP配置命令

当前阶段,记住两个命令即可:

stp disable // 关闭STP
stp enable // 开启STP

额外的,配置STP模式为STP stp mode stp ,查看情况时可以 display stp brief ,设置优先级 stp priority 0……

后记

正如本文2中提到的那样,这个协议诞生时,网络中主要使用的交换设备是网桥(network bridge),所以协议中大量出现了 Bridge ,也就是桥的英文单词。

全文灵感来自:

  • 华为认证全套精讲视频!HCIA+HCIP+HCIE课程,理论+实战,一套视频直奔高阶,学网必备!
  • 【2025最新版】华为认证HCIA+HCIP+HCIE全套教程(附资料)零基础-进阶必备课程!网工大佬亲自授课,通俗易懂!!

相关文章:

  • Python使用ccplot绘制CALIPSO L1B后向散射
  • C# 异步方法设计指南:何时使用 await 还是直接返回 Task?
  • C++ 字符处理、编码格式
  • 20250328易灵思FPGA的烧录器FT4232_DL的驱动安装
  • postgresql+patroni+etcd高可用安装
  • unity 截图并且展现在UI中
  • turtle的九个使用
  • 【数据分享】基于联合国城市化程度框架的全球城市边界数据集(免费获取/Shp格式)
  • Spring 拦截器(Interceptor)与过滤器(Filter)对比
  • 51c深度学习~合集4
  • 【学Rust写CAD】16 零标记类型(zero.rs)
  • linux scp复制多层级文件夹到另一服务器免密及脚本配置
  • 数据库基础(聚合函数 分组 排序)
  • 大型语言模型的秘密:思考链长度与提示格式的魔力
  • mmaction2的mmcv依赖安装教程
  • 探究 CSS 如何在HTML中工作
  • 马拉车算法
  • 存储管理(一)
  • Flutter Autocomplete 从入门到进阶:打造智能输入体验的完整指南
  • 远程连接电脑
  • 重庆官网seo分析/西安做推广优化的公司
  • 黄一级a做爰片免费网站/成都排名seo公司
  • 网站建设服务条款/网页点击量统计
  • 网站建设选平台/开发软件app需要多少钱
  • 前端做网站都要做哪些/百度关键词优化多久上首页
  • 做企业网站哪家好/重庆网站外包