让通信更自由:常见无线协议讲解

让通信更自由:常见无线协议讲解

目录

协议对比

  • ZigBee 的优势是低功耗和自组网,适合用在传感器
  • 蓝牙用在需要与手机交互的地方,如手环 .
  • wifi 插电设备,天然与云端连接,数据量大的场合。wifi 的安全性一般不如蓝牙和zigbee

Matter

  • Matter 是基于互联网协议 (Internet Protocol, IP) 定义的通用应用层, 传输层可以是以太网, wifi, thread
  • Matter是一个基于IP的聚焦在制定应用层标准的协议规范,塔尖的蓝色部分是我们的活儿,在此之下的所有灰色的基建都不属于Matter规范的范畴。一句话,既然Matter专注于应用层,底层的我就用这些现成的就行。那这个应用层的协议规范到底定义了哪些内容呢?我们把蓝色的塔尖再放大如下,可以进一步分解为七个主要组件

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • Matter由于基于IP, 底层支持的通信技术目前有Wi-Fi、Ethernet和Thread .
  • Zigbee不是基于Ip的. 不支持zigbee, 接入zigbee需要通过转换 , 但是Matter用了zigbee的ZCL (物模型)
  • Thread和Wifi将也要通过边界路由互联互通

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • Matter设备发现 (Matter设备发现,支持BLE,WiFi-SoftAP,WiFi (DNS-SD)三种方式,这里需要注意,Thread设备,目前必须支持BLE方式;)
    • Matter入网, 这里先说明2个基础的名词:
      • Commissioner:配网设备,具备超级管理员权限,有网络的Root CA;
      • Commissionee:待配网设备,在设备生产过程,烧录了PKI(产品类证书)和DAC(设备类证书)
    蓝牙是Matter标准规定的用来配网的协议 , 现在芯片是多模的 , 既支持wifi也支持蓝牙, 或者既支持thread又支持蓝牙等, 所以用蓝牙来配网是可行的
    根据设备支持的网络技术,可以使用蓝牙低功耗 (BLE)、Wi-Fi (IEEE 802.11-2020) 技术或通过 IP(如果设备已经在 IP 网络上)进行发现和调试。
    使用 Thread (IEEE 802.15.4) 网络技术的设备还必须支持 BLE 以进行发现和调试。既不指定也不支持直接使用基于Thread的调试进行设备发现和调试。
    BLE 调试使用通用访问配置文件 (GAP) 进行发现和建立连接,使用通用属性配置文件 (GATT) 进行凭证传输。
    Wi-Fi 调试利用 Soft-AP 功能,其中设备充当不提供 Internet 连接的接入点 (AP)。标准 Wi-Fi AP 广播和连接协议分别用于设备发现和凭证传输。
    
参考资料
有哪些Matter相关的项目
  1. XXX与Matter数据模型转换
  2. matter bridge
    • xx

蓝牙

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

名词解释

  • advertising 信道 : 广播信道 , mesh主要刚工作在该信道 , 此外还有data信道
  • 配网(Provisioning)

低功耗蓝牙基础

BLE低功耗蓝牙技术详解 (iotxx.com)

  1. 低功耗蓝牙通过设备广播表明自身的存在, 并等待被连接, 广播是在37,38,39上间隔一段时间广播. 。当主机扫描到某个从机的广播后, 可以发送连接请求, 以便建立连接。
  2. 在37,38,39信道上广播(Mesh就是工作在广播信道, 这三个信道避免与wifi信道冲突),只有连接成功后才转换到数据信道进行数据传输, 信道选择遵循自适应算法
  3. 从机和主机 , 主从一体 , 以及观察者和广播者
  4. 蓝牙beacon 的即是蓝牙信标,或者说蓝牙基站, 同时它也是拥有这个协议的低功耗蓝牙从机设备 , 蓝牙Beacon本身只向外发射广播信号,无法向手机推送消息,也无法接收消息,
    蓝牙beacon一般用于室内定位
  • 蓝牙有一些标准服务, 其实就是一些在蓝牙标准里的协议, 比如电量通知等, 另外还支持私有协议,其实就是自己制定协议
  • OOB通信方式是指不通过低功耗蓝牙等射频来交互配对信息, 而是通过类似人眼、NFC、UART等带外方式来交互配对信息。
  • 配对和绑定
    • 配对是低功耗蓝牙主从机交换加密特性,并创建临时密钥。绑定则是配对之后交换并保存长期密钥。

Mesh

