第1章 网络基础回顾
做回环检测和线缆故障排查,说来说去,底子还是网络基础。这章咱们快速捋一遍OSI七层模型、TCP/IP协议栈和以太网帧结构。都是老生常谈的东西,但很多故障恰好就在这些“常识”上翻车。我见过不少工程师,抓包一把好手,却说不清二层帧头和IP头的关系——真到排查环路时,就容易漏掉关键细节。
OSI七层模型
OSI七层模型是个参考框架,实际用不是每层都有独立硬件软件,但它帮我们把通信过程拆成了七个清晰的阶段。想想看,数据从应用层一路向下传到物理层,每层都干自己的活,加自己的头。
| 层号 | 名称 | 典型设备/协议 | 排查关注点 |
|---|---|---|---|
| 7 | 应用层 | HTTP、FTP、DNS | 应用协议行为异常 |
| 6 | 表示层 | 加密、压缩 | 格式转换错误 |
| 5 | 会话层 | NetBIOS、RPC | 会话建立/断开失败 |
| 4 | 传输层 | TCP、UDP | 端口、序列号、重传 |
| 3 | 网络层 | 路由器、IP、ICMP | IP地址、路由环路 |
| 2 | 数据链路层 | 交换机、MAC、ARP | MAC表、广播风暴、回环 |
| 1 | 物理层 | 网线、光模块、中继器 | 线缆损坏、信号衰减 |
我个人习惯把「回环检测」的重点放在二层和三层。物理层回环(比如打环测试)也常见,但真正的成环故障更多是二层STP失效或三层路由收敛问题。这里先埋个点,后面章节会展开。
举个实例。有次处理一个核心交换机的广播风暴,查了半小时才发现是某根跳线的RJ45头内部短路,相当于物理层上自己给自己打了环。那台设备断了网恢复后,我第一件事就是让现场把所有接头的回环回路测一遍。说白了,底层烂了,上层跑得再快也没用。
TCP/IP协议栈
TCP/IP协议栈比OSI更“真”,它只有四层或五层(看你怎么划分)。实际互联网跑的就是这套东西。咱们做故障排查,脑子里最好同时装两套模型:OSI用来聊天和对齐概念,TCP/IP用来抓包和写诊断命令。
| TCP/IP层 | 相当于OSI层 | 常见协议 |
|---|---|---|
| 应用层 | 5~7 | HTTP、HTTPS、DNS、DHCP |
| 传输层 | 4 | TCP、UDP |
| 网际层 | 3 | IP、ICMP、ARP(通常放这里) |
| 网络接口层 | 1~2 | Ethernet、Wi-Fi、PPP |
我记得有一次,客户反馈两个机房之间丢包严重,我拿ping一测,ICMP回复时断时续。查路由表没问题,最后抓包发现是交换机端口上的回环检测把某条链路误判为环路,强制端口error-disabled了。这种故障,不懂TCP/IP各层怎么交互,你连ping失败的原因都猜不到。
你想想看:ping属于ICMP,ICMP在IP之上,IP在以太网帧里封装。如果二层回环导致广播风暴,ICMP包根本轮不到被正常转发——还没到三层就被二层淹没了。所以排查时,我习惯从上往下试:先试应用层(网页打不开?),再试传输层(端口通不通?),最后试二层甚至物理层。
以太网帧结构
以太网帧是咱们和线缆打交道的“原生语言”。回环检测里,很多技术就是基于帧结构里特定字段的变化来决策的——比如BPDU还是LLDP包,它们都封装在以太网帧里。
标准以太网帧(IEEE 802.3)长这样:
+---------+---------+---------+--------+--------+--------+--------+
| 前导码 | 定界符 | 目的MAC | 源MAC | 长度/ | 数据 | 帧校验 |
| (7B) | (1B) | (6B) | (6B) | 类型 | (46~150 | (4B) |
| | | | | (2B) | 0B) | |
+---------+---------+---------+--------+--------+--------+--------+
小提示:帧的最小长度是64字节(从目的MAC到FCS),最大1518字节。如果收到小于64字节的帧,叫“runt”,通常由回环或碰撞导致;大于1518字节的叫“giant”,可能由配置错误或硬件故障引起。我遇到过一个案例,某厂商交换机在端口环回时会产生大量runt帧,直接导致MAC表震荡。
避坑指南来一条:我曾经在写自动化脚本时,手动构造了一个以太网帧做回环测试,结果忘了算FCS,设备直接丢弃了。后来才意识到,很多二层回环检测工具(比如STP的BPDU)依赖正确的帧校验才能生效。你要是自己写发包程序,一定把FCS计算对了——或者直接用libpcap这类库,别自己拼原始帧。
帧结构里还有个关键字段:长度/类型(EtherType)。当值为0x8100时,帧是802.1Q带VLAN标签的;0x0800对应IP;0x0806对应ARP。回环检测中常见的协议EtherType:
- 0x8809 – 慢协议(LACP、MAC控制等)
- 0x8942 – 802.1ag(CFM连通性故障管理)
- 0xFFFF – 一些厂商专用环回检测帧
其实,你只要抓住以太网帧的二层头和类型字段,回环检测的方向就清晰了一半。剩下的就是弄清那个协议在帧里写了什么数据,设备又怎么处理。
关键结论:回环检测本质上就是跨层联合分析。二层环路靠STP/BPDU防;三层环路靠TTL和路由协议防;物理层回环靠链路检测和误码率监控。后面章节咱们一个个拆解。你把这些基础刻在脑子里,碰到任何环路问题,都能快速定位到具体哪一层在“捣乱”。