当前位置: 首页 > news >正文

上海临平路网站建设新乡做网站费用

上海临平路网站建设,新乡做网站费用,六安新安人才网,广州微信网站建设【蓝牙mesh】Network协议层介绍 Network层简介 上一章节我们讲解了蓝牙Mesh中Lower层的功能和数据格式。 Lower层的数据往下传输就到了网络层(Network Layer)。网络层定义了收到Lower层的数据后,如何对其进行判断、封装、加密、认证&#xf…

【蓝牙mesh】Network协议层介绍

Network层简介

在这里插入图片描述

   上一章节我们讲解了蓝牙Mesh中Lower层的功能和数据格式。 Lower层的数据往下传输就到了网络层(Network Layer)。网络层定义了收到Lower层的数据后,如何对其进行判断、封装、加密、认证,最后通过承载层(Bearer层)将其发送出去。同时它对接收到的承载层的消息报文进行解密并验证,将其传给Lower层或转发给其他节点。

   Network层应该说是蓝牙Mesh网络中最重要的一层,消息报文在该层会进行单独的加解密和认证, 只要接收到的承载层的数据包通过了Network的校验,那该数据包就是该蓝牙Mesh网络节点的数据, 至于目的地址是不是自身,消息是否正确,则是更上层的处理。 换句话说,只要不是该蓝牙Mesh网络的数据,在蓝牙Mesh的Network层就会被拦截掉,只要通过了Network层的校验,该数据包就是该蓝牙Mesh网络的数据。

2.2.1 地址
   网络层定义了4种基本类型的地址:未分配地址、单播地址、虚拟地址和组播地址。这四种地址的区别,我在之前的博客中都有讲过,这里不多赘述。

下面我们分析Network层的PDU格式

Network层数据包分析

在这里插入图片描述

下面介绍下每个字段的含义:

网络层PDU使用从单个网络密钥派生的密钥进行保护,由NID字段标识。

  • 表示IV Index的最低有效位,当SEQ耗尽时会触发IV Index的更新,到时候会更新该标志位。

  • NID字段是一个7位网络标识符,该标识符用来方便地查找用于验证和加密此网络层PDU的加密密钥和隐私密钥。NID值是与加密密钥和隐私密钥一起从网络密钥派生出来的。对于主网络消息和朋友及其低功耗节点之间的私有网络消息,它的派生方式有所不同。

  • CTL字段是一个1位的值,用于确定消息是控制消息的一部分还是访问消息的一部分。
    如果将CTL字段设置为0,则NetMIC为32位值,底层传输层的PDU包含一条访问消息。
    如果将CTL字段设置为1,则NetMIC为64位值,底层传输层的PDU包含一条控制消息。

  • TTL字段表示该数据包还可以被转发几次,每被转发一次,该字段值减一,当TTL为0时,表示数据不可被转发。

  • SEQ字段是一个24位的整数,与IV Index结合使用,对于该节点发起的每个新网络层PDU,该整数应该是唯一的值。

  • SRC字段表示数据包发送方的源地址,是一个16位的值,该地址应为单播地址。SRC字段由发包节点来设置,作为中继节点运行的节点在转发过程中不能修改该字段。

  • DST字段表示数据包接收方的地址,是一个16位的值,该地址应为单播地址、组播地址或虚拟地址。DST字段由发包节点设置,作为中继节点运行的节点在转发过程中不能修改该字段。

  • TransportPDU表示传输协议数据单元,从网络层的角度看,TransportPDU字段是数据的字节序列。当CTL位为0时,TransportPDU字段的最大值为128位。当CTL位为1时,TransportPDU字段的最大值为96位。TransportPDU字段由发包节点的底层传输层设置,网络层不能更改。

  • NetMIC字段表示网络消息完整校验值,是一个32位或64位的字段(取决于CTL位的值),它用于验证DST和TransportPDU是否被更改。当CTL位为0时,NetMIC字段为32位。当CTL位为1时,NetMIC字段为64位。NetMIC由网络层中每个传输节点或中继该网络层PDU的节点设置。

