1. MAC 帧
1.1 总览
MAC帧有三种类型:basic, Q-tagged, envelope.
1.2 数据包格式
数据包包含:
1. Preamble, 前导码 , 7 bytes: 101010...1010.
2. SFD(Start Frame Delimiter),1 byte: 10101011
3. DA(Destination Address),6 bytes
4. SA(Source Address),6 bytes
5. Length/Type,2 bytes
6. DATA( MAC client data + pad ) 46-1500 or 1504 or 1982 bytes.
7. FCS( Frame Check Sequence ), 4 bytes
8. Extension( Optional )
Note1: 发送顺序为1-8 ,LSB first in byte
Note2: Frame包括3-7,Packet包括1-8
MA_DATA.request/indication 对应关系:
2. 帧详解
2.1 Preamble
前导码,7 bytes, 用于电路同步
2.2 Start Frame Delimiter (SFD) field
帧起始,10101011
2.3 Address
1. 6 bytes
2. BIT0指示该地址为独立地址或组地址,BIT1指示该地址为本地或全局地址。
3. 地址分类:
a.Individual Address
b.Group Address:Multicast-Group Address and Broadcast Address(all 1)。
对于Broadcast Address(all 1),共享传输媒体的所有站点均会接收。
2.4 Length/Type
a. 若 Length/Type <= 1500(0x05DC),则此field指示Length, 该帧为basic帧;
b. 若 Length/Type >= 1536(0x0600),则此field指示Type
Note:这部分的2个byte,首先传输高位字节
2.5 MAC Client Data
以太网实现必须支持以下三种类型之一的帧(数值表示该类型的最大数据长度):
a. 1500: basic frames
b. 1504: Q-tagged frames
c. 1982: envelope frames
2.6 Pad
Pad可以保证发送帧的最小长度,用于冲突检测(CSMA/CD)的实现。其长度为:
max [0, minFrameSize – (clientDatasize + 2 × addressSize + 48)]
其中最小帧长度一般为46bytes,
46byte的解释可参考:
把Ethernet(以太网)基本工作原理说清楚_ethernet发包流程-CSDN博客
2.7 FCS
CRC运算,输入值包括:DA, SA, Length/Type, DATA, Pad(if exist)
G(x) = x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1
2.8 Extension
扩展字段,不参与CRC计算
3. Bit传输顺序
MAC帧内除FCS外的每个Byte均以LSB fisrt传输。
4.无效帧
无效帧包括三种情形:
1. 实际传输的帧长度与Length段定义的不符;
2. 总长度不以byte为基本单位,即不可整除8;
3. 接收到的CRC值与本地计算值不符
Reference : IEEE802.3