4、以太网协议实战:从帧格式到STP,把二层网络吃透

以太网,说白了就是咱们局域网里最底层的“运输工”。你发的每一个包,最终都得塞进以太网帧里,才能在网线、光纤里跑。今天咱们就把这个“运输工”的里里外外扒干净——帧格式、交换机怎么干活、VLAN怎么隔离、STP怎么防环。嗯,都是实战里天天碰的东西。

4.1 以太网帧格式:先看懂“信封”长什么样

一个以太网帧,就像一封信。你得知道信封上写什么,收发室(网卡)才能正确投递。

目前最常用的是 Ethernet II 帧格式(也叫DIX帧)。我刚开始抓包时,老把它的字段和802.3搞混,后来踩了个坑才彻底记住。

字段 长度(字节) 说明
前导码(Preamble) 7 同步时钟用,实际抓包看不到
帧起始定界符(SFD) 1 标记帧正式开始
目的MAC地址 6 谁收这封信
源MAC地址 6 谁发的
类型/长度(Type/Length) 2 Ethernet II 用类型(如0x0800=IP),802.3用长度
载荷(Payload) 46~1500 上层数据,不够46字节要填充
帧校验序列(FCS) 4 CRC校验,算错了就丢帧
实战小技巧: 抓包时看到Type字段是0x0800,那后面一定是IPv4包。如果是0x0806,那就是ARP。记住这两个值,排查二层问题快很多。

为什么最小载荷是46字节?因为整个帧(从目的MAC到FCS)最少要64字节,这是CSMA/CD协议定的。小于64字节的帧叫“碎片帧”,交换机直接丢弃。我曾经在调试一个嵌入式网卡时,发现它发的包只有60字节,结果对端交换机死活不认——嗯,后来加了填充字节才搞定。

4.2 交换机工作原理:它怎么知道把帧往哪扔?

交换机不是傻瓜式广播。它内部维护着一张 MAC地址表,也叫CAM表。这张表记录了“哪个MAC地址在哪个端口上”。

工作流程其实就三步:

  1. 学习:收到一个帧,看源MAC,把MAC和入端口记下来。
  2. 转发:查目的MAC,如果表里有,就从对应端口发出去(单播)。
  3. 泛洪:如果表里没有,或者目的MAC是广播地址(FF-FF-FF-FF-FF-FF),就从所有端口(除了入端口)发出去。

核心要点: 交换机是“二层设备”,它不关心IP地址,只看MAC。所以ARP广播会在交换机内部被泛洪到所有端口——这也是VLAN要出现的原因之一。

MAC地址表是有老化时间的,默认300秒。如果某个设备下线了,表项到期就会被删除。我记得有一次排查一个间歇性丢包问题,发现是某台服务器频繁更换网卡,MAC地址变了,但交换机表里还留着旧记录——清一下CAM表就好了。

4.3 VLAN技术基础:把一台交换机掰成好几台

为什么需要VLAN?你想想看,一个公司里,财务部和研发部都在同一个二层网络里。财务部的广播包,研发部也能收到。这不安全,也浪费带宽。

VLAN(虚拟局域网)就是干这个的。它把一个物理交换机,逻辑上切成多个独立的广播域。不同VLAN之间默认不通,要通信必须走三层路由。

VLAN的帧格式,是在标准以太网帧里插了个 802.1Q标签,共4字节:

字段 长度(位) 说明
TPID 16 固定0x8100,表示这是带标签的帧
优先级(PCP) 3 QoS用,0~7
CFI/DEI 1 规范格式指示,一般置0
VID 12 VLAN ID,范围1~4094,0和4095保留

插了标签后,帧的最大长度从1518字节变成1522字节。有些老旧设备会把这个当成“超长帧”丢掉——我早年在一个监控项目里就遇到过,摄像头和交换机之间因为MTU不匹配,画面一直卡顿,后来发现是交换机不支持802.1Q的巨型帧。

注意: 交换机端口有两种模式:Access口(只属于一个VLAN,发帧时去掉标签)和Trunk口(承载多个VLAN,帧带标签)。配置错了,VLAN就串了。我曾经把Trunk口配成了Access,结果整个VLAN 10的流量都跑到了VLAN 20里——排查了整整一个下午。

4.4 生成树协议(STP)入门:别让网络绕成死环

冗余是好事。你给交换机之间连了两条线,一条断了还有另一条。但问题来了——如果网络里有环,广播帧就会在环里无限转发,最终把带宽吃光,这叫“广播风暴”。

STP(生成树协议)就是来解决这个问题的。它的核心思想:逻辑上切断冗余链路,只留一条无环的树形路径。当主链路断了,再自动恢复被切断的链路。

STP的工作过程,我习惯用“选举”来理解:

  1. 选举根桥:所有交换机里,桥ID(优先级+MAC)最小的那个成为根桥。
  2. 选举根端口:每台非根桥上,到根桥路径开销最小的端口。
  3. 选举指定端口:每条链路上,离根桥更近的那个端口。
  4. 阻塞剩余端口:既不是根端口也不是指定端口的,就进入阻塞状态。

端口状态变化有5个:阻塞→监听→学习→转发→禁用。这个过程要30~50秒。嗯,这就是为什么你插上网线后要等一会儿才能上网。

避坑指南: 我曾经在一个数据中心里,因为STP收敛太慢,导致虚拟机迁移时网络中断超过1分钟。后来换用了RSTP(快速生成树),收敛时间缩短到1~2秒。如果你的网络对中断敏感,别用经典STP,直接上RSTP或MSTP。

4.5 本章知识体系总览

下面这张图,把咱们今天讲的核心逻辑串起来了。从帧格式到交换机转发,再到VLAN隔离和STP防环,每一步都是环环相扣的。

以太网协议实战知识体系 以太网协议实战知识体系 以太网帧格式 Ethernet II / 802.3 交换机工作原理 MAC学习 / 转发 / 泛洪 VLAN技术 802.1Q / Access & Trunk 生成树协议(STP) 防环 / 根桥选举 / 端口状态 局域网通信 VLAN隔离 冗余与高可用 💡 学习路径建议 先吃透帧格式 → 理解交换机转发逻辑 → 掌握VLAN隔离 → 最后攻克STP防环。 每一步都是下一步的基础,跳过去后面会补得很痛苦。

4.6 本章小结

以太网协议,看着基础,但坑不少。我见过太多人把帧格式背得滚瓜烂熟,一到排查问题就抓瞎。记住:帧格式是死的,但网络是活的。你真正需要理解的是——交换机怎么用这些字段做决策,VLAN怎么改变广播域,STP怎么在冗余和防环之间找平衡。

下次你在办公室插网线等那几十秒的时候,可以想想:嗯,STP正在选举根桥呢。