zigbee入网过程分析(mac层分析),附Ubiqua抓包

2023-10-26

普通开关、插座、门锁设备入网流程一般到basic就结束了;灯到identity结束;低功耗传感器设备一般到IAS zone结束。设备入网流程如下:

1.beacon request

由endpoint发出,请求入网,设备一般会全信道扫描找网。

beacon request包括:

  • 帧头(Header)
  • 负载(Payload)
  • 帧尾(Footer)

1.1 帧头(Header)

由帧控制域(frame control)、帧序列号(sequence number)、地址域(addressing fields)组成

1.1.1 帧控制域(frame control)包含了基本的帧信息,长度为16bit:

比特0~2是帧类型(frame type):0b000、0b001、0b010、0b011分别表示信标帧、数据帧、应答帧、命令帧,其他值预留。

比特3是安全使能标志(security enabled):1表示对该帧使用安全机制,0表示不使用安全机制。

比特4是后续帧控制位(frame pending):1表示后续还有更多的数据帧要发送给接收设备,0表示没有。

比特5是应答标志(ack request):1表示该帧需要应答,0表示该帧不需要应答。

比特6是同一PAN 网络标志(intra PAN):1表示当前帧是在同一PAN范围内,只需要目的地址与源地址,而不需源PAN标识符;0表示当前帧不在同一PAN范围内,不仅需要目的地址与源地址,源PAN ID与目的PAN ID均需要

比特10~11表示目的地址模式(destination addr mode):0b00表示不存在PAN ID 和地址域;0b01是预留值;0b10表示后面的地址域为16位短地址;0b11表示地址域为64位扩展地址;

比特14~15表示源地址模式(source addr mode):0b00表示不存在PAN ID 和地址域;0b01是预留值;0b10表示后面的地址域为16位短地址;0b11表示地址域为64位扩展地址;

1.1.2 帧序列号(sequence number)

用于区分相继发送的帧,由该序号可知该帧是重传的帧还是一个新的帧。

对于需要应答帧的情况,规定应答帧的序列号和所应答的帧的序列号相同,这样就能知道应答帧所对应的对象。

设备需要维护两个sequence number,一个用于becon包的序列号BSN,一个用于数据帧、命令帧和应答帧的序列号DSN。

每发送一个对应的帧,DSN或者BSN都会增一,如果超过最大值就变成全零值。

1.1.3 地址域(addressing fields)

分为四部分:目的PAN ID、目的地址、源PAN ID、源地址

这些域的长度与帧控制域中对应子域的取值有关

  • 如果(destination addr mode)是00,那么目的PAN ID和目的地址不存在
  • 如果是10,则目的PAN ID标识存在,目的地址是16位短地址
  • 如果(intra PAN)是1,那么源PAN ID与目的PAN ID相同,不需要携带源PAN ID。

地址域后面是可选的附加安全帧头,如果不采用安全机制,不需要携带此帧头,否则根据所采用的安全机制的具体方式,器长度可能为5、6、10、14字节

1.2 负载(Payload)

长度可变,具体内容由帧类型决定

1.3 帧尾(Footer)

是帧头和负载数据的16位CRC校验值

2.beacon

coordinator在接收到endpoint发送的beacon request帧后发出 beacon帧,是一种特殊的帧,只能由coordinator发送,携带网络相关的信息,用于通告网络信息,以便其他设备加入网络或者了解网络的情况,并且可以用于维护网络通信的同步。

其中mac payload包括:

  • 2字节的超帧描述(super frame specification)
  • 保护时隙域(GTS Fields)
  • 未处理地址区域(Pendling Address Filelds)
  • beacon payload

2.1 超帧描述(super frame specification)

2.1.1 信标顺序(Beacon Order)字段用于指定信标的传输间隔;BI(Beacon Interval)计算公式如下,BO代表信标顺序的值

  • 0≤BO≤14: BI = aBaseSuperframeDuration * 2BO
  • BO=15:则协调器不应发送信标帧;但是在收到信标请求命令时即使BO=15仍然可以发送信标帧

2.1.2 超帧顺序(Superframe Order)字段用于指定超帧的有效时间,包括信标帧传输时间;协调器只能在超帧活动期间与其PAN进行交互;SD(Superframe Duration)计算公式如下,SO代表超帧顺序的值

  • 0≤SO≤BO≤14: SD = aBaseSuperframeDuration * 2SO, 
  • SO=15:则在发送信标之后超帧不应该是活动的