Mesh基础
  • 低功耗蓝牙技术是蓝牙Mesh使用的无线通信协议栈。牙mesh网络使用、并且依赖于低功耗蓝牙。低功耗蓝牙技术是蓝牙mesh使用的无线通信协议栈。
  • 蓝牙Mesh采用蓝牙低功耗广播(Advertising)的方式就行信息发送和接受,将信息从网络当中的某一个节点转发至目的节点,在蓝牙Mesh组网中,这种广播模式也称为网络泛洪。
    • 蓝牙Mesh在网络内部节点间的通信只采用了Advertising的方式
    • 蓝牙Mesh使用发布/订阅(publish/subscribe)消息系统
    • 蓝牙Mesh采用以下措施来优化泛洪通信来减少不必要的冗余信息传输 . Message cache: 设备都会缓存收到消息的关键信息, 以确定是否已经转发过此消息, 如果是就忽略此消息. Message cache需要至少能缓存两条消息. Time to Live(TTL): 每个消息都会包含一个Time to Live(TTL)的值, 来限制中继的次数, 最大可以中继126次. 消息每转发一次TTL的值就减1, TTL值为1就不再转发.
  • 节点特性
    • 中继节点 : 那些使能了此特性的节点可以通过Advertising Bearer接收并转发消息给mesh网络其他设备. 它只转发不在消息缓存和TTL的值大于1的消息, 转发前会把TTL的值减1. 这里的Bearer是指蓝牙Mesh协议中的承载层, 它主要是把BLE数据抽象并供上层使用. 目前定义了两种承载: 广播承载和GATT承载, 分别对应BLE的Advertising和Connection方式.
    • 代理节点 (Proxy): 为了能够兼容市场上数十亿台不支持蓝牙Mesh的BLE设备如手机, 平板电脑等, 使能这个特性的节点能够采用BLE GATT Bearer的方式在数据信道和BLE设备通信, 并且代理节点会把来自手机和平板电脑的消息通过Advertising的方式转发给mesh网络其他设备.
    • Friend节点可以暂存发往低功耗节点的信息,待低功耗节点退出休眠模式之后,再从Friend节点取回相关信息
      外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
  • 元素和地址
    • 每个元素在加网的过程会被分配唯一的单播地址(Unicast Address), 地址范围是0x0001-0x7FFF.
    • 还有一个组播地址(Group Address)就是前面讲到的发布/订阅机制里的厨房, 花园等. 元素订阅特定的组播地址, 就会收到发布者发送到此地址的消息. 组播地址范围0xC000-0xFEFF.
    • 还有虚拟地址(Virtual Address), 每一个虚拟地址逻辑上对应一个128-bit的Label UUID. 通过对该Label UUID作哈希运算得出虚拟地址的低14位数值. 虚拟地址的范围为0x8000-0xBFFF . 为什么要有虚拟地址呢 ? 它的作用是为了替换128bit的Label UUID, 减少空中包的长度 . 应用层计算得到virtual address后 就可以不用Label UUID, 直接使用virtual address来替代它. 使用订阅元素(subscribing element)来检查完整的128位UUID是十分低效的,特别当UUID跨越多个消息段时更为低效。散列值提供了一种更为有效的方式来确定哪些消息被发送至哪些元素。
    • 蓝牙mesh网络中,节点可以向单播地址、组播地址、虚拟地址发布消息,其它节点可以通过订阅这些地址获取消息;节点如果订阅某些信息,那么节点中的每个模型都可以订阅一个或多个组播地址或虚拟地址;如果节点收到的消息的目的地址在这个节点的订阅地址列表中,节点就会处理这条消息,如果节点有多个元素,每个元素都会处理这条消息。
蓝牙协议栈

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

