lesson6 ZIgbee网络特性抓包分析

目录

ZIgbee网络特性抓包分析

理论部分:

实验部分:

入网前相关数据帧(仅单个设备供电):

首先以路由器和协调器为例:(帧的类别从头部的Type可以看到,在四大帧类别中根据不同作用也可以细分为不同的帧)

再看终端的入网过程:


ZIgbee网络特性抓包分析

理论部分:

1、很多同学学完Zigbee之后,对它的印象仅仅是能够做单播和广播实验,为什么对无线局域网,脑海中没有太多的概念?

原因是对Zigbee网络的组建过程,以及网络工作时ZIgbee无线模块在空气中数据交换过程没有太多的了解。

2、在ZIgbee无线局域网里,节点(无线模块)按照在网络里的功能来划分,可分为:协调器、路由器和终端。(它们的硬件可以一模一样,之所以在网络中表现的功能不同,是因为下载了不同功能的代码)。我们说一个模块到底是协调器、路由器还是终端,前提是它必须在一个Zigbee无线局域网里,如果它还没有入网,那么它仅仅是一个下载了相应功能代码的模块而已。

3、下载了路由器和终端代码的模块,上电后第一件事是去寻找网络,请求加入;

网络是不会平白无故产生的,所以创建网络的工作由下载了协调器代码的模块来完成,下载协调器代码的模块上电后的第一件事就是去创建网络。

4、协调器的一般工作过程:下载了协调器功能的模块,上电之后的第一件事是创建网络,创建网络成功后,成为网络中的一个节点,等待路由器和终端模块节点的加入。

因此可以确定知识点:任何一个Zigbee无线局域网中诞生的第一个节点一定是该网络的协调器;一个网络里有且只有一个协调器。

而确定一个网络有没有创建成功,它的本质就是确定下来PANID(个域网ID),并且协调器的地址0x0000确定下来(地址2个字节,且协调器地址必须为0x0000)。只有PANID和协调器地址确定好,无线局域网才创建完毕。

5、任何一个ZIgbee模块要加入某个网络,一定要一个处于该网络里的节点作为介绍人,并且这个介绍人不能是终端节点。在加入网络以后,介绍人节点和被介绍加入的节点互为父子关系,介绍人节点是被介绍加入节点的父节点,被介绍加入节点是介绍节点的子节点。

6、当被加入节点有多个介绍人可以选择加入的时候,根据相对于被加入节点的信号强度等一些其它的参数,选择最佳的介绍人节点加入。

7、例子分析:现在有三个模块,如图所示

如果A模块没有上电,B和C模块上电后,就会一直寻找网络请求加入。直到A模块上电,A模块就会创建网络,然后确定下来这个网络的PANID,把自身的地址变为0x0000,将网络创建成功。网络一旦创建成功以后,B和C就会加入到网络中去。

加入的过程有两种情况:

  • 下载了终端代码的模块C先入网,C只能选择A作为它的父节点,A和C互为父子关系,C是A的子节点。又由于终端节点不能够作为父节点,因此当B入网之后,只能选择A作为父节点,A和B也互为父子关系。此时网络拓扑结构如图所示

  • 下载了路由器代码的模块B先入网,B只能先选择A作为它的父节点。而当终端模块C加入网络后,C可以有两种选择,既可以选择A作为它的父节点,也可以选择B作为它的父节点。C实际中选择谁作为父节点,要看A模块和B模块谁的数据信号更强,C会选择数据信号较强的那个模块作为父节点。

8、如果两个节点不在同一个局域网里,即使距离隔得再近,也无法进行通信。

9、ZIgbee网络组建后,网络里的节点可以进行相互通信,数据通信的方式有4中

  • 单播
  • 广播
  • 组播
  • 绑定

实验部分:

入网前相关数据帧(仅单个设备供电):

  • 路由器:

路由器在入网前,一直发送信标请求帧,它的作用是让在它附近的所有具备介绍人资格的节点都回复信标帧,这些返回的信标帧被这个想要加入的无线模块拿到,通过这些信标帧选出最佳介绍人节点,请求加入。

  • 终端:

它在入网前的行为和下载了路由器代码的模块在入网 前的行为是一样的。

  • 协调器:

