TCP/IP协议簇

本文通过三个案例深入探讨TCP/IP协议簇中的STP(生成树协议)和MSTP(多生成树协议)。案例1介绍了STP算法的选择过程,包括根网桥、根端口、指定端口和被阻塞端口的确定。案例2和3则分别展示了如何配置STP以改变根网桥,并通过MSTP实现链路负载均衡。实验环境中使用了eNSP,并详细阐述了配置步骤和验证方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Top
NTD TCNA DAY03
案例1:STP算法
案例2:配置STP
案例3:配置MSTP及负载均衡
1 案例1:STP算法
1.1 问题
选择出根网桥、根端口、指定端口、被阻塞的端口。

1.2 方案
如图-1所示:

在这里插入图片描述

图-1

1.3 步骤
实现此案例需要按照如下步骤进行。

1)每个广播域选择根网桥(Root Bridge)

每个非根网桥选择根端口(Root Ports)
每个网段上选择指定端口(Designated Ports)
2)结果如图-2所示

在这里插入图片描述

图-2

2 案例2:配置STP
2.1 问题
首先查看当前根网桥,然后通过修改交换机的优先级来分配根网桥。

2.2 方案
使用eNSP搭建实验环境,如图-3所示。

在这里插入图片描述

图-3

2.3 步骤
实现此案例需要按照如下步骤进行。

[A]stp mode stp
[B]stp mode stp
[C]stp mode stp
[D]stp mode stp
[A]dis stp
-------[CIST Global Info][Mode STP]-------
CIST Bridge         :32768.4c1f-cc3b-03cb
Config Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
Active Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
CIST Root/ERPC      :32768.4c1f-cc17-3481 / 200000
CIST RegRoot/IRPC   :32768.4c1f-cc3b-03cb / 0
CIST RootPortId     :128.2
BPDU-Protection     :Disabled
TC or TCN received  :106
TC count per hello  :0
STP Converge Mode   :Normal 
Time since last TC  :0 days 0h:9m:8s
Number of TC        :12
Last TC occurred    :Ethernet0/0/2

[B]dis stp
-------[CIST Global Info][Mode STP]-------
CIST Bridge         :32768.4c1f-cc17-3481
Config Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
Active Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
CIST Root/ERPC      :32768.4c1f-cc17-3481 / 0
CIST RegRoot/IRPC   :32768.4c1f-cc17-3481 / 0
CIST RootPortId     :0.0
BPDU-Protection     :Disabled
TC or TCN received  :23
TC count per hello  :0
STP Converge Mode   :Normal 
Time since last TC  :0 days 0h:9m:52s
Number of TC        :13
Last TC occurred    :Ethernet0/0/4

[C]dis stp
-------[CIST Global Info][Mode STP]-------
CIST Bridge         :32768.4c1f-cc50-3d65
Config Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
Active Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
CIST Root/ERPC      :32768.4c1f-cc17-3481 / 400000
CIST RegRoot/IRP
### Linux 下 VSCode 运行 ROS 项目时头文件报错解决方案 在 Linux 环境下使用 Visual Studio Code (VSCode) 开发 ROS 项目时,如果出现头文件无法找到的情况,通常是因为配置不完整或者编译环境未正确设置。以下是针对该问题的具体分析和解决方法。 #### 配置 CMakeLists.txt 文件 确保项目的 `CMakeLists.txt` 文件已正确定义依赖项并包含必要的路径。例如,在构建过程中需要显式指定 `/opt/ros/melodic/include` 路径以供查找 ROS 的核心库和消息头文件[^2]。可以通过以下方式修改: ```cmake find_package(catkin REQUIRED COMPONENTS roscpp std_msgs) include_directories( ${catkin_INCLUDE_DIRS} /opt/ros/melodic/include ) ``` 上述代码片段的作用是让 CMake 在编译期间能够识别到 ROS 提供的核心头文件位置。 --- #### 设置 compile_commands.json 为了使 IntelliSense 或其他插件能解析源码中的头文件声明,需生成 `compile_commands.json` 文件。此文件记录了每个源文件的编译选项及包含路径。通过执行如下命令可以完成生成操作: ```bash cd <your_project_directory>/build cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .. cp compile_commands.json ../ ``` 完成后,将 `compile_commands.json` 放置于工作区根目录以便于编辑器读取。 --- #### 修改 c_cpp_properties.json 打开 `.vscode/c_cpp_properties.json` 文件,并添加支持 C++17 的标准以及额外的包含路径。具体调整如下所示[^3]: ```json { "configurations": [ { "name": "ROS", "includePath": [ "${workspaceFolder}/**", "/opt/ros/melodic/include" ], "defines": [], "compilerPath": "/usr/bin/g++", "cStandard": "gnu11", "cppStandard": "c++17", // 添加这一行来启用 C++17 标准 "intelliSenseMode": "gcc-x64" } ] } ``` 这里的关键在于扩展默认的 `includePath` 列表至 ROS 安装目录下的 include 子目录;同时明确指定了使用的 GCC 编译工具链及其版本号。 --- #### 检查 CMake 工具链集成情况 当尝试调用 cmake 命令失败提示缺少变量 `CMAKE_ROOT` 时,则表明当前环境中尚未初始化好完整的 CMake 系统框架参数[^1]。可通过重新安装或更新系统包管理器内的 CMake 组件修复此类异常行为: ```bash sudo apt update && sudo apt install --reinstall cmake source /opt/ros/melodic/setup.bash ``` 最后一步非常重要——它加载了 ROS 所有必需的环境变量设定,从而使得后续流程得以顺利推进下去。 --- #### 总结 综合以上措施可有效缓解乃至彻底消除因缺失必要头文件而导致的一系列错误现象。务必逐一验证各环节是否按照指导准确实施到位。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值