安全
  • 参考mesh安全性概览
  • 安全分级考量与安全密钥 . 蓝牙mesh安全性的核心是三类安全密钥。这些密钥为mesh网络的不同方面提供了安全性,并实现了蓝牙mesh网络安全性中的关键性能,即“安全分级考量”。
    • 蓝牙mesh采用称为“**应用密钥(AppKey) **”的安全密钥来保护应用层消息
    • 蓝牙mesh网络中的所有节点都拥有一个或多个网络密钥(NetKey),每个网络密钥对应一个子网,它也可能是主要子网。节点必须拥有网络密钥,才能成为网络中的成员。网络加密密钥(Encryption Key)和隐私密钥(Privacy Key)直接源于网络密钥 . 拥有NetKey让节点能够对网络层的数据进行解密和验证,以便执行诸如中继等网络功能。但应用程序数据不可被解密
    • 每个节点还拥有一个唯一的安全密钥,称为设备密钥(DevKey),用于节点的启动配置(Provisioning)和配置流程 . Provision过程还会随机生成一个特殊的AppKey,称作DevKey , DevKey只有provisioner和device两者知道,不和任何其他device共享,保证了provisioner可以单独和某一个device进行秘密的一对一通信。configuration配置被限制只能使用DevKey,只有provisioner才知道device的DevKey,所有只有provisioner才可以配置device。例如,开关只能控制灯泡亮灭,而不能去配置灯泡的分组。
  • 区域隔离
    • 节点拥有了主要NetKey ,就意味着它具备了蓝牙mesh网络成员资格和访问权限。但也可以将网络划分成不同的子网,每个子网都有自己的子网密钥。这意味着只有拥有指定子网密钥的设备才能与该子网中的其他成员设备进行通信。也可以临时创建并分配子网密钥,例如,酒店中位于不同客房的节点的隔离。
  • 节点移除、密钥刷新与垃圾桶攻击
    • 从网络中删除节点的程序现已有明确定义。通过启动配置设备(Provisioner)应用程序,可将节点添加至黑名单,然后启动密钥刷新程序(Key Refresh Procedure)。密钥刷新程序会向网络中除黑名单成员以外的所有节点发放新的网络密钥、应用密钥、以及所有相关的派生数据。也就是说,构成网络和应用程序安全性基础的整套安全密钥将被替换。因此,已从网络中移除的、包含原有NetKey 和AppKey的节点将不再是网络成员,换句话说,上述这些不被授信的节点将从网络当中剔除出去,因此也无法再构成威胁。
  • 隐私
    • 由NetKey导出的隐私密钥(Private Key)用于对网络PDU (Payload Data Unit) 的报头值进行模糊化,例如源地址(source address)。模糊化可以确保无法通过随机的被动窃听来跟踪节点及其使用者,也使得基于流量分析的攻击难以实施
  • 中继攻击
    • 中继攻击是窃听者拦截并捕获一个或多个消息、稍后重新进行传输的一种技术,目的是欺骗接收者,执行未经被攻击设备授权的任务。常见的例子就是汽车的无钥匙进入系统被攻击者所击破,攻击者就能拦截汽车车主和汽车之间的认证序列,然后对这些消息进行中继,以进入汽车并将其偷走。蓝牙mesh可保护网络免受中继攻击。这种保护是基于分别称为序列号(SEQ, Sequence Number)和IV索引(IV Index)的两个网络PDU字段。每次发布消息时,元素会增加SEQ值。节点从元素接收消息,如果元素包含的SEQ值小于或等于上一个有效消息中的SEQ值,则节点会将消息丢弃,因为这则消息可能与中继攻击有关。IV索引是一个单独的字段,需与SEQ一同纳入考量。来自给定元素的消息中的IV索引值必须始终等于或大于该元素的上一个有效消息。
    • IV index 主要用于解决, seq number不够用的情况, 因为只有三字节. 满了后 ,就需要触发IV更新, 网络中所有的节点都要更新IV到旧IV+1, 同时会有一个冷却期限, 这段时间内, 就的和新的seq都能正常收发. 带来的问题是 , 触发更新会影响整个网络的设备, 并且是任何人都可以触发更新. 如果接入一个不靠谱设备, 整个网络都会被影响
  • 配网安全性——防中间人攻击问题
    • 其实就是说公钥和随机数都是公开交换的, 这样的话, 可以推断出authvalue, 从而骗过配置节点,拿到netkey并发动攻击。
      外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
      外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
配网过程Provisioning
  • Provisioning就是将普通的“设备(Device)”变身为“节点(Node)”,使其正式成为蓝牙mesh网络的成员, 通常使用智能手机或平板电脑执行启动配置流程,以将新设备添加至蓝牙mesh网络
  • 解密蓝牙mesh系列 | 第九篇 (qq.com)
  • 支持PB-ADVPB-GATT . PB-GATT指通过蓝牙广播信道进行设备启动配置的启动配置承载层。PB-GATT指使用来自代理协议的蓝牙mesh代理(proxy)PDU来进行设备启动配置的启动配置承载层
  • 步骤
    • 第一步,通过广播包,通知配网者(provisioner)自己需要进行配网。
    • 第二步,配网者(provisioner)听到这个Beacon以后,发送一个配网邀请PDU(Protocol Data Unit).需要配网的设备收到邀请后会发送自己的一些配网能力(Provisioning capablities)。
    • 第三步,公开交互公钥。在交换公钥阶段,有两种交换ECDH公钥的可能方式。它们可以通过蓝牙链路、或OOB隧道(二维码)进行交换 . 可通过协议发送或者通过扫描二维码知道. 这里的公钥是非对称加密的公钥
    • 第四部,互动随机数的认证。认证完成后,从公钥和设备的私钥中派生出session key。后续的配网信息交互过程就通过session key加密。详细请参考这里。 这里有一个配网安全性——防中间人攻击问题,详见本篇笔记的安全章节
    • 第五步,分发配网信息。分配给节点地址和Netkey , IV索引等信息.
