Packet Sniffer 是一款专门的协议分析软件,可以对
PHY、
MAC、
NETWORK/SECURITY、
APPLICATION FRAMEWORK和
APPLICATION PROFOCES等各层协议上的信息包进行分析和解码;显示出错的包以及接入错误;指示触发包;在接收和注册过程中可连续显示包,可以利用
Packet Sniffer分析
ZigBee建立网络,加入网络,发送数据,接收数据的过程,需要注意的是,
Packet Sniffer只能起到侦听的作用,即它只能侦听设备发送的数据。
我购买的了三个开发板,只有一个可以做协议分析议,其用法就是在SampleApp例程的基础之上,一个作为协调器,一个作为路由器,另一个做协议的分析议,做分析议的模块要连接PC---仿真器----开发板,然后打开Packet Sniffer软件,在刚打开软件还没有形成网络时会出现下面的分析得到的画面。
![](http://blogimg.chinaunix.net/blog/upfile2/101204155553.jpg)
1 软件介绍
Packet Sinffer侦听到的数据包将被保存在硬件的缓存中,所能保存的数据包总数与数据包的大小和硬盘空间有关。在操作过程中,数据包暂时存放在
RAM中,以减少数据包信息在
GUI上显示时间。下面是
Packet Snifferr 的数据流。具体怎么使用可以查看自带的数据手册。
![](http://blogimg.chinaunix.net/blog/upfile2/101204155636.jpg)
这里就以SampleApp的例程来看看,这个分析议是怎么使用的,首先,介绍一下这个例程的主要功能,这个程序有两个模块组成,也就是最简单的那种,其中一个是协议器,一个是路由器,当两个模块都上电后,如果一切正常的话,绿色的灯会点亮,这时按下路由器上的SW1按键就可以从路由器发送一句话“Welcom to ZigBee!”,这时在按下协调器上的SW1按键就可以发送给路由器发送一条“Thank you!”。当接收到数据时,两个模块的红色灯会闪烁。这就是这个例程经过简单的更改后所具备的功能。
在ZigBee网络中,各个设备都必须在加入网络之后才能完成数据的通信,所以,加入网络是每一个设备的首先要做的。
加入网络如下图所示:
![](http://blogimg.chinaunix.net/blog/upfile2/101204155907.jpg)
在协议分析仪中显示的数据,第2行到第7行是建立一个网络的过程,在这里可以看出在网络层管理实体一旦选择了一个PAN标识符,就会立刻选择一个0x0000的16位网络地址,并且设置MAC层的macShortAddress PIB 属性,使其等于所选择的网络地址。
第8行中,源地址是路由器的物理地址0x1716151413120030,它的PANID没有确定为0xFFFFF,这时的路由器还没有加入网络,所以还没有网络地址,目的地址为协调器的网络地址0x0000,它的PANID为0x0022;它的命令是联合方式加入请求。所以该行表示的意思是向协调器发送联合方式加入请求,发送完成后将得到一个应答,也就是第9行。
收到应答以后,路由器开始加入网络,在收到应答以后,协调器开始为路由器分配网络地址,从第12行可以看出,路由器分配到的网络地址为0x0001。这样就完成了整个建立、加入网络的过程,并分配了各自的网络地址。
下面是NWK层数据包
下面是APS层数据包
数据包第
1行,路由器的网络地址(
0x0001)作为数据源地址发送,目的地址为
0xFFFF表示路由器是以广播的形式发送数据。可以看出该数据包反映路由器广播发送数据。在
APS层中详细列举了剖面
ID(
APS
Profile ID)、串
ID(
APS Cluster ID)、广播深度(
Broadcast Radius)等数据。另外发送的数据也在此项显示。在第一行中的
APS Payload部分就显示了数据帧头加上路由器发送的广播数据,在这里是以
16进制数显示的,在数据包的结尾有
RSSI强度值。
网络层数据包中,体现了在网络层中的数据以及格式,。网络层中也体现了源地址和目的地址与APS层基本相同。它们最大的不同是数据中加入了网络层包,附加了网络层数据。
![](http://blogimg.chinaunix.net/blog/upfile2/101204160008.jpg)
![](http://blogimg.chinaunix.net/blog/upfile2/101204160808.jpg)
我们可以从APS Payload中可以看到从路由器和协调器发出来的数据,这些都是以16进制的形式出现的。在MAC Payload和NWK Payload中可以看到在发送的数据前面,都添加的该层有数据。
![](http://blogimg.chinaunix.net/blog/upfile2/101204160839.jpg)
下面两个是帧控制域中各个位表示的含义:
![](http://blogimg.chinaunix.net/blog/upfile2/101204160906.jpg)
![](http://blogimg.chinaunix.net/blog/upfile2/101204161838.jpg)
![](http://blogimg.chinaunix.net/blog/upfile2/101204161942.jpg)
![](http://blogimg.chinaunix.net/blog/upfile2/101204162120.jpg)
![](http://blogimg.chinaunix.net/blog/upfile2/101204162457.jpg)
![](http://blogimg.chinaunix.net/blog/upfile2/101204162556.jpg)
![](http://blogimg.chinaunix.net/blog/upfile2/101204162622.jpg)
![](http://blogimg.chinaunix.net/blog/upfile2/101204162736.jpg)
![](http://blogimg.chinaunix.net/blog/upfile2/101204162800.jpg)
路由器按下按键SW1以广播的形式发送一串数据“Welcom to ZigBee!”,数据包中的第1行网络地址为0x0001的设备为源地址,即表示发送数据设备的地址,由于是广播发送,所以在发送完成以后,每一个在网络中的设备都能收到数据。在APS层中有一个参数是路由深度为0x0A,所以在协调器收到数据以后,会以路由的方式转发这个数据,数据包显示在第二行就是转发的数据的数据格式,也就是为什么会有两个一样的数据包出现的原因。在协调器收到数据并转发了数据以后,在路由器上按下SW1按键将发送一个应答数据“Thank you!”.