外观
插了两根网线做备份,为什么整个机房的灯突然疯狂爆闪?
阶段 2 · 数据链路层 · 第 13 课
在企业网络建设中,工程师最怕的就是“单点故障”:如果核心交换机 Switch-A 和 Switch-B 之间只有一根跳线,这根线一旦松动或被老鼠咬断,全公司网络就会瞬间中断。
为了保险起见,小张很自然地在两台交换机之间又多插了一根网线作为备份。谁知刚把第二根线插上不到五秒钟,两台交换机面板上的几十颗指示灯突然整齐划一地以最高频率疯狂爆闪,交换机风扇狂转、CPU 瞬间飙到 100%,整栋大楼所有人的电脑全部断网!小张吓得赶紧把线拔掉,网络才慢慢恢复正常。
为什么多插一根冗余备份线,反而酿成了机房灾难?这背后的罪魁祸首就是二层网络的终极梦魇——物理环路与 广播风暴。
学完本课后,你将能够:
- 对比 IP 报文与以太网帧在防环机制上的本质差异(为什么以太网帧没有 TTL 就会“永生不死”)。
- 描述二层物理环路引发的三大灾难:广播风暴、MAC 地址表震荡(Flapping)、多副本数据帧。
- 解释经典生成树协议(生成树协议(STP))如何通过比较 Bridge ID 选举出唯一的根桥(Root Bridge),以及被阻塞端口为何必须持续侦听 桥协议数据单元(BPDU)。
1. 致命缺陷:以太网帧为什么会“永生不死”?
在第 16 课 · IPv4 报文格式中,我们学到三层的 IP 数据包首部里有一个专门用于防环的字段——生存时间(TTL)。每经过一台路由器转发,TTL 就会减 1,减到 0 时路由器直接把包扔掉并报错,绝不会无休止死循环。
但是,请回头看第 8 课的以太网帧结构: 以太网帧头里只有目的 MAC、源 MAC、Type 和 FCS,根本没有任何类似于 TTL 的寿命倒计时字段!
这意味着:一个以太网帧一旦在二层网络里被转发,只要物理链路通畅、校验没有出错,它在网线里是“永生不死”的!
2. 环路引发的三重灾难:机房瘫痪全记录
现在,我们把两台交换机 SW1 和 SW2 用两条网线互联(形成物理环路,如上图),此时如果主机 A 发送了一个用于寻找网关的普通 ARP 广播请求(目的 MAC 为 FF-FF-FF-FF-FF-FF):
灾难一:广播风暴(指数级复制吞噬带宽)
- 广播帧从 SW1 的下联口进入,SW1 根据泛洪规则,将其从连接 SW2 的上方链路和下方链路同时复制发出一份。
- SW2 在上方链路收到该广播帧,根据泛洪规则,又从自己的下方链路转发回给 SW1;
- 同时,SW2 在下方链路也收到了一份,又从上方链路转发回给 SW1!
- 两个帧在环路上交替往复、每一圈都会自我复制成两倍,短短几秒钟内,每秒几十万个广播帧在两台交换机之间疯狂螺旋循环!全网带宽瞬间被垃圾广播挤占至 100%,正常业务数据根本挤不进网线。
灾难二:MAC 地址表疯狂震荡(Flapping)
- SW1 先在上方端口收到来自主机 A 的帧,MAC 表记录:
MAC-A 在端口 1; - 一微秒后,SW1 又在下方端口收到由 SW2 转回来的同一个主机 A 的帧,MAC 表立刻覆盖更新为:
MAC-A 在端口 2; - 紧接着上方端口又收到一份,又改回
端口 1... - 交换机的 CPU 陷在每秒几十万次的转发表覆盖修改中,无法自拔,交换机开始假死卡顿!
灾难三:终端收到多副本重复帧
- 主机 B 会从两个不同端口源源不断收到成千上万份完全相同的重复数据,操作系统协议栈被垃圾流量淹没崩溃。
3. 破环救星:生成树协议(STP)的智慧
我们既想要链路备份的可靠性,又绝对不能承受二层物理环路的毁灭性,怎么办?
答案是:物理上有环,逻辑上无环! 1985 年,Radia Perlman 博士发明了 生成树协议(STP)(Spanning Tree Protocol,生成树协议,IEEE 802.1D)。
STP 就像在每台交换机里驻派了一位自动巡查员。交换机开机后,并不立即转发用户数据,而是先互发一种小型的侦测报文——桥协议数据单元(BPDU)(Bridge Protocol Data Unit,桥协议数据单元)。
STP 通过优雅的三步算法,在逻辑上修剪掉环路:
第一步:选举整棵网络的唯一“树根”——根桥(Root Bridge)
- 全网所有交换机通过 BPDU 互报家门,比较彼此的 桥 ID(Bridge ID,BID)。
Bridge ID = 桥优先级(2 字节,缺省 32768) + 桥 MAC 地址(6 字节)。- 全网 Bridge ID 最小的交换机胜出,成为全网唯一的根桥(Root Bridge)!
- 网络中所有链路开销和最优路径的计算,都以根桥为原点向外延伸。
第二步:各端口选出角色与最优路径
- 根端口(RP,Root Port):每台非根交换机上选出一个离根桥最近(累计路径开销最小)的接口,负责向根桥转发数据。
- 指定端口(DP,Designated Port):每条物理网线上选出一个离根桥最近的接口,负责向该网段推送数据。根桥上的所有接口全都是指定端口!
第三步:逻辑“封印”备用端口(Blocking / Discarding)
- 那些既没有当选根端口、也没有当选指定端口的接口,就是产生环路的冗余备用端口!
- STP 会毫不留情地下令:把这个备用端口打入冷宫(设为 Blocking / 阻塞状态)!
- 阻塞端口的行为规范:
- 它不转发任何用户的业务数据帧;
- 它不学习任何 MAC 地址;
- 它不主动发送配置 BPDU;
- 核心考点:但是它必须时刻竖起耳朵,持续侦听对端发来的 BPDU!
为什么被阻塞的端口必须持续侦听 BPDU?
因为这根网线是宝贵的备份生命线! 一旦前方的主链路被挖掘机挖断,根桥的 BPDU 就再也无法顺着原路径传过来。 阻塞端口一旦连续数秒收不到预期的 BPDU(发生老化超时),它就会立即警觉起来:“糟糕!前面的主链路肯定是塌方了!” 于是该端口自动解除封印,按照 Listening
4. 阶段 2 总结与下一步
恭喜你!到这里,你已经征服了**阶段 2 · 数据链路层(第 8~13 课)**的全部硬核知识:
- 以太网帧与检错(第 8 课):认识了
的标准帧格式,懂得了尾部 帧校验序列(FCS) 基于 循环冗余校验(CRC)-32 校验,出错直接静默丢弃。 - 物理寻址(第 9 课):掌握了 48 位 MAC 地址,通过首字节最低位一眼分辨单播(Unicast)、组播(Multicast)与广播(Broadcast)。
- 交换机智能(第 10 课):吃透了二层交换机“基于源 MAC 学习物理端口、基于目的 MAC 查表转发、未知或广播则泛洪”的工作灵魂。
- 二三层纽带(第 11 课):搞懂了 地址解析协议(ARP) 如何通过“广播请求、单播应答”把 IP 解析成 MAC,懂得了广播不能穿透路由器。
- 逻辑隔离(第 12 课):学会了在源 MAC 与 Type 之间插入 4 字节的 802.1Q VLAN 标签(802.1Q Tag),掌握了 Access 端口 与 Trunk 端口 端口打剥标签规则。
- 消除环路(第 13 课):看清了物理环路引发广播风暴的恐怖后果,领悟了 生成树协议(STP) 通过选举根桥(Root Bridge)并阻塞冗余端口保全大局的深邃智慧。
现在,同一局域网内部的通信已经天衣无缝了。但如果我们要给另一个校区、另一个省份甚至地球另一端的电脑发消息: 跨越不同网络时,数据包该如何寻址?什么是子网掩码?路由器是怎样在成千上万条网络路径中选出最佳下一跳的?
下一阶段——阶段 3 · 网络层(第 14–21 课),我们将正式跨出局域网,走进浩瀚的互联网核心世界!