简介
此文主要配合Wireshark实际抓包配合来讲解Zigbee的数据结构来加深认识,但是实际抓包未能抓全所有数据类型,有待补充。
ZigBee是一种新兴的短距离、低速率无线网络技术。ZigBee技术的命名主要来自于人们对蜜蜂采蜜过程的观察,蜜蜂在采蜜过程中,其舞蹈轨迹像跳着“Z”的形状,由于蜜蜂自身体积小,所需要的能量小,又能传送所采集的花粉,因此,人们用ZigBee技术来代表具有成本低、体积小、能量消耗小和传输速率低的无线通信技术,中文译名通常称为“紫蜂”技术。
物理层(PHY)
IEEE802.15.4协议的物理层是协议的最底层,承担着和外界直接作用的任务。它采用扩频通信的调制方式,控制RF收发器工作,信号传输距离约为50m(室内)或150m(室外)。
两个PHY层,提供两个独立的频率段:868/915MHz和2.4GHz。
1)2.4 GHz频段
该频段为全球统一无需申请的IsM频段,有助于ZigBee设备的推广和生产成本的降低。该频段物理层通过采用高阶调制技术,并用码片长度为8的伪随机码直接扩频,可获得更高的吞吐量、更小的通信时延和更短的工作周期,从而更省电。
2)868/915 MHz频段
为了避免干扰,欧洲采用868 MHz频段,美国采用915 MHz频段作为ZigBee的工作频段。这两个频均均采用了差分编码的二进制移相键控(BPSK)调制,用码片长度为15的M序列直接扩频。由于频段比较相近,对信号合成器的程序稍作改动,就可使用相似的硬件,从而降低生产成本。
物理帧格式:
前导码 |
起始分隔符 |
物理头端 |
物理服务数据单元(PSDU) |
前导码(4字节):用于符合同步。
起始分隔符(1字节):用于帧同步。
物理头端(1字节):指定了物理服务数据单元的长度。
物理服务单元(<=127字节):用于负载数据,与以太网帧相比,属于低数据量。
媒体访问控制层(MAC)IEEE 802.15.4
遵循IEEE802.15.4协议,负责设备间无线数据链路的建立、维护和结束,确认模式的数据传送和接受,可选时隙,实现低延迟传输,支持各种网络拓扑结构,网络中每个设备为16位地址寻址。
- 产生网络信标
- 网络中设备与信标保持同步
- 支持PAN的连接和断开连接
- 网络安全控制
- 利用CSMA—CA机制进行信道接入控制
- 处理和维持GTS(Guaranteed Time Slot)机制
- 在两个对等的MAC实体间提供可靠的链路连接
网络协调器(coordinator):
全功能设备(FFD,Router):可以支持任何一种拓扑结构,可以作为网络协商者和普通协商者,并且可以和任何一种设备进行通信,也叫路由节点
精简功能设备(RFD):支持量型结构,不能成为任何协商者,可以和网络协商者进行通信,实现简单。
MAC报头包含目前要发送的消息的MAC 帧控制字段、信标*** (Beacon Sequence Number, BSN)和寻址信息。注意,如果消息是经由路由发送的,它可能未反映消息的实际源地址或最终目标地址。该报头的产生和使用对应用程序代码来说是透明的。
数据传输模型
设备到网络协调器
网络协调器到设备
点对点对等传输
帧结构定义
信标帧
帧控制域 |
*** |
地址域 |
附加安全头部 |
超帧描述 |
GTS分配释放信息 |
转发数据目标地址信息 |
帧负载 |
FCS |
超帧字段:持续时间,活跃部分持续时间,竞争访问时段持续时间;
GTS分配释放信息:将无竞争时段划分为若干个GTS,并把每个GTS具体分配给某个设备;
转发数据目标地址:列出了与协调者保存的数据相对应的设备地址;
信标帧负载数据:为上层协议提供数据传输接口。
数据帧
帧控制域 |
*** |
地址域 |
附加安全头部 |
数据帧负载 |
FCS校验 |
传输上层发送到MAC子层的数据;
MAC服务数据单元:数据负载传送至MAC子层;
MAC帧:MAC服务数据单元+MHR头信息+MFR尾信息。
确认帧
帧控制域 |
*** |
FCS |
命令帧
帧控制欲 |
*** |
地址域 |
附加安全头部 |
命令标志符 |
命令帧负载 |
FCS |
命令帧用于组建PAN,传输同步数据等;
命令帧有9种类型;
0x01 |
Association Request |
0x02 |
Association Response |
0x03 |
|
0x04 |
Data Request |
0x05 |
Data Response |
0x06 |
Beacon Request |
0x07 |
Beacon Response |
命令帧的功能:把设备关联到PAN,与协调器交换数据,分配GTS;
命令帧的具体功能由帧的负载数据表示。
网络层(NWK)
作用:建立新的网络、处理节点的进入和离开网络、根据网络类型设置节点的协议堆栈、使用网络协调器对节点分配地址、保证节点之间的同步、提供网络的路由。
网络层数据实体(NLDE)
提供数据服务,以允许一个应用在两个或多个设备之间进行传输应用协议数据(APDU);
- 通用的网络层协议数据单元(NPDU)
- 特定的拓扑路由(星形、网状、簇状网络)
网络层管理实体(NLME)
- 配置一个新设备
- 开始一个网络
- 加入或离开一个网络
- 分配地址
- 邻街表发现
- 路由的发现
- 接收控制
网络层帧结构
网络层广播包
网络层信标包
网络层数据包
网络层命令帧
未捕获完全,待补充。
Command Identifier |
Command Frame |
Command Option |
0x00 |
|
|
0x01 |
Route Request |
|
0x02 |
|
|
0x03 |
|
|
0x04 |
|
|
0x05 |
Transport Key |
|
0x06 |
|
|
0x07 |
|
|
0x08 |
|
|
0x09 |
|
|
0x0a |
|
|
0x0b |
|
|
0x0c |
End Device Timeout Response |
|
|
|
|
|
|
|
|
|
|
应用层(APL)
应用层主要根据具体应用并由用户开发,功能为发现该器件工作空间中其他器件的工作,并根据服务和需求在多个器件之间进行通信。
应用支持子层(APS)
作用包括维护绑定表(绑定表的作用是基于两个设备的服务和需要把它们绑定在一起)、在绑定设备间传输信息,定义一个设备的作用、发现网络中的设备并确定它们能提供何种服务、起始或回应绑定需求以及在网络设备中建立一个安全的连接。
Command |
描述 |
参数 |
0x00 |
Read Attributes |
|
0x01 |
Read Attributes Response |
|
0x02 |
Write Attributes |
|
0x03 |
|
|
0x04 |
Write Attributes Response |
|
应用层框架(APF或AF)
是应用设备和ZigBee设备连接的环境。
ZigBee设备对象(ZDO)
作用初始化应用支持子层、网络层和安全服务文档;从终端应用中集合配置信息来确定和执行发现、安全管理、网络管理以及绑定管理。