ZigBee协议层次分析总结
ZigBee协议层次及结构
图1 ZigBee帧结构
ZigBee物理层
ZigBee物理层协议数据单元(PPDU)又称物理层数据包,其格式如图所示。
4字节1字节1字节可变
前同步码帧定界符帧长度
(7位)
保留位
(1位)
PSDU
同步包头物理层包头物理层载荷
表1 物理层帧结构
1、前同步码
接收设备根据接收的前同步码获得同步信息,识别每一位,从而进一步区分出“字符”。IEEE802.15.4规定前同步码由32个0组成。
2、帧定界符
帧定界符(SFD)用来指示前同步码结束和数据包的开始,由1字节组成,其值用二进制表示为11100101
3、物理层帧首部
物理层帧首部由1字节组成,其中的7位用来表示帧的长度,即有效载
4、PSDU域
PSDU是物理层携带的有效载荷,也就是欲通过物理层发送出去的数据。PSDU 的长度为0~127字节。当长度值等于5字节或大于7字节时,PSDU是MAC 层的有效帧。
ZigBee MAC层
一个完整的MAC层帧由帧首部、帧载荷(即数据)和帧尾3部分构成。其
中帧首部又有若干个域按一定顺序排列,但并不是所有的帧中都包含有全部的域。MAC层的帧结构如下图所示。由图可知,帧首部有帧控制域、序列号、地址域等,其中地址域又包含目的PAN(个人区域网)标识符、目的地址、源PAN标识
表3 MAC层帧结构
1、帧控制域
帧控制域的长度为16位,其结构如下表所示。
(1
表5 帧类型子域描述
(2)安全允许控制(Security Enabled)子域的长度为1位,如果该位置1,则对该帧按预定的方案进行加密处理后再传送到物理层;为0时,不
进行加密处理。
(3)未处理数据标记(Frame Pending)子域的长度为1位,如果该位置1,则表示除该帧的数据外,本设备中还有应发送给对方的数据。因此,
接收该帧的设备应向发送方再次发送请求数据命令,直到所有的数据
都传送完。若发送设备中已没有要发送给接收方的数据,则该位为0.
(4)请求确认(Ack Request)子域的长度为1位,置1时,接收方接收到有效帧后应向发送方发送确认帧;为0时接收方不需要发送确认帧。
(5)PAN内部标记(Intra PAN)子域的长度为1位,置1时,表示该MAC 帧在本身所属的PAN内传输,这时帧的地址域中不包含源PAN标识符;
为0时,表示该帧是传输到另外一个PAN,帧中必须包含源和目的的
PAN标识符。
(6)目的地址模式(Dest Addressing Mode)子域的长度和源地址模式(Source Addressing Mode)子域的长度均为2位,表示的意义如表所
示。
表6 地址模式
2、序列号子域
帧序列号子域的长度为8位,它是帧的唯一序列标识符。在协议栈初始化时,软件将它们置为随机的值,在通信过程中,每生成一个帧,其相应的序列号加1,并将其值插入到帧的序列号子域。如果需要确认,则接收方将接收到的数据帧或者命令帧中的序列号作为确认帧的序列号。如果发送方在规定的时间里没有接收到对方的确认,则发送方使用原来的序列号重新发送该帧。可见,接收方可以根据帧中的序列号来判断接收的帧是否是新的。3、目的PAN标识符子域
目的PAN标识符子域的长度为16位,它是接收该帧的设备所在PAN的唯一标识符。当标识符的值为0xFFFF时,代表该帧为广播方式,即在同一信道上的所有设备都可以接收该帧。仅在帧控制子域的目的地址模式为非00时,本子域才存在。
4、目的地址子域
该地址是接收帧设备的地址。根据帧地址控制子域不同的情况,目的地址为16位或64位。地址0xFFFF是广播地址。同样,仅在帧控制子域的目的地址模式为非00时,本子域才存在。
5、源PAN标识符子域
源PAN标识符子域的长度为16位,它是发送该帧的设备所在PAN的唯一标识符。仅在帧控制子域的源地址模式为非00和内部PAN标记位为0时,本子域才存在。PAN标识符在PAN建立时有PAN协调器确定,若与其他的PAN标识符冲突,协调器应能自行解决。
6、源地址子域
该地址是帧发送设备的地址。与目的地址子域相同,根据帧地址控制子域不同的情况,源地址为16位或64位。同样,仅在帧控制子域的源地址模式为非00时,本子域才存在。
7、帧有效载荷
帧有效载荷即帧传送的数据,其长度视具体帧而定,最长为最长物理帧长度减去MAC帧头长度。
8、帧校验子域
帧校验子域包含一16位的CRC校验码。校验码包含对帧头和载荷部分的校验。
ZigBee网络层
网络帧通用结构与一般的帧结构类似,由帧首部和有效载荷部分组成,如表
表7 网络层帧通用结构
1、帧控制域
帧控制域长度为16位,其中包含了帧的类型、地址、序列号及其他一些信息。其结构如表8所示。
表8 帧控制域结构
(1)帧类型子域
帧类型子域长2位,取值为0x00代表数据帧,取值为0x01则代表命令帧,其他值目前保留不用。
(2)协议版本子域
协议版本子域长4位,其值代表了所实现的ZigBee协议的版本。
通常该值保存在网络层常量nwkcProtocolVersion中,目标ZigBee协议
的版本为0x01。
(3)发现路由子域
表9 发现路由子域
(4)安全子域
安全子域长1位,当需要对网络层帧进行安全处理时,应将该子域置1。
2、目的地址域
目的地址域长度为2字节,其值为16位的目的设备网络地址,它就是目的设备MAC层的IEEE802.15.4的网络地址,或者是广播地址0xFFFF。
3、源地址域
源地址域是发送帧的设备的地址,与目的地址域相似。
4、广播半径域
广播半径域总是存在,长度为1字节。其值规定了广播帧的传输范围。
在传输时,每个设备接收一次广播帧,并将该域的值减1。
5、广播序列号域
序列号域在每一个帧中都存在,其长度为1字节。设备每发送一个新的帧,该值会加1.通常帧的序列号与它的源地址域一起用来唯一识别一个帧,以避免1字节长序列号会产生的混淆。
6、帧载荷域
帧载荷的长度可变,是帧传送的数据。
数据帧的结构与通用帧结构完全相同。其帧控制域的类型子域应为0x00,以表