2、以太网基础:以太网帧格式、MAC地址、帧类型、最小帧长与最大帧长、冲突域与广播域
以太网自1980年由DEC、Intel和Xerox联合推出以来,经过四十余年发展,已成为有线局域网的事实标准。无论是企业接入、数据中心内部互联,还是工业控制网络,以太网帧的封装与解析都是通信的基石。理解以太网帧格式、MAC地址寻址机制、帧长约束以及冲突域与广播域的边界,是后续学习MAC控制器设计、PHY芯片调试以及网络故障排查的前提。本章将从数据链路层的视角,系统拆解这些核心概念,并结合实际抓包与工程场景进行说明。
2.1 以太网帧格式:从DIX到IEEE 802.3
以太网帧格式经历了从DIX Ethernet V2(即Ethernet II)到IEEE 802.3标准的演进。当前实际网络中,DIX V2格式占据主导地位,而802.3格式主要用于LLC(逻辑链路控制)子层封装。两种格式的核心区别在于帧头中第13~14字节的语义:DIX V2将其定义为EtherType(类型字段),用于标识上层协议(如0x0800表示IPv4,0x0806表示ARP,0x86DD表示IPv6);而IEEE 802.3将其定义为长度字段,表示后续LLC数据的字节数。接收端通过判断该字段值来区分两种格式:若值大于等于1536(0x0600),则按EtherType解析;若小于等于1500,则按长度字段处理,并继续解析LLC头(DSAP、SSAP、Control)。
一个完整的以太网帧包含以下字段:前导码(7字节,用于接收端时钟同步)、帧起始定界符SFD(1字节,值为0xAB)、目的MAC地址(6字节)、源MAC地址(6字节)、类型/长度(2字节)、载荷(46~1500字节)、帧校验序列FCS(4字节,使用CRC-32算法)。前导码与SFD在物理层被剥离,不参与MAC层的FCS计算。FCS的校验范围覆盖从目的MAC到载荷末尾的所有字节,接收端若计算出的CRC与帧尾FCS不匹配,则丢弃该帧并统计为CRC错误。
2.2 MAC地址:单播、组播与广播
MAC地址(Media Access Control Address)是数据链路层的硬件标识,长度为48位,通常表示为六组十六进制数,如 00:1A:2B:3C:4D:5E。前24位为OUI(组织唯一标识符),由IEEE分配给设备厂商;后24位为NIC(网络接口控制器)特定标识,由厂商自行分配。MAC地址的第1字节最低位(bit0)用于区分单播(0)与组播(1),第1字节次低位(bit1)用于区分全局唯一(0)与本地管理(1)。
目的MAC地址决定帧的接收方式:单播帧发往唯一目标设备,网卡通过地址过滤仅接收与自己MAC匹配的帧;组播帧发往一组设备,IPv4组播MAC范围为01:00:5E:00:00:00~01:00:5E:7F:FF:FF,IPv6组播MAC固定以33:33开头;广播帧目的MAC为FF:FF:FF:FF:FF:FF,所有同网段设备必须接收并处理。源MAC地址始终为单播地址,不会出现组播或广播源。
| 地址类型 | 目的MAC特征 | 处理方式 | 典型应用 |
|---|---|---|---|
| 单播 | bit0=0 | 仅匹配设备接收 | 正常数据通信 |
| 组播 | bit0=1 | 加入组播组的设备接收 | 视频会议、OSPF、VRRP |
| 广播 | FF:FF:FF:FF:FF:FF | 同广播域所有设备接收 | ARP请求、DHCP发现 |
在MAC控制器设计中,接收过滤器通常包含三种模式:直接匹配(单播)、哈希过滤(组播)和广播接收使能。对于嵌入式系统,若不需要组播功能,可关闭哈希过滤以节省资源;但需注意,IPv6邻居发现协议依赖组播,若关闭将导致IPv6通信异常。
2.3 帧类型与上层协议解复用
EtherType字段不仅用于区分帧格式,更关键的作用是协议解复用——接收端根据该字段将帧载荷交给对应的上层协议栈处理。常见EtherType值包括:0x0800(IPv4)、0x0806(ARP)、0x86DD(IPv6)、0x8100(VLAN Tag)、0x88A8(运营商骨干桥接QinQ)、0x88CC(LLDP)、0x88F7(PTP精确时间协议)。当帧携带VLAN Tag时,实际EtherType被后移4字节,原始类型字段变为0x8100,紧随其后的2字节为TCI(Tag Control Information),包含优先级、CFI和VLAN ID。
对于长度字段格式的802.3帧,解复用需通过LLC头的DSAP/SSAP完成。例如,IP协议封装在802.3+LLC中时,DSAP/SSAP均为0xAA,Control为0x03,SNAP头中再携带EtherType。这种封装在传统令牌环网中常见,但在以太网中极少使用。实际工程中,绝大多数设备仅支持DIX V2格式,因此MAC控制器设计时通常只需解析EtherType即可。
2.4 最小帧长与最大帧长:CSMA/CD与缓冲区的约束
最小帧长64字节(不含前导码与SFD)是CSMA/CD(载波侦听多路访问/冲突检测)协议的核心参数。在半双工以太网中,发送站必须在发送完整个帧之前检测到冲突。假设网络直径为D(单位:米),信号传播速度为0.65c(约2×10^8 m/s),则冲突检测窗口为2D/v。为保证发送站能检测到最远端的冲突,帧发送时间必须大于该窗口。对于10Mbps以太网,最大网络直径为2500米(含中继器),往返传播时间约50μs,加上中继器延迟,冲突窗口约为51.2μs。在10Mbps下,51.2μs可发送512bit,即64字节。因此,最小帧长被定义为64字节。若上层数据不足46字节,MAC层需填充(Padding)至最小长度。
最大帧长1518字节(不含前导码与SFD)主要受限于FCS的CRC-32校验能力、接收缓冲区大小以及介质访问公平性。CRC-32的检错能力与帧长相关,帧越长,未检出错误的概率越高。此外,过长的帧会占用信道时间,影响其他站点的发送时延。对于支持Jumbo Frame(巨型帧)的千兆/万兆以太网,最大帧长可扩展至9000字节或更高,但需所有链路设备(交换机、网卡)同时启用,否则会导致分片或丢包。
// 最小帧长计算示例(10Mbps半双工)
// 冲突窗口 = 2 * 网络直径 / 信号速度
// 网络直径 = 2500m,信号速度 = 2×10^8 m/s
// 冲突窗口 = 2 * 2500 / 2e8 = 25μs
// 加上中继器延迟约 26.2μs,取整为 51.2μs
// 最小帧长 = 51.2μs * 10Mbps = 512bit = 64字节
在全双工模式下,由于发送和接收使用独立信道,不存在冲突,因此最小帧长限制可以放宽。但为了兼容性和简化设计,IEEE 802.3仍要求全双工链路保持64字节最小帧长。对于MAC控制器,发送路径需自动填充短帧至64字节,接收路径需丢弃小于64字节的Runt帧(超短帧)。
2.5 冲突域与广播域:网络边界与隔离
冲突域是指可能发生帧冲突的物理区域。在共享式以太网(使用集线器Hub)中,所有端口处于同一冲突域,任意时刻仅允许一台设备发送数据。交换机(Switch)的每个端口独立冲突域,因为交换机内部通过MAC地址表进行帧转发,端口间不共享信道。全双工链路中,发送与接收分离,冲突域概念不再适用。
广播域是指广播帧能够传播到的逻辑范围。交换机转发广播帧到所有端口(除接收端口外),因此默认情况下,交换机的所有端口属于同一广播域。路由器(Router)不转发广播帧,因此每个路由器接口隔离一个广播域。VLAN(虚拟局域网)技术可在交换机上划分多个广播域,每个VLAN对应一个独立的二层网络。
| 设备 | 冲突域数量 | 广播域数量 | 说明 |
|---|---|---|---|
| 集线器Hub | 1 | 1 | 所有端口共享带宽 |
| 交换机Switch | 每端口1个 | 默认1个 | 可配置VLAN划分广播域 |
| 路由器Router | 每接口1个 | 每接口1个 | 隔离广播域 |
在工程实践中,广播域过大会导致广播风暴,消耗CPU资源。例如,一个包含500台主机的广播域,ARP请求和NetBIOS广播会频繁打断所有网卡的中断。解决方案包括:划分VLAN、使用三层交换机进行VLAN间路由、部署组播协议替代广播。
2.6 实战场景:利用帧格式分析定位网络故障
某企业局域网中,用户反馈无法访问文件服务器(IP: 192.168.1.10),但可以正常访问互联网。网络拓扑为:核心交换机(三层)连接接入交换机,接入交换机连接终端PC。初步排查思路如下:
- 抓包分析:在PC上使用Wireshark抓取访问文件服务器时的流量。发现PC发出ARP请求(广播帧,目的MAC为FF:FF:FF:FF:FF:FF),但未收到ARP应答。
- 检查MAC地址表:登录接入交换机,执行
show mac address-table,发现文件服务器对应的MAC地址不在表中,说明服务器可能未发送任何帧,或连接端口异常。 - 检查端口状态:查看服务器所连端口状态,发现端口处于err-disable状态(可能因STP或安全策略导致)。执行
show interface status确认端口被关闭。 - 恢复与验证:手动启用端口
interface gi0/1→no shutdown,并检查服务器网卡是否正常。重新抓包,确认ARP请求得到应答,文件访问恢复。
此案例中,帧格式分析帮助快速定位问题:ARP请求作为广播帧被交换机泛洪到所有端口,但服务器端口处于err-disable状态,导致请求无法到达服务器。通过检查MAC地址表与端口状态,避免了盲目重启设备。
2.7 常见误区与总结复盘
关于以太网基础,工程师常存在以下误区:
- 误区一:认为最小帧长是64字节,但忽略了前导码。实际上,64字节不包含前导码和SFD,但包含FCS。若将前导码计入,总长度为72字节(10Mbps下)。
- 误区二:混淆冲突域与广播域。交换机隔离冲突域但不隔离广播域;路由器隔离广播域。VLAN可在交换机上划分广播域,但VLAN间通信需三层路由。
- 误区三:认为全双工链路没有帧长限制。虽然全双工无冲突,但最小帧长仍为64字节,最大帧长仍为1518字节(标准以太网),以保证兼容性。
- 误区四:忽略EtherType与长度字段的区分。当EtherType值在1501~1535之间时,属于保留值,不应出现在标准网络中。若抓包发现该值,可能表示帧格式异常或厂商私有协议。
总结而言,以太网帧格式是数据链路层的核心规范,MAC地址提供寻址能力,帧类型实现协议解复用,帧长约束平衡了性能与可靠性,冲突域与广播域定义了网络边界。在实际工程中,掌握这些基础概念能够帮助工程师快速定位链路层故障,并为后续学习MAC控制器寄存器配置、PHY芯片调试以及VLAN/STP等高级特性打下坚实基础。