看了网上关于STP生成树的解释感觉不是很懂,随即自己研究了一番

如有错误,欢迎指正,欢迎留言

--------------------------------------------------------------------------------------------------------------------

首先我们来了解一下为什么会有STP协议,即它能解决什么问题。

在企业里,为了防止线路故障,通常会做线路冗余,由于交换机会转发所有广播,所以会产生以下的问题:

1.广播风暴。广播会在交换网络里无限传播,且越来越严重,直至占满交换机资源。

2.重复帧。目标主机会收到越来越多的重复帧,这些重复帧可能每一个都需要回复。

3.MAC地址表不稳定。由于交换机的自学习,使得发送广播的主机的MAC地址(即源MAC)不停的出现在交换机不同的接口。

所以出现了STP生成树协议,将多余的线路自动阻塞,防止以上的问题;当有线路故障时,又会生成新的生成树,原本阻塞的某一段又会重新开始转发帧,以达到线路冗余的目的。

我们来熟悉一下STP生成树的术语:

桥ID:网桥的优先级(2字节)+本网桥最小MAC地址(6字节)

网桥优先级默认为32768

每一个交换机都有一个桥ID

端口ID:端口优先级(1字节)+端口号(1字节)

端口优先级默认为128

每一个端口都有一个端口ID

BPDU:桥协议数据单元,包含了网桥ID和Cost等信息

选举过程:

1.选择根桥

具有最小网桥ID的交换机成为根桥

2.每个网桥选择一个根端口

①选取端口(注意是端口)到达根桥Cost值最小的端口作为根端口

②若以上相同,则选取BPDU发送方网桥ID最小的

③若以上均相同,则选取BPDU发送方端口ID最小的

带宽           Cost
                  10Gbps      2
                  1Gbps        4
                  100Mbps   19
                  10Mbps     100

3.每一个段选择一个指定端口

①选取网桥(注意是网桥)到达根桥Cost值最小的端口作为根端口

②若以上相同,则选取BPDU发送方网桥ID最小的

③若以上均相同,则选取BPDU发送方端口ID最小的

注意:已经成为根端口的端口不再参与指定端口的选举

4.既不是根端口也不是指定端口的,进入阻塞状态

选举过程中端口的状态:

Disable:不发送任何报文(端口处于关闭状态)

Blocking:接收但不转发BPDU,不学习MAC地址,不接收也不转发帧(阻塞状态,但接收BPDU,需要时转为Listening)

Listening:接收且转发BPDU,不学习MAC地址,不接收也不转发帧(监听状态,发送和接收BPDU)

Learning:接收且转发BPDU,学习MAC地址,不接收也不转发帧(开始学习MAC地址)

Forwarding:接收且转发BPDU,学习MAC地址,接收并转发帧(开始转发数据包)

端口状态变化过程:

Blocking-->Listening-->Learning-->Forwarding

①网桥开始活动后自动由Blocking转为Listening。

②在Listening阶段完成选举(20s),若为根端口或者指定端口则转为Learning,否则Blocking。

③在Learning阶段(15s)开始学习MAC地址,为数据转发做准备工作。

④Forwarding阶段(15s)就可以开始数据转发了。

读者可以根据下面的拓扑图练习一下STP生成树

通过sh int | include bia 可以查看交换机的MAC地址

通过sh spanning-tree可以查看各端口的状态

谢谢阅读。

STP生成树协议详解的更多相关文章

  1. HTTP协议详解(转)

    转自:http://blog.csdn.net/gueter/archive/2007/03/08/1524447.aspx Author :Jeffrey 引言 HTTP是一个属于应用层的面向对象的 ...

  2. HTTP协议详解

    Author :Jeffrey 引言 HTTP 是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和 扩展. ...

  3. 动态选路、RIP协议&&OSPF协议详解

    动态选路.RIP协议&&OSPF协议详解 概念 当相邻路由器之间进行通信,以告知对方每个路由器当前所连接的网络,这时就出现了动态选路.路由器之间必须采用选路协议进行通信,这样的选路协议 ...

  4. ASP.NET知识总结(3.HTTP协议详解)

    引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1. ...

  5. 接口测试之HTTP协议详解

    引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1. ...

  6. 计算机网络(12)-----HTTP协议详解

    HTTP协议详解 http请求 http请求由三部分组成,分别是:请求行.消息报头.请求正文 (1)请求行 请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下:Metho ...

  7. OSPF协议详解

    CCNP OSPF协议详解 2010-02-24 20:30:22 标签:CCNP 职场 OSPF 休闲 OSPF(Open Shortest Path Fitst,ospf)开放最短路径优先协议,是 ...

  8. HTTP协议详解(真的很经典)

    HTTP 是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和 扩展.目前在WWW中使用的是HTTP/1.0 ...

  9. HTTP协议详解--转载http://blog.csdn.net/gueter/article/details/1524447

    引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1. ...

  10. 关于http协议详解

    Author :Jeffrey 引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前 ...

随机推荐

  1. Windows 官方提供的触屏硬件延迟测量方法

    本文记录微软 Windows 官方在 Windows Hardware Lab Kit 提供的触屏硬件延迟测量方法 Overview of measuring Touch Down Hardware ...

  2. HttpClient配置SSL绕过https证书以及双向认证

    HttpClient简介 1.HTTP 协议是 Internet 上使用得最多.最重要的协议之一,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源.虽然在 JDK 的 java ...

  3. 云原生最佳实践系列 7:基于 OSS Object FC 实现非结构化文件实时处理

    01 方案概述 现在绝大多数客户都有很多非结构化的数据存在 OSS 中,以图片,视频,音频居多.举一个图片处理的场景,现在各种终端种类繁多,不同的终端对图片的格式.分辨率要求也不同,所以一张图片往往会 ...

  4. docker-compose搭建的Mysql主从复制

    设置前注意下面几点: 1)要保证同步服务期间之间的网络联通.即能相互ping通,能使用对方授权信息连接到对方数据库(防火墙开放3306端口). 2)关闭selinux. 3)同步前,双方数据库中需要同 ...

  5. UE4/5 应用角色根运动的问题

    总的来说UE还是有点绕,网上提到的也不是很清晰,记录下. 具体可以下载UE官方示例ContentExample并进入Animation Level进行查看. 在Level中能看到根运动的必要步骤: 1 ...

  6. java netty 实现 websocket 服务端和客户端双向通信 实现心跳和断线重连

    java netty 实现 websocket 服务端和客户端双向通信 实现心跳和断线重连 maven依赖 <dependency> <groupId>io.netty< ...

  7. tkinter滚动条

    from tkinter import * import requests window = Tk() window.geometry('1000x600+300+100') window.title ...

  8. win11启动虚拟机出现蓝屏

    win11虚拟机启动出现蓝屏 问题 我的电脑是win11系统,最近在安装vmware后装了centos7.6,发现一启动centos,电脑就出现蓝屏,如图 解决 这个问题搞了好久,最终发现是win11 ...

  9. NOIP模拟91(多校24)

    T1 破门而入 解题思路 签到题(然而我数组开小直接变成暴力分...) 发现其实就是第一类斯特林数,然后 \(n^2\) 推就好了. 感觉可以用 NTT 优化成 \(nlogn\) ,但是好像并没有什 ...

  10. Redux之combineReducers方法

    Redux 提供了一个combineReducers方法,用于 Reducer 的拆分.你只要定义各个子 Reducer 函数,然后用这个方法,将它们合成一个大的 Reducer. import { ...