ZigBee的MAC层直接使用了IEEE 802.15.4的MAC层。
MAC子层数据包由MAC子层帧头(MHR,MAC Header)、MAC子层载荷和MAC子层帧尾(MFR,MAC Footer)组成。
2字节 | 1字节 | 0/2字节 | 0/2/8字节 | 0/2字节 | 0/2/8字节 | 可变 | 2字节 |
帧控制 | 序列号 | 目的PAN标示符 | 目的地址 | 源PAN标示符 | 源地址 | 帧载荷 | FCS |
MHR(MAC层帧头) | MAC载荷 | MFR |
图1 MAC层数据包格式
(1).MAC子层帧头由2字节的帧控制域、一字节的帧列号域和最多20字节的地址域组成。帧控制域指明了MAC帧的类型、地址域的格式以及是否需要接收方确认等控制信息;帧序号域包含了发送方对帧的顺序编号,用于匹配确认帧,实现MAC子层的可靠传输;地址域采用的寻址方式可以是64位的IEEE MAC 地址或者8位的ZigBee网络地址。
(2).MAC子层载荷,其长度可变,不同的帧类型包含不同的信息,如MAC子层业务数据单元(MSDU,MAC Service Data Unit);但整个MAC帧的长度应该小于127字节,其内容取决于帧类型。IEEE 802.15.4的MAC子层定义了4种帧类型:广播(信标)帧、数据帧、确认帧和MAC命令帧。只有广播帧和数据帧包含了高层控制命令或者数据,确认帧和MAC命令帧则用于ZigBee设备间与MAC子层功能实体间控制信息的收发。
(3).MAC子层帧尾含有采用16位CRC算法计算出来的帧校验序列(FCS,Frame Check Sequence),用于接收方判断该数据包是否正确,从而决定是否采用ARQ进行差错恢复。广播帧和确认帧不需要接收方的确认;数据帧和MAC命令帧的帧头包含帧控制域,指示收到的帧是否需要确认,如果需要确认,并且已经通过了CRC校验,接收方将立即发送确认帧,若发送方在一定时间内收不到确认帧,将自动重传该帧,这就是MAC子层可靠传输的基本过程。