2.1.3 CAP时隙(Final CAP Slot)字段用于指定CAP使用的最终超帧时隙;CAP的持续时间应≥aMinCAPLength;

2.1.4 电池寿命延长(Battery Life Extension)字段,如果在CAP期间发送到信标设备的帧需要在信标的IFS周期之后的第六个完全退避时间段内或之前开始,应设置为1

2.1.5 PAN协调器(PAN Coordinator)字段,当PAN协调器正在发送信标帧时设置为1

2.1.6 关联许可(Association Permit)字段,当macAssociationPermit设置为TRUE时(即协调器正在接受PAN上的关联)应设置为1; 如果协调器当前不接受其网络上的关联请求,该字段应设置为0

2.2 保护时隙域(GTS Fields)

2.2.1 GTS规范字段(GTS Specification)字段格式:

2.2.1.1 GTS描述符计数(GTS Descriptor Count)字段指定了包含在信标帧的GTS列表字段中的3个八位字节GTS描述符的数量。如果该子字段的值大于零,则允许CAP的大小低于aMinCAPLength以适应由包含子字段引起的信标帧长度的临时增加。如果该子字段的值为零,则不存在信标帧的GTS方向字段和GTS列表字段

2.2.1.2 GTS许可(GTS Permit)字段,当如果macGTSPermit设置为TRUE时(即PAN协调器正在接受GTS请求)应设置为1

2.2.2 GTS方向(GTS Directions)字段格式:

2.2.2.1 GTS方向掩码(GTS Directions Mask)字段包含一个掩码,用于标识超帧中GTS的方向
掩码中的最低位对应于信标帧的GTS列表字段中包含的第一个GTS的方向,其余部分依次按照顺序指示

如果GTS是仅接收GTS,则每个比特应设置为1;如果GTS是仅发送GTS,则每个比特应设置为0

注意:GTS方向是相对于设备的数据帧传输方向来定义的