优缺点
  • 缺点
    • payload不足 . 不使用拆包组包机制的情况下,传输层最多给应用层提供11字节的有效载荷
    • 对低功耗不友好, 只想买一个低功耗传感器, 难道还需要购买一个friend节点辅助它 ? 并且需要打开扫描来接收消息
    • 还有三个缺点是Iv update设计过于理想, 过分依赖本地存储, 泛洪
  • 优点
    • 实现多对多传输 , 超强抗干扰
    • 超稳联机机制:Wi-Fi必须先联机到路由分享器才能上网,如果遇到分享器坏掉、电信商的网络不稳或设备故障等外力因素影响下,Wi-Fi就会断线,无法透过云端控制智能家庭装置;ZigBee也须透过网关,才能连接手机和网络,若网关坏掉就不能操控装置。然而蓝牙可直接用手机内建的蓝牙来联机,不用经过家中网络或网关控制家电,提供更可靠的网络联机,除非手机没电不能开蓝牙,否则较不受外力因素而断讯。
    • 超高安全性: Wi-Fi被黑客入侵时有所闻,恐使个人隐私门户大开!与Wi-Fi相比,蓝牙提供更严密的安全防护,这是由于Wi-Fi、ZigBee、蓝牙虽都有采用AES加密,但蓝牙Mesh还多了三层密钥与密钥更新的措施,可有效阻止黑客攻击与破解封包,多重防范金钟罩,全面升级居家安防
    • 超低耗电量:在无线通信技术中,Wi-Fi虽然传输数据量最大,耗电量也最大,通常动辄数百毫安,相比智成电子的蓝牙模块,在相同class1输出功率的条件下,比Wi-Fi耗电量小上数十倍,非常适合智能家庭应用。
    • 超长传输距离:低功耗蓝牙5系列最厉害之处,是相较以往系列,其传输速度提高2倍、传输距离提高4倍、传输数据量提高8倍,是引领物联网发展的万众瞩目焦点,加速驱动人们迈向智能未来和拥抱美好生活
对标Zigbee
  • 路由机制:对于较小节点数量的网络,两者的性能相似。但当节点处于移动状态时,Zigbee的路由机制可能会受影响,因为ZigBee的动态路由维护,将交换大量路由协议消息以更新路由表,这可能会导致网络拥塞。但由于Zigbee节点对较大数据包的延迟较小,因此它可以封装较高层的帧头和命令,同时提供良好的性能。它可以与单播和广播结合使用以提高可靠性。当在链路上发送大于12个数据包的大小时,由于在网络层执行分包和重组,蓝牙Mesh的延迟会更高一些。因此,与Zigbee相比,在传输大量需要分包和重组的消息命令当中,蓝牙Mesh的时延会更高一些,而Zigbee表现会更好一些。
  • 数率更高 , 范围更大 , 功耗相当
  • 凭借其更简单的路由机制,蓝牙Mesh更适用于移动节点,因为Zigbee路由协议会为维护高度移动节点的路由表带来更多网络开销。
对标WiFi
  • 插电的都用WiFi , 因为这样对于用户最方便,对于厂商来说可直达云端 . 蓝牙的优势是和手机的互通很方便,但是WiFi更方便,只要手机能上网的地方就可以互通,就算是走本地网络协议,路由器的覆盖范围也更大,不在同一个房间里面也可以联通
  • wifi缺点 是 功耗高, 成本高, WiFi设备多了之后,路由器负载会很大,星型架构的效率不高, 没有标准的应用层协议,容易造成大厂商的垄断,不同厂商的设备能否互通就看厂商之间的博弈
问题
  • 虚拟地址干啥用的 ? check

参考资料

有哪些蓝牙相关项目 ?

  • 下面四个统一说成蓝牙专项 !
  • ** 蓝牙子设备漫游**​
    • 要解决的问题: 解决子设备漫游到其它网关下,如何确保联动正常运行。 比如病人带了一个手环,跑到其它房间,不再当前网关范围内, 而再其它网关范围内, 这时如果触发条件满足, 如何触发动作。
    • Master节点按需(根据是否有联动规则是漫游设备作为条件的)去云端订阅漫游设备的上报。 当漫游设备M向任何一个网关上报时,都会上报到云端, 云端根据订阅会下发给Master, Master就触发
    • 数据还需要去重,就是漫游设备可能上报给多个网关(刚好多个网关都能接收到),这个可以根据序号来去重,漫游设备上报dp时包含一个累加的序号。
    • 涉及漫游设备的都是走局域网联动或者云端联动, 涉及漫游设备M的规则归属时,不计算M的拓扑,只计算其他普通设备
  • 蓝牙主备替换
    • 检测异常可通过心跳广播机制, 主网关故障不再广播告知 , 备份网关就运行并开始替换
    • 涉及数据的备份和转换, 涉及到的数据包括联动 + 子设备属性 + 群组
      • 联动在线情况下可以直接拉取. 离线情况可通过提前下发, 发现异常后, 再解析数据并把gwid转换为自己的
      • 群组在线情况下可以直接拉取. 离线情况可通过提前下发,发现异常后, 再解析数据。
      • 蓝牙子设备通过拖拽功能实现 (需要在线) , 在线情况直接通过接口获取, 离线情况通过提前下发,缓存但不处理这部分数据,等到检测到主网关异常后,再解析。
  • 子设备拖拽
    • 如果没有拖拽能力,门锁需要先解绑,再通过网关配网,流程较为繁琐,用户体验较差 。 这里假定子设备要拖入网关, 云端通知网关子设备拖入, APP与子设备本地拓扑关系解除, 然后网关本地主动绑定子设备, 并返回绑定子设备信息给云端并获取dp schema, 就结束了。
  • 子设备故障替换
    1. 新的子设备拖拽到现场网关下
    2. 云端更新规则里的nodeid
    3. 重新拉取所有联动规则