Network层过滤

   Network层支持通过多个Bearer层发送和接受消息。一个承载器可能存在多个实例。承载器的每个实例都通过网络接口连接到Network层。
   什么意思呢?很简单举个例子: 我们的蓝牙Mesh设备配网后,既可以通过ble广播通道来接收来自其他节点的广播数据,也可以通过GATT连接来接收来自手机APP的数据,这两种数据虽然使用不同的Bearer层,但是最终使用的Network层接口都是一样的。

   Network层会对输入和输出的数据进行过滤,当Network层接收到下层的数据包,会将其缓存在Buffer中,当再次接收到相同的数据,就会将其过滤掉,不会再进行处理,这可以减少Network层处理的数据包数量,防止阻塞。
   举个例子:比如一个数据包在网络内,被很多节点进行转发,那每个节点都会多次收到该数据包,难道没收到一次network层都会处理一次该数据包吗? 不是的,Network层的过滤功能就是用在过滤这类数据包的。

Network层行为

中继功能
   中继功能用于中继节点或转发结点通过广播承载器接受的网络层PDU。此功能是可选的,如果支持此功能,则可以单独启用和禁用此功能。如果支持代理特性,则必须同时支持GATT承载器和广播承载器。

代理功能
   代理功能指节点在GATT承载网络和广播承载网络之间中继或转发网络层PDU来实现GATT承载网络和广播承载网络间的消息互通。此功能是可选的,如果支持此功能,可以单独启用和禁用此功能。如果支持代理特性,则同时支持GATT和广播承载。

Network层数据逻辑处理

当Network层接收到来自Bearer层的数据后,数据的处理流程是怎样的呢?

逻辑流程图如下:
在这里插入图片描述

下面介绍上述流程:

  1. 当Network层接收到来自Bearer层的数据后,首先会经过上面说的过滤,如果该数据包是重复包在,则直接过滤掉,否则进入下一步处理。

  2. 经过过滤后,Network层会检查数据包的NID字段是否匹配,如果NID字段不匹配,则数据包直接丢弃。

  3. NID匹配后,就使用Netkey来对数据进行认证,计算消息认证码是否正确,如果消息认证码不匹配则丢弃该数据包。

  4. 匹配通过后,就认定该数据包就是蓝牙Mesh网络中的数据包,检查如果不再Cache缓存中,则可以将数据包发送到Lower层进行处理了。

  5. 如果节点启用了中继功能,并且Network层收到来自广播Bearer层的消息的TTL字段大于等于2,并且目标地址不是自身节点的地址,则会将数据包的TTL值减一,并且将数据转发给网络内的其他节点。

总结

   Network层是蓝牙Mesh协议栈中中,按照协议栈层级仅次于网络承载层的,是对整个蓝牙MeshMesh网络中非常重要的一个协议层。Network层会使用netkey对数据包进行单独的加解密和认证,为mesh网络的数据安全提供有力的保障。

http://www.15wanjia.com/news/181474.html

相关文章:

  • 深圳网站优化费用网站推荐几个
  • 南昌网站改版公司广州网站建设信息科技有限公司
  • 二手汽车手机网站模板宜兴建设局 审图中心 网站
  • 东莞做网站那家好iis网站属性没有asp.net
  • 设计网站的收费图是怎么做的江苏省城乡与建设厅网站
  • wordpress加入夜间模式网站做好后怎么做seo
  • php开源企业网站如何自己做网站建设
  • 易网站票网站开发wordpress新闻发布
  • 房屋租赁网站建设如何给客户定位网站建设网站需要什么
  • 网站tag聚合怎么做512内存做网站
  • 信用网站建设工作简报最牛免费网站建设
  • 网站图片规格网站cdn 自己做
  • 河南企业网站建设教育网站都有哪些
  • 网站设计软件手机版虚拟网站建设步骤
  • 公共法律服务网站平台建设预算网站建设+用ftp上传文件
  • 网站开发程序制作域名备案wordpress仿阿里主题
  • 成都网站定制中心免费做网站的网址有哪些
  • 做优化网站建设wordpress4.9.6
  • 营销型 展示类网站模板编程培训
  • 网站的常用建设技术有哪些旅行社网站建设方案
  • 做照片用的视频模板下载网站公司怎么在百度做网站
  • 网站销售怎么样的家庭办厂3一8万项目
  • 如何开发自己的网站做媛网站
  • 网站不稳定新浪网站首页
  • 南宁商城网站推广公司长沙制作网站
  • 网站是如何做的好两个路由器做双网站
  • php招投标网站源码宠物网站推广怎么做
  • 58同城网站建设的不足西安工业设计公司
  • 小网站关键词重庆游戏公司
  • 高端品牌网站制作十大网站建设公司