以太网帧格式--IEEE802.3
IEEE802.3协议以太网帧格式
字段 |
字段长度(字节) |
说明 |
前导码(Preamble) |
7 |
同步 |
帧开始符(SFD) |
1 |
表明下一个字节为目的MAC字段 |
目的地址(DA) |
6 |
目的设备的MAC物理地址 |
源地址(SA) |
6 |
发送设备的MAC物理地址 |
长度/类型(Length/Type) |
2 |
帧数据字段长度/帧协议类型 |
数据及填充(data and pad) |
46~1500 |
帧数据字段,来自高层数据 |
帧校验序列(FCS) |
4 |
数据校验字段,若发生错误,则丢弃此帧 |
前导码(preamble)
交替的 0 和 1,让接收设备能够跟踪到来的比特流。IEEE802.3由7个8‘b10101010+1个字节SFD
10101010 10101010 10101010 10101010 10101010 10101010 10101010
LSB MSB
由于数据是从低比特开始传送,因此在代码中为方便阅读的前导码数值为56’h55555555555555
帧起始位置分隔符(Start frame delimiter ,SFD)/同步
前导码为 7Byte,而 SFD(同步)为 1Byte。SFD 的值为 10101011,其中最后两个1让接收方能够识别中间的 0 和 1 交替模式,进而同步并检查到数据开头。SFD表示帧数据的开始。由于数据是从低比特开始传送,因此在代码中SFD的数值为8’hD5。
目标地址 (Destination Address, DA)
包含一个 48 位的值,且 LSB(Least Significant Bit,最低有效位)优先。接收方根据 DA 判断到来的分组是否是发送给特定节点的。目标地址可以是单播地址、广播地址或组播 MAC 地址。广播地址全为 1(48’HFFFFFFFFFFFF),广播发送给所有设备,而组播只发送给网络中一组类似的节点。
源地址(Source Address, SA)
SA 是一个 48 位的 MAC 地址,用于标识传输设备,也使用 LSB 优先格式。在 SA 字段中,不能包含广播地址或组播地址。
长度/类型(Length/Type)
若字段值小于或等于16’D1500,则指示帧的有效数据长度。16’D46则表示有效数据为46字节。Length表示的是有效数据长度,并不包含填充(Pading)长度。
如果此字段的值大于或等于16’D1536,则表示MAC客户端协议的以太网类型。
数据以及填充(DATA and Pading)
这是网络层传递给数据链路层的帧,其长度为 46-1500 Bytes。协议规定最小报文64字节(DA(6)+SD(6)+LENTH/TYPE(2)+FCS(4)+DATA and PAD(46)=64),因此当有效数据量(Length)小于46字节时需要用0对数据进行填充,保证数据和填充字段总和不低于46字节,注意,填充0并不会改变Length字段值。
如下图所示,每层数据向下传输时都会进行封装,帧有效数据来源于上级网络层。
帧校验序列(FCS)
FCS 字段位于,用于存储 CRC(Cyclic Redundancy Check,循环冗余校验)结果的帧的帧尾。CRC 是一种数学算法,MAC发送侧(MAC_TX)创建每个帧时都将运行它。MAC接收侧(MAC_RX)接收到帧时以preamble,SFD,DA,SA,Length/Type,DATA and Pading,作为输入数据进行 CRC 计算,计算结果与接收帧的FCS字段比较,结果相同表示帧有效,结果不同接收方认为发生了错误,进而将帧丢弃。
参考资料:
IEEE Std 802.3-2015 IEEE Standard for Ethernet
http://www.cnblogs.com/qishui/p/5437301.html 以太网数据格式与封装解封
百度百科:以太网帧格式
NOTE: 原创文章,禁止转载