IEEE802.15.4工作组致力于无线个人区域网络(wireless personal area network, WPAN)的标准化工作,制定的IEEE802.15.4标准规定了WPAN网络的物理层(PHY)和媒体访问层(MAC)
那么接下来的物理层和mac层都是以IEEE802.15.4标准来学习的。
文档下载路径在:https://download.csdn.net/download/tainjau/10578440,里面包含了上述文档和zigbee网络层应用层的资料。
zigbee相关文章链接:
【ember zigbee】zigbee协议栈相关文档学习笔记系列
1、PHY层
PHY层的数据包分为SHR,PHR和PHY Payload
SHR(Synchronization Header):用于同步数据的
PHR(Physical Header):包含了帧长度信息
PHY Payload:包负载,即实际内容(发送给接受设备的数据和命令)
2、MAC层
MAC Frame定义了四种结构如下:
信标帧、数据帧、应答帧和MAC命令帧。
帧类型是由MAC层前面的Herder中的2个字节的FrameControl来决定的。
除此之外,FrameControl控制字段还有其他用途,相应位代表的意思如下:
其中:第0-2位表示帧类型:000:信标帧、001:数据帧、010:应答帧、011:命令帧。
第3位表示安全使能:体现在该帧是否有密锁保护MAC的有效载荷。
第4位表示数据待传:1:表述当前数据还没传输完成,发送端还要接着传输数据给接收 端,因此接受设备还需要发送请求来获取数据。
第5位表示确认请求:1:表示接受设备在接受到该帧的时候,需要回复一个确认帧来表述接收到数据。
第6位表示网内/网际:表示是否在同个PAN网络中传输数据。
第10-11位和14-15为表示目的/源地址模式,00:没有目的地址,01:预留,10:16位的短地址,11:64位的长地址。
2.1、Beacon frame
其中Beacon Payload对于NWK层是可选域。
简单来说,信标帧用于同步网络中的设备。在信标网络中,协调器通过向网络中的所有从设备发送信标帧,以保证这些设备能够同协调器进行同步(同步工作和同步休眠),以达到网络功耗最低(非信标模式只允许ZE进行周期性休眠,ZC和所有ZR必须长期处于工作状态)。
这里我截取一段抓包器抓到的beacon包的数据,可以看到超帧描述(superframe specification)、保护时隙域(GTS Fields)和未处理地址区域(Pendling Address Filelds)这几个区域还是有很多细节要讨论的,这里我现在也不是很了解,留在将来学习吧。
2.2、Data frame
下图是MAC层数据协议单元(MPDU)的通用帧格式。 数据帧由高层(应用层)发起,在ZigBee设备之问进行数据传输的时候,要传输的数据由应用层生成,经过逐层数据处理后发送给MAC层,形成MAC层服务数据单元(MSDU)。通过添加MAC层帧头信息和帧尾,便形成了完整的MAC数据帧MPDU,其帧结构如下图所示。
2.3、Ack frame
最简单的MAC帧,不包含任何Payload,向发送设备表示已经正确的接收了相应的信息。Ack帧非常小,只有5个字节。
还记得之前提到过的FrameControl控制段中的第5位表示确认请求位吧。这位如果被设置成1时,那么接收端收到之后,就需要回复一个ack,来表述接受到数据了。
看一下Ack的数据帧
2.4、MAC Command Frame
Mac命令帧是细化了通用MAC帧的帧载荷域,是这几种帧格式中较为复杂的
在ZigBee网络中,为了对设备的工作状态进行控制,同网络中的其他设备进行通信,MAC层将根据命令类型生成相应的命令帧。
区别命令帧的关键在于命令帧标识符(command Type)描述如下:
由于每个命令帧后面的载荷所携带信息不同,这里我就不做一一记录了。关于物理层和MAC层,还是基于《IEEE Std 802.15.4-2003》文档。
将来还是得买一本关于这类的书来学习比较稳妥。