2.2.3 GTS列表GTS List)字段(的大小为信标帧的GTS Specification 中 GTS Descriptor Count 指定的值,包含了正在维护的GTS的GTS Descriptor List

GTS描述符的最大数量应限制为7

每个GTS描述符的长度为3 bytes,其格式如下:

2.2.3.1 设备短地址(Device Short Address)字段包含了GTS描述符所对应的设备的短地址

2.2.3.2GTS起始时隙(GTS Starting Slot)字段包含GTS开始的超帧时隙

2.2.3.3 GTS长度(GTS Length)字段包含GTS活动的连续超帧时隙的数量

2.3 未处理地址区域(Pendling Address Filelds)

2.3.1 待处理地址规范(Pending Address Specification)字段格式如下:

2.3.1.1 处理短地址数量(Number of Short Addresses Pending)字段表示信标帧的地址列表字段中包含的短地址的数量

2.3.1.2 待处理扩展地址数量(Number of Extended Addresses Pending)字段表示信标帧的地址列表字段中包含的扩展地址的数量

2.3.2 待处理地址列表(Pending Address List)字段的大小由信标帧的待处理地址规范(Pending Address Specification)字段中指定的值确定,指定了当前具有协调器待处理消息的设备的地址列表

注意: 地址列表不应包含广播短地址0xffff

待处理地址的最大数量为7,可以包括短地址和扩展地址;所有待处理的短地址应首先出现在列表中,然后是任何扩展地址

如果协调器能够存储七个以上的事务,它应以先到先得的方式在其信标中指示它们,确保信标帧最多包含七个地址

2.4 Beacon Payload

payload部分数据将传输给高层,具体细节解析再后续分析。

主要查看四点,如下图红色方框内,都为yes则网关处于可以接收router和end device设备入网。

3.association request

关联请求入网,由设备发出,此时设备还没有分配短地址,因此在MAC层显示的原地址为设备长地址。


4.data request

收到Coordinator的MAC层确认后,Endpoint发送一个Data request请求Coordinator给其分配16位网络地址。


5.association response

可以查看到给设备分配的短地址。(当Coordinator接收到Data request后经NWK层的算法为其分配一个唯一的网络短地址,然后向Endpoint发送一个包含些短地址的包,这个包是通过MAC地址发送的)

6.transport key

传输link key

7.device announce

一般为设备广播两次,网关广播两次。此时设备已经入网,但是网关还没有识别是什么设备。

  1. 常电供电设备广播:

8.active endpoints request

网关向设备发出的 endponints 请求

9.active endpoints response

设备给网关回应的 endponints 数

10.simple descriptor request

网关请求设备的一些属性或者特性的描述,使网关去判断这是什么设备。

11.simple descriptor response

设备回应,告诉网关该设备的属性等信息。(每个endpoint都会分别查询)

12.basic:read attributes

网关请求设备的 basic cluster 相关信息

13.basic:read attributes response

设备回应,告诉网关该设备的 basic cluster 相关信息

on/off设备到此入网结束

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

zigbee入网过程分析(mac层分析),附Ubiqua抓包 的相关文章

  • STM32+Zigbee模块实现串口通信获取传感器数据

    文章目录 1 所用的资源2 Zigbee模块简介3 STM32板上用到的资源4 代码部分 1 所用的资源 1 两个Zigbee透传模块 2 两块32板 xff08 我手上的是VET6和RCT6的两块板子 xff09 xff0c 其它的板子也
  • 485无线通信/数传模块_zigbee模块_RS485转ZigBee_顺舟智能

    一 概述 顺舟智能 SZ02系列 ZigBee无线串口通信设备 xff08 485无线通信 数传设备 xff09 xff0c 采用了加强型的ZigBee无线技术 xff0c 集成了符合 ZIGBEE协议的射频收发器和微处理器 xff0c 符
  • Zigbee技术有哪些特点

    ZigBee的特点主要有以下八个方面 xff1a xff08 1 xff09 低功耗 xff1a 在低耗电待机模式下 xff0c 2节5号干电池可支持1个节点工作6 24个月 xff0c 甚至更长 这是ZigBee的突出优势 相比之下蓝牙可
  • zigbee通讯技术复习笔记

    这门课对于我一个学嵌入式的来说 xff0c 还是比较重要的 xff0c 所以我还是以老师给出的大纲为主体 xff0c 好好复习一下 xff01 题型 xff1a 选择题24x1 5 判断10x1 填空15x1 简答4x5 程序1x5 另外一
  • ZigBee节点——ZigBee协议栈Z-Stack开发指南

    ZigBee节点 ZigBee协议栈Z Stack开发指南 分类 ZigBee 2011 08 18 14 06 749人阅读 评论 0 收藏 举报 网络 路由器 终端 network types 通讯 1 1设备类型 Device Typ
  • zibgee协议

    1 概述 1 1解析ZigBee堆栈架构 ZigBee堆栈是在IEEE 802 15 4标准基础上建立的 定义了协议的MAC和PHY层 ZigBee设备应该包括IEEE802 15 4 该标准定义了RF射频以及与相邻设备之间的通信 的PHY
  • Warning[Pa050]: non-native end of line sequence detected (this diagnostic is only issued once)

    今天在用IAR软件 给Zigbee程序写注释时 出现了这么一个警告 Warning Pa050 non native end of line sequence detected this diagnostic is only issued
  • zigbee中有几个不同的频率,是啥意思?有啥联系和区别

    zigbee中有几个不同的频率 是啥意思 有啥联系和区别 2011 05 30 09 03 cnsxgh 分类 工程技术科学 浏览1209次 channel 2405Mhz Pan ID 0x0628 工作频率 2 4Ghz 提问者采纳 2
  • zigbee加密技术

    ZigBee安全和加密 作者 wxl 发布时间 2009 05 22 已阅读 283次 在ZigBee技术中 采用对称密钥的安全机制 密钥由网络层和应用层根据实际应用需要生成 并对其进行管理 存储 传送和更新等 安全机制由安全服务提供层提供
  • 协调器是如何获取终端的IEEE地址并自动对其分配网络短地址呢

    协调器是如何获取终端的IEEE地址并自动对其分配网络短地址呢 字号 订阅 协调器是如何获取终端的IEEE地址并自动对其分配网络短地址呢 猜想如下 终端上电后稳定后就开始寻找周围是否存在网络 向周围发射广播 该广播内容包含自己的身份信息 即M
  • BLE 和 Zigbee 肉眼读数(更新ing)

    BLE1M 画相位图 可以读出preamble 01010101 同步码 01101011 通过向下向上的轨迹来肉眼读 原理是需要看如何进行调制的 toolbox中是GMSK调制 所以反着推回去 就知道画相位图能直接肉眼读数了 同理Zigb
  • 8086CPU外部引脚图

    8086CPU外部引脚图 在最小模式中引脚定义 AD15 AD0 Address Data Bus 16位地址 数据总线 分时复用 传输地址时三态输出 传输数据时三态双向输入 输出 在总线周期T1状态 CPU在这些引脚上输出存储器或I O端
  • ZIGBEE抓包工具Ubiqua使用介绍

    一 软件安装 Ubiqua 软件下载链接 https download csdn net download m pfly fish 12050973 二 安装CC2531抓包驱动 驱动软件下载链接 https download csdn n
  • 基于Zigbee的SHT10温湿度数据采集系统(已实现控制12个终端节点)——Zigbee协调器主要代码解析

    之前实现了基于Zigbee的SHT10温湿度数据采集系统 这里来重新复盘一些主要的知识和代码 写在前面 1 功能介绍 使用Zigbee终端节点采集环境的温度和湿度数据 然后将数据无线发送的Zigbee协调器 最后在电脑端显示获得到的数据 2
  • Zigbee协议栈(CC2530开发板) 修改发射功率

    Zigbee协议栈 CC2530开发板 修改发射功率 2010 12 07 15 11 43 分类 Zigbee 标签 zigbee 协议栈 发射功率 字号 订阅 CC2530 控制输出功率的寄存器是 TXPOWER 推荐功率设置 协议栈默
  • [ Z-Stack协议分析(一)] ZMain.c函数

    Z Stack协议分析 一 main函数解析 1 Z stack的简单介绍 Z stack是一个协议栈 是由美国TI公司德州仪器公司设计的 Z Stack协议可在官网下载 我用的还是老版本 ZStack CC2530 2 3 0 1 4 0
  • Fatal Error[Cp001]: Copy protection check, No valid license found for this product [24]

    解决方法 1 卸载IAR 2 以管理员身份打开IAR安装包 3 以管理员身份打开IAR注册机 4 正常安装即可 5 安装完成后以管理员身份打开IAR 编译程序就会正常
  • zigbee串口打印无法显示或乱码解决方法

    zigbee串口打印问题 在终端节点向协调器发数据时 在数据流中伴有该节点的网络地址 而有时通过PC端无法打印出来 1 可能是串口软件的问题 用过好几个串口软件 有时会出现停止 或乱码行为 在经过多次换用软件 发现 SecureCRT 这个
  • 在双精度和字节数组之间进行转换,以便通过 ZigBee API 传输?

    我正在尝试获取两个双精度数 GPS 坐标 并通过 ZigBee API 将它们发送到另一个 ZigBee 接收器单元 但我不知道如何将双精度数分解为字节数组 然后将它们重新组合回原始形式一旦他们被转移 基本上 我需要将每个双精度数转换为八个
  • 在XBee ZigBee中,如何从协调器获取所有终端设备的RSSI

    获取每个终端设备的 RSSI 的正确方法是什么 场景 在 XBee 系列 2 无线电模块上使用 ZigBee 固件 API 模式 我有一个协调器和多个终端设备 每隔几秒钟 每个终端设备都会向协调器发送一个数据包 其中包含传感器信息 例如温度

随机推荐

  • Java中常用API和标准类的使用与优化

    目录 一 API和Java API简介 二 Object类的重要性 三 Objects工具类的使用 四 标准类的设计与使用 五 String类的特点和常用方法 六 API查找文档及其方法和技巧 一 API和Java API简介 API是Ap
  • 鸿蒙系统应用开发初体验(一)

    上学时期就对操作系统非常有兴趣 甚至还想自己动手尝试尝试 曾买来一堆关于操作系统的书籍肯 这不 翻出来几年前的博客 动手写简单的嵌入式操作系统https blog csdn net yyz 1987 article details 9901
  • VirtualBox虚拟机安装CentOS7.6后无法ssh远程连接虚拟机

    问题如题所述 安装完 一般都是使用ip addr查看虚拟机IP后通过远程工具来尝试连接 虚拟机IP 然后会发现通过此IP无法连接 解决办法 修改VirtualBox的网络配置 1 查看VirtualBox对应网卡的IP地址 对应的IP为19
  • 【数组】点菜题目描述小木呆去食堂吃中饭,食堂提供的菜比较丰富有n(0<n<=1000)种,各种菜都有一个价格ci(ci>0并且都是整数),但他口袋里只剩下m元钱,他计划买两个不同的菜,请问他有多少

    数组 点菜 题目描述 小木呆去食堂吃中饭 食堂提供的菜比较丰富有n 0
  • MySql修改表名的两种方法

    一 rename rename table 旧表名 to 新表名 rename table mysu to new su 二 alter alter table 旧表名 rename as 新表名 alter table mysu rena
  • Python Crypto.Cipher加密包

    The Crypto Cipher package contains algorithms for protecting the confidentiality of data Crypto Cipher包含保护机密数据的加密算法 Inst
  • copy()及copy.deepcopy()

    在说浅拷贝和深拷贝之前先咱们先看看这张图片 A 1 2 3 4 5 6 B A B 0 S print B print A 可以看到只是修改了B中的值但A中的值也随之改变 可以直接推断出A B的存储位置都在同一个地方 现在上浅拷贝 浅拷贝和
  • pnpm install 安装依赖失败

    在使用 pnpm install pnpm i 遇到了一个报错 在使用 EPERM operation not permitted unlink E pnpm store v3 files 9e 经过咨询和查询 得到解决方案是 键盘 win
  • python-pptx处理替换文本

    python中使用python ppt库操作ppt来替换文本内容 包括图片在前方的 from pptx import Presentation from pptx enum shapes import MSO SHAPE TYPE def
  • Whitted光线追踪

    更详细的内容可以看知乎的这篇文章 这里简要的说了一下几何光学的规则 这里引出了光线追踪 正向 从光源开始 和反向 从眼睛开始 在介绍光线追踪前 先来看一些比较简单的 W h i t t e d
  • 面试题.17.07.婴儿名字--并查集

    LeetCode 面试题 17 07 婴儿名字 每年 政府都会公布一万个最常见的婴儿名字和它们出现的频率 也就是同名婴儿的数量 有些名字有多种拼法 例如 John 和 Jon 本质上是相同的名字 但被当成了两个名字公布出来 给定两个列表 一
  • 二、MySQL底层存储原理与结构

    1 前言 本章目标 了解构成MySQL数据库和InnoDB存储引擎的各种类型的文件 理解InnoDB存储引擎的内存结构和磁盘结构 2 文件 MySQL数据库和InnoDB存储引擎的文件有参数文件 日志文件 socket文件 pid文件 表结
  • js逆向技巧(三)

    js伪造原理 js逆向的原理的就是在本地 脱离浏览器的情况下 有着js引擎里面运行 js代码 因为浏览器是 js引擎 BOM DOM这里面有着一些内置方法 所以要想在本地 只有js引擎的情况下运行js代码 对于简单的网站 你可能只扣取 js
  • python从入门到放弃(一)

    python解释器的环境搭建 上一篇简单介绍了一下pythonpython该如何使用呢 专业点说我们需要下载一个python解释器 简单点说就是下个python 首先呢 找到python官网点这儿 进去以后点下载 电脑已经装过3 7 所以这
  • 少儿编程入门应该从机器人Scratch编程开始

    人工智能时代到来 家长们渐渐感知编程对孩子们学习的重要性 那么到底让孩子学习那种编程语言呢 下面就和南京小码王少儿编程培训机构一起来看看吧 很多家长都在为孩子们规划编程学习 在种类繁多的编程语言面前 大人和孩子都犯了难 应该从何起步 学Py
  • Linux上 Mongodb6.0及以上的版本没有mongo命令解决方案

    首先 自行下载 Linux版本mongodb的tgz 当启动服务时 mongod f mongodb conf mongod config mongodb conf 进入数据库 mongocd 6 0之前的版本才有这个命令 如果在这里使用
  • C++OpenCV(1):安装与配置

    文章首发于我的个人博客 欢迎大佬们来逛逛 OpenCV项目地址及源代码 点击这里 文章目录 下载与配置项目环境 最简单的opencv项目 下载与配置项目环境 点击下方连接进入官网下载 Releases 选择合适的版本 直接下载即可 下载完成
  • Kubernetes 网络排错“狂飙”级指南,运维请收好

    本文将引入一个思路 在 Kubernetes 集群发生网络异常时如何排查 文章将引入 Kubernetes 集群中网络排查的思路 包含网络异常模型 常用工具 并且提出一些案例以供学习 1 Pod 网络异常 网络异常大概分为如下几类 网络不可
  • C、C++中出现nan、inf原因

    在数据处理输入输出时 极有可能遇到数据读入空值 极大 极小 运算中分母为0或0 0 对0取对数等操作 这将产生nan或inf的产生 这篇博文旨在分析C C 产生nan和inf的操作及判断是否有nan或inf产生 NAN的产生原因 nan n
  • zigbee入网过程分析(mac层分析),附Ubiqua抓包

    普通开关 插座 门锁设备入网流程一般到basic就结束了 灯到identity结束 低功耗传感器设备一般到IAS zone结束 设备入网流程如下 1 beacon request 由endpoint发出 请求入网 设备一般会全信道扫描找网