Zigbee

基础

  • 特点:
    • 低速率,低功耗(针对终端节点而言), 时延短, 安全, 网络容量大(最大65000个设备,网络地址16位再去除一些特殊地址)
  • 网络拓扑
    1. 有终端设备, 路由设备, 协调器
    • 总是需要安装第一个协调器来建立zigbee网络服务,它启动一个新的PAN(个人区域网络,蓝牙是怎样开启网络的 ? ),一旦启动其他zigbee组件即路由器(R)和终端设备(E)可以加入网络(PAN)
      协调员搜索合适的RF信道,该信道可用且不会干扰正在使用的无线LAN频率。这是因为WLAN也在相同的2.4GHz频段运行。这是在所有16个频道上完成的。它也被称为能量扫描
      协调器通过为网络分配PAN ID来启动网络。分配以两种方式完成。手动(预配置)和动态(通过检查附近操作中已有网络的其他PAN ID获得,以便PAN ID不与其他网络冲突)。协调器还为自己分配网络地址,即0x0000。
  • 信标与非信标模式 (低功耗的具体实现)
  • Soc模式与host模式
  • 因为zigbee数据传输有AES加密,这时就要用到netWorkKey了
  • 抓包
    • 需要设置过滤器进一步将需要的数据提取出来,这就要依靠panId了。在位置1可以创建过滤器;在位置2可以重命名;位置3支持成立逻辑,
      源panId和目的panId其中一个成立就是我们要的数据,因此这里选择any,还可以实现条件嵌套,可以自己试试。填入panId后点击确定就可以得到过滤数据了。