上电后先发送了一帧信标请求帧,发送这一帧也会得到周围具备介绍人资格的节点回复信标帧,但是协调器拿到这些信标帧,是用来判断周围的环境情况,为创建网络做准备(当收到来自周围模块的信标帧后,就会判断周围有哪些局域网,从而不会创建重名的PANID)。

当协调器创建成功以后,就会发送一个数据帧,这个帧里面可以看到协调器的地址0x0000,以及PANID。可以把这个帧叫做网络连接状态帧。

第二个帧有点长,我这里分开来截

入网后到稳定工作相关数据帧:

入网只针对终端和路由器,事先保证协调器上电完毕。

首先以路由器和协调器为例:(帧的类别从头部的Type可以看到,在四大帧类别中根据不同作用也可以细分为不同的帧)

  • 第一帧:协调器模块发出的网络连接状态帧,表明协调器稳定工作,与路由器入网无关
  • 第二帧:路由器模块发出的信标请求帧,用于发现周围的网络,请求加入
  • 第三帧:协调器模块发出的信标帧,路由器模块在拿到这一帧之后可以得到协调器模块相对于它自己的信号强度,判断是不是最佳介绍人。
  • 第四、第五帧,第六、第七帧是在重复第二和第三帧的工程(这样重复收发三次是协议栈设置规定好的,用于提高通信正确率)

可以发现到此,路由器的信标请求帧都是广播信号(目标地址为0xFFFF)

补充:

在Zigbee网络里,如果一个模块发出来的射频帧,非常明确地指定接收目标节点的地址,那么目标节点在接收到这个帧以后,会自动回复一个ACK,表明已经收到。

TI在每一个CC2530芯片出厂的时候,在FLASH上固化了一个8个字节编号唯一的值,这个值是这颗芯片的物理地址,也叫MAC地址或IEEE地址。

  • 第八帧:路由器模块发送给协调器模块,这个帧的作用是:在前面路由器模块收到协调器模块发送的信标帧,路由器通过信标帧判断得到协调器是当前自己的最佳介绍人。路由器模块通过发送这一个帧来高速协调器,你是我当前的最佳介绍人,请你充当我入网的介绍人并介绍我入网,在这个帧中还携带了自己的MAC地址。这个MAC地址是介绍人模块(协调器模块)给被介绍人模块(路由器模块)来分频其网络地址的依据。
  • 第九帧:协调器模块硬件回复给路由器模块的ACK,表明协调器模块已经收到了路由器发过来的请求帧
  • 第十帧:路由器发给协调器模块的帧,请求协调器,把根据前面发送的MAC地址分频好的网络地址发给路由器。这是一个数据请求帧。
  • 第十一帧:协调器模块硬件回复给路由器的ACK,表明收到了路由器的请求。
  • 第十二帧:协调器把为路由器分配好的网络地址发给路由器。这个帧需要非常明确地发给路由器,但是路由器模块还不知道自己的网络地址是多少,所以在指定目标地址的时候用MAC地址。
  • 第十三帧:在路由器模块根据自己的MAC地址收到了协调器发过来分频给自己的网络地址,硬件自动回复ACK,表明自己已经收到
  • 第十四帧:路由器模块发送的入网宣告帧,目的是高速当前网络里的所有节点,我入网了,我的网络地址是0xE9EB。
  • 第十五帧:协调器模块在收到了路由器模块发出的入网宣告帧后,将内容进行转发
  • 第十六、十七帧是协调器模块和路由器模块在工作稳定时,发出的网络连接状态帧

补充:协调器和路由器在入网后,稳定工作的行为是,每隔一段时间发送一次网络连接状态帧,默认是15s一次,时间可通过代码设置调整。

再看终端的入网过程:

入网过程,终端和路由器所有的行为都是一样的。入网稳定后的行为从第十六帧开始一直重复向父节点发送状态。

第十六帧:终端节点发送给它的父节点协调器的数据请求帧,为了告诉它的父节点,我还在线。

第十七帧:协调器在收到终端发送来的帧,硬件自动回复的ACK

补充:

当协调器和路由器入网后,终端入网后的通信数据包如下:

此时终端发送请求信标帧,会同时收到协调器和路由器的信标帧,然后最终会根据谁的信号强来选择谁作为父节点(一般模块离得越近,信号也会越强)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/3171.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java POI (2)—— Excel文件的上传与导出(实例演示)

一、单文件的上传功能 这里是一个demo的流程图,下面按照这个流程图做了一个简单的实现,有部分判断没有加上,实际操作中,可以根据自己的需求进行增加或者修改。并且此处还是在接受文件传入后将文件进行了下载,保存到本地…

分类预测 | MATLAB实现GA-LSTM遗传算法优化长短期记忆网络的数据多输入分类预测

分类预测 | MATLAB实现GA-LSTM遗传算法优化长短期记忆网络的数据多输入分类预测 目录 分类预测 | MATLAB实现GA-LSTM遗传算法优化长短期记忆网络的数据多输入分类预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 MATLAB实现GA-LSTM遗传算法优化长短期记忆网络的数据多…

douyin23.9 deviceid和iid设备注册分析

使用23.9版本进行注册(版本多少 其实没有那么重要) 老生常谈,老规矩注册接口device_register不能少吧,然后要检测设备app_alert_check吧,之后要发app_log日志包吧。 当然除了只有这些接口肯定是不行啦,加密…

蓝牙资讯|未来几年物联网迅猛发展,蓝牙发挥重要作用

IDC预测,2023年全球物联网(IoT)支出将达到8057亿美元,比2022年增长10.6%。物联网生态系统的投资预计将在2026年超过1万亿美元,在2023-2027年的预测期内,复合年增长率(CAGR)为10.4%。 到2023年,物联网服务将成为最大的…

【Java EE】-博客系统二(前后端分离)

作者:学Java的冬瓜 博客主页:☀冬瓜的主页🌙 专栏:【JavaEE】 分享: 徘徊着的 在路上的 你要走吗 易碎的 骄傲着 那也曾是我的模样 ——《平凡之路》 主要内容:显示用户信息、上传头像、新增博客、删除博客、修改博客…

Java HelloWorld

一、java命令 目录 一、java命令 二、Java HelloWorld 1.单个java文件 2.单个包多java文件 3.多个包 三、jar包 1.生成jar包 2.引用jar包 三、IntelliJ IDEAMaven HelloWorld 四、IntelliJ IDEAMavenspringboot HelloWorld javac:将.java文件编译成.clas…

设计模式篇(Java):适配器模式

设计模式篇(Java):建造者模式 八、适配器模式 8.1 适配器模式基本介绍 生活中的适配器例子 比如生活中的插座,在不同国家插座有着不同的规格,如果我们从一个国家去另外一个国家需要使用插座时就需要一个中间转换器把两种不同规则的插座适配一…

Spring Security系列之基础概念

文章目录 基本原理Authentication接口UserDetailsService 接口PasswordEncoder 接口EnableWebSecurity 注解 基本原理 SpringSecurity 本质是一个过滤器链,采用的是责任链设计模式。 启动的时候,控制台打印出来的 DefaultSecurityFilterChain 过滤器&…

openfeign实现远程调用

一 openfeign简介 Feign 是声明性(注解)web 服务客户端它使编写 web 服务客户端更加容易请创建一个接口并对其进行注解.它具有可插入注解支持,包括Feign注解和JAXRS注解Feign 还支持可插拔编码器和解码器。Spring cloud 添加了对Spring MVC注解的支持,并…

GPT-4 参加2023年高考数学,人工智能对话机器人和人类对决,快谁速度快

ChatGPT从入门到精通,一站式掌握办公自动化/爬虫/数据分析和可视化图表制作 全面AI时代就在转角 道路已经铺好了 “局外人”or“先行者” 就在此刻 等你决定 让ChatGPT帮你高效实现职场办公!行动起来吧。 【点击查看更多知识】ChatGPT从入门到精通&am…

使用SSH远程直连Docker容器

文章目录 1. 下载docker镜像2. 安装ssh服务3. 本地局域网测试4. 安装cpolar5. 配置公网访问地址6. SSH公网远程连接测试7.固定连接公网地址8. SSH固定地址连接测试 转载自cpolar极点云文章:SSH远程直连Docker容器 在某些特殊需求下,我们想ssh直接远程连接docker 容器…

【STM32智能车】电机控制

【STM32智能车】电机控制 PWMPWM基本用法: 电机驱动基本控制基本状态 欢迎收看由咸鱼菌工作室出品的STM32系列教程。本篇内容主要电机控制 PWM 我们要控制电机,就要先了解一下PWM。 PWM(Pulse Width Modulation)控制——脉冲宽度调制技术,通…