ZCL模型(https://notes.leconiot.com/zcl.html)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 如果读者学过面向对象编程的思想就更好理解了。其实应用层协议(profile)就相当于面向对象编程中的类,而串就是面向对象编程中的对象,至于命令(command)可以理解为每个类中的方法,而状态/属性(attribute)则是每个对象的属性。
  • 比如,如果定义了一个智能家居的类,那么是不是需要包括很多设备呢?比如具体的灯、传感器、开关等。所以,在类的基础上需要实例化一个对象,如开关控制面板。这个开关控制面板还需要一些相当于命令的方法去控制如灯的开关之类的设备,而每个设备对象本身都应该有一些自己的属性来描述该设备,因此就需要一个属性。
  • 例子: 一个灯和一个开关, 我们需要通过开关设备去控制灯的开关状态。为了实现对这两个智能家居产品的控制,可以发现有如下几个原始数据:表示灯状态的数据有“亮”“灭”,以及控制灯需要“打开”和“关闭”命令。下面就来查询ZCL , 发现在General 类串中(见表2-2)有一个名为"On/Off" (串1D=0x0006)的串符合实例的数据标准化要求,标准化过程是:
    • 在串“On/Off的属性列表(见表2-3)中,使用名为“on/off”的属性来表示灯的状态是亮还是灭。
    • 在串“On/Off”的命令列表(见表2-4)中,使用命令ID=0x00 和命令 ID=0x01的“Off”“On”这两个命令对灯进行控制,实现灯的关闭或打开

Zigbee组网

  • 节点有终端设备, 路由器节点 , 协调器
  • 创建网络
    • 对于集中式网络(目前XX用的就是集中式网络), 总是需要安装第一个协调器来建立zigbee网络服务,它启动一个新的PAN(个人区域网络 ),一旦启动其他zigbee组件即路由器(R)和终端设备(E)可以加入网络(PAN)。
      • 协调员搜索合适的RF信道,该信道可用且不会干扰正在使用的无线LAN频率。这是因为WLAN也在相同的2.4GHz频段运行。这是在所有16个频道上完成的。它也被称为能量扫描
      • 协调器通过为网络分配PAN ID来启动网络。分配以两种方式完成。手动(预配置)和动态(通过检查附近操作中已有网络的其他PAN ID获得,以便PAN ID不与其他网络冲突)。协调器还为自己分配网络地址,即0x0000
  • 允许新节点加入
    • zigbee3.0开始, 不再允许节点一直加入, 需要协调器或路由器开启"允许加入"标志,开启后一段时间内会允许新节点加入
  • 新节点加入过程
    • 新节点加人 Zigbee 3.0 网络的过程中,新节点会扫描开放网络,如果找到合适的网络,则会尝试加人。在加人过程中,该节点会被要求进行身份验证,并接收网络密钥。如果新节点尝试加人的网络中存在信任中心, 则该节点会首先将其预配置链接密钥交给信任中心进行验证(就是看是不是一样的,对于安装码就是用户确保是想要添加的子设备,然后通过扫码将信任中心的密钥配置得和安装码生成出来的是一样的,然后这个子设备自然可以添加成功),验证成功后, 信任中心把网络密钥(使用链接密码对其进行加密)发送给该节点。如果有需要(通常是需要的),信任中心会生成新的链接密钥给该节点
  • 节点重连
    • 如果网络密钥有效(没丢失并且是最新的),则用网络密钥在网络层加密重新连接请求, 通过后即成功
    • 如果网络密钥无效,则重连,会发送重连请求(没有任何加密),然后信任中心通过TCLK(链接密钥)加密包含网络密钥的应用消息,设备收到后,用TCLK解密即获取网络密钥,就可以再次在网络上通信

Zigbee数据收发

  • 节点两个地址 ,物理地址(其实就是MAC,64位)和网络地址(16位) , 协调器的地址固定为0x0000
  • 端点(有点类似于TCP端口的概念), 一个节点可以包含多个应用,通过端点来区分不同应用。
  • 单播, 有一种是通过绑定来实现,绑定后就不需要执行目标的网络地址了, 直接发送就行,到时会在绑定表里查询得到目标设备的地址,从而实现数据发送
  • 还支持多播和广播

Zigbee 网络安全

  • 分布式网络(由路由器创建的zigbee网络)和集中式网络(由协调器创建的), 分布式(没有协调器)由路由器为其他节点提供入网许可, 集中式通过协调器创建网络
  • 核心就是两个密钥 , 链接密钥和网络密钥 。 链接密钥只能用在应用层。
  • zigbee节点加入网络时,zigbee网络会校验链接密钥,如果不匹配,则禁止节点加入
  • 节点加入成功后, 会从信任中心获得网络密钥,并请求更新链接密钥
  • 默认情况下,使用众所周知的TC链接密钥将初始网络密钥传输到加入设备。但是,现在可以选择使用预配置的密钥和安装代码来进一步增强安全性。安装代码是128位随机数据和16位CRC,它们通过MMO哈希函数传递以生成TC链接密钥。将使用此派生密钥代替众所周知的TC Link密钥,这样就不会再使用众所周知的密钥来无线加密数据。通常,安装代码派生的TC链接密钥在制造过程中被硬编码到连接设备中。然后,相应的安装代码将包含在设备中,并通过带外方法(例如用户界面)编程为网络领导者。由于TC链接密钥更新和安装 。
  • https://blog.csdn.net/DIANZI520SUA/article/details/105517290
  • https://blog.csdn.net/m0_38064214/article/details/127768303 这个链接里包含了install code配网的原理
  • 抓包要 TC LINK KEY 链接密钥 和 NWK KEY 网络密钥

Zigbee 数据传输 和 路由机制

  • 路由发现 : 路由发现用于寻找创建到达目标节点的路由路径,当网络层收到上层的数据请求,而在路由表中没有有效的路由路径时,网络层会广播路由请求消息。周边路由节点收到该广播时,将发送者与自己的链接损耗累加到路由请求消息的路径损耗中并转播,同时将该请求记录到路由发现表,并在路由表中创建对应的路径,此时的路径是不可用的。收到广播与转播之间存在一个随机延迟,具体协议栈实现中,链接质量越好转播延迟会越短。最终目标节点可能会收到多个转播,并拥有多个可选路径,它选择其中路径损耗最小的路径原路响应路由应答(route reply)。收到路由应答的路由节点按最优的路径将应答传回源节点,过程中发送者添加到路由表中目标地址为目标节点的记录的下一跳地址,并将该路径设置为可用,同时创建从目标到源节点的路由路径。具体查看zigbee 之 路由

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 路由发现 分为单 **待复制**

问题

1. Zigbee是怎么实现低功耗的
  • zigbee的低功耗只是针对终端节点而言的, 对于协调器和路由节点需要一直工作,是不考虑功耗的。设备节点可以主动休眠,并定时唤醒(唤醒间隔根据它是否需要响应网络发送给它的消息来设置,需要时间周期就短,不需要就很长),休眠期间需要收到的数据由路由节点代为缓存,等唤醒后一次性从终端节点处获取
2. 有哪些zigbee相关项目 ?
  • 点击zigbee网关才能添加子设备, 这个用到了组网过程的要求(开启允许配网才能添加子设备)
  • zigbee群升
  • install code扫码配网https://blog.csdn.net/m0_38064214/article/details/127768303 这个链接里包含了install code配网的原理)
    1. 首先,在产品生产的时候,由厂家在产线随机生成一个Install Code;
    2. 然后将这个Install Code烧录到产品里面;
    3. 然后把这个Install Code和Eui64打到标签上面,贴在这个产品表面;
    4. 在安装的时候,安装人员利用手持设备的扫描功能,从产品标签上扫描获取Install Code和Eui64;
    5. 将获取到的Install Code和Eui64告诉Trust Center(一般是协调器);
    6. 然后在Trust Center上通过这个Install Code得到Link Ley,让Trust Center知道IEEE地址为Eui64的这个新设备必须使用这个Link Key进行组网;
    7. 待入网的新设备这边,从flash中读取出预先烧录的Install Code,然后使用相同的算法得出Link key。
  • zigbee批量扫码配网(暂时不懂)
    APP扫码获取单个设备MAC & install code & pid信息列表;APP局域网绑定网关后,开启配网时,将第一步获取到的设备信息列表发给网关,并同步开启网关install code配网。
    
    跨PAN通信技术简介:网关在某一信道内,发出的数据为非interpan数据,panID为0xFFFF,设备端MAC层接收到数据判别为跨PAN通信数据,上报至网络层和应用层,由应用对数据进行处理。【正常interpan情况下,MAC层判别不是设备当前PAN网络中的数据,即丢弃。】
    
    APP扫码批量操作,逐个获取单个设备MAC & install code & 厂家信息列表,单次最大200设备数;
    
    APP端触发配网后,将第一步获取到的设备信息列表发给网关,并同步开启网关install code配网;
    
    网关开启信道遍历、跨PAN通信轮询“拉”设备进入当前网络。
    单包ZCL payload携带最大数据量:32+32+4=68byte
    

参考资料

  1. https://blog.csdn.net/DIANZI520SUA/article/details/105517290
  2. https://blog.csdn.net/m0_38064214/article/details/127768303
  3. zigbee 之 路由_Jason00525的博客-CSDN博客_zigbee路由

其它

Thread(不深入, 知道即可)
  • Thread_是一个基于IP的Mesh_网络,可以安全可靠地连接数百个智能家居产品。 Thread为智能家居产品提供一个专用网络,不依赖互联网连接或Wi-Fi
  • hread协议的原理是将多个设备连接成一个网状网络,每个设备都可以作为路由器,将数据转发给其他设备。这种网状结构可以提高网络的覆盖范围和可靠性,同时也可以降低设备的功耗,延长设备的电池寿命。为了保证网络的安全性,Thread协议使用了多种安全机制,包括加密、认证、访问控制等。例如,每个设备都具有唯一的身份标识和安全密钥,可以使用这些信息来加密和认证数据包,避免数据泄露和篡改。
编号 文件名称 cwts-specs-001 IMT-DS FDD(WCDMA)系统无线接口物理层技术规范:名语术语 cwts-specs-002 IMT-DS FDD(WCDMA)系统无线接口物理层技术规范:概述 cwts-specs-003 IMT-DS FDD(WCDMA)系统无线接口物理层技术规范:物理信道和传输信道到物理信道的映射 cwts-specs-004 IMT-DS FDD(WCDMA)系统无线接口物理层技术规范:信道编码与复用 cwts-specs-005 IMT-DS FDD(WCDMA)系统无线接口物理层技术规范:扩频与调制 cwts-specs-006 IMT-DS FDD(WCDMA)系统无线接口物理层技术规范:物理层过程 cwts-specs-007 IMT-DS FDD(WCDMA)系统无线接口物理层技术规范:物理层测量 cwts-specs-008 IMT-DS FDD(WCDMA)系统无线接口层2技术规范:物理层向上层提供的服务 cwts-specs-009 IMT-DS FDD(WCDMA)系统无线接口层2技术规范:MAC协议 cwts-specs-010 IMT-DS FDD(WCDMA)系统无线接口层2技术规范:RLC协议 cwts-specs-011 IMT-DS FDD(WCDMA)系统无线接口层2技术规范:PDCP协议 cwts-specs-012 IMT-DS FDD(WCDMA)系统无线接口层2技术规范:BMC协议 cwts-specs-013 IMT-DS FDD(WCDMA)系统无线接口层3技术规范:RRC协议 cwts-specs-014 IMT-DS FDD(WCDMA)系统Iu接口技术规范:概述 cwts-specs-015 IMT-DS FDD(WCDMA)系统Iu接口技术规范:层1技术要求 cwts-specs-016 IMT-DS FDD(WCDMA)系统Iu接口技术规范:信令传输 cwts-specs-017 IMT-DS FDD(WCDMA)系统Iu接口技术规范:RANAP信令 cwts-specs-018 IMT-DS FDD(WCDMA)系统Iu接口技术规范:数据传输和传输信令 cwts-specs-019 IMT-DS FDD(WCDMA)系统Iu接口技术规范:用户平面协议 cwts-specs-020 IMT-DS FDD(WCDMA)系统Iub接口技术规范:概述 cwts-specs-021 IMT-DS FDD(WCDMA)系统Iub接口技术规范:层1技术要求 cwts-specs-022 IMT-DS FDD(WCDMA)系统Iub接口技术规范:信令传输 cwts-specs-023 IMT-DS FDD(WCDMA)系统Iub接口技术规范:NBAP信令 cwts-specs-024 IMT-DS FDD(WCDMA)系统Iub接口技术规范:用于CCH数据流的数据传输和传输信令 cwts-specs-025 IMT-DS FDD(WCDMA)系统Iub接口技术规范:用于CCH数据流的用户平面协议 cwts-specs-026 IMT-DS FDD(WCDMA)系统Iur接口技术规范:概述 cwts-specs-027 IMT-DS FDD(WCDMA)系统Iur接口技术规范:层1技术要求 cwts-specs-028 IMT-DS FDD(WCDMA)系统Iur接口技术规范:信令传输 cwts-specs-029 IMT-DS FDD(WCDMA)系统Iur接口技术规范:RNSAP信令 cwts-specs-030 IMT-DS FDD(WCDMA)系统Iur接口技术规范:用于CCH数据流的数据传输和传输信令 cwts-specs-031 IMT-DS FDD(WCDMA)系统Iur接口技术规范:用于CCH数据流的用户平面协议 cwts-specs-032 IMT-DS FDD(WCDMA)系统Iub/Iur接口技术规范:用于DCH数据流的数据传输和传输信令 cwts-specs-033 IMT-DS FDD(WCDMA)系统Iub/Iur接口技术规范:用于DCH数据流的用户平面协议 cwts-specs-034 TD-SCDMA系统无线接口物理层技术规范 cwts-specs-035 TD-SCDMA系统无线接口层2技术规范 cwts-specs-036 TD-SCDMA系统无线接口层3-RRC技术规范 cwts-specs-037 TD-SCDMA系统Iu接口技术规范 cwts-specs-038 TD-SCDMA系统Iub接口技术规范 cwts-specs-039 TD-SCDMA系统Iur接口技术规范 cwts-specs-040 TD-SCDMA系统基站设备无线收发特性技术规范 cwts-specs-041 TD-SCDMA系统用户终端设备无线收发特性技术规范 CWTS发布的研究报告列表 cwts-reports-001 IMT-DS FDD(WCDMA)系统连接模式下的层间过程(25.303)标准研究报告 cwts-reports-002 IMT-DS FDD(WCDMA)系统空闲模式下UE的流程和连接模式下小区重选流程(25.304)标准研究报告 cwts-reports-003 IMT-DS FDD(WCDMA)系统无线资源管理RRM研究报告 cwts-reports-004 IMT-DS FDD(WCDMA)系统无线资源管理RRM研究报告 cwts-reports-005 IMT-DS FDD(WCDMA)系统UE无线接入能力研究报告
3GPP无线通信协议集(中文版45份文件) cwts-reports-001系统连接模式下的层间过程.doc cwts-reports-002系统空闲模式下UE过程与连接.doc cwts-reports-002系统空闲模式下UE过程与连接模式下小区重选过程.doc cwts-reports-003无线资源管理 (RRM) 策略.doc cwts-reports-004系统无线资源管理策略.doc cwts-reports-005系统UE无线接入能力.doc cwts-specs-001名词术语.doc cwts-specs-002系统无线接口物理层技术规范:概述.doc cwts-specs-003物理信道和传输信道到物理信道的映射.doc cwts-specs-004复用与信道编码.doc cwts-specs-005扩频与调制.doc cwts-specs-006物理层过程.doc cwts-specs-007物理层测量.doc cwts-specs-008物理层提供的服务.doc cwts-specs-009MAC.doc cwts-specs-010RLC.doc cwts-specs-011PDCP.doc cwts-specs-012广播多点传送控制BMC.doc cwts-specs-013-RRC331.doc cwts-specs-014系统Iu接口技术规范-概述.doc cwts-specs-015系统Iu接口技术规范-层1.doc cwts-specs-016系统Iu接口技术规范:信令传输.doc cwts-specs-017无线接入网络应用部分(RANAP).doc cwts-specs-018Iu接口技术规范-数据传输及传输信令.doc cwts-specs-019用户平面协议.doc cwts-specs-020系统Iub接口技术规范.doc cwts-specs-021系统Iub接口技术规范:层1.doc cwts-specs-022信令传输.doc cwts-specs-023NBAP信令.doc cwts-specs-024用于公共传输信道数据流的数据传输和传输信令.doc cwts-specs-025用于公共传输信道数据流的用户平面协议.doc cwts-specs-026系统Iur接口技术规范:概述.doc cwts-specs-027层1.doc cwts-specs-028信令传输.doc cwts-specs-029RNSAP信令.doc cwts-specs-030用于公共传送信道数据流的数据传输和传输信令.doc cwts-specs-031用于公共传送信道数据流的用户平面协议.doc cwts-specs-032系统IubIur接口技术规范.doc cwts-specs-033系统Iub-Iur接口技术规范.doc cwts-specs-034.doc cwts-specs-036TD-SCDMA-RRC.doc cwts-specs-037.doc cwts-specs-038.doc cwts-specs-039.doc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值