1、介绍
访问层(the Access layer) 定义高层应用如何使用上层传输层(the upper transport layer)。定义应用数据的格式;定义和控制应用数据在上层传输层的加密和解密;在发送到上层前,检查进入的应用数据是否在正确的网络中被接收。
2.1 Access payload
一个进入载荷可能有12octets,可以有32个片段,最大384octets,包括TransMIC。
操作码:一组八位字节组成,可能是1/2/3个octets。操作码的第一个字节决定了操作码的字节数。
2.2 Access layer behavior
1、发送一个access消息
model的消息被传输到一个目的地址,可以是单播地址、组地址或者虚拟地址。
TTL设置问题,时延问题,以及限制10s窗口内一个节点不能产生100个lower Transport PDUs。
2、接收一个access消息
opcode需要属于被寻址的模块的元素
目的地址需要被设置为该模块元素订阅的单播地址组播地址或虚拟地址,或者是目的地址设置为节点主元素的固定组地址。
模块绑定的应用和设备key被用于加密传输消息。
3、安全情况
节点产生消息使用配置给model的Appkey或者Devkey;应答消息总是使用通信请求的Devkey或Appkey。
4、消息错误流程
当接收一个不能被元素理解的消息,将忽略这个消息。
包括下面几种条件:
应用opcode不能被接收元素识别;应用操作码的输入消息小大是错误的;应用参数包括的值是当前prohibited保留的。
注意:一个需要确认的消息没有被对端节点理解,将无法接收到任何回应消息。
2.3 不需确认的消息和需确认的消息
2.4 示例消息流程图
(1)Acknowledged Get
(2)Acknowledged Set
(3)以Config Heartbeat Publication为例
Config Friend Set -------------》publishing heartbeat
Config GATT Proxy Set -------------》publishing heartbeat
Config Heartbeat Publication Set -------------》publishing heartbeat
Config Relay Set -------------》publishing heartbeat
state change -------------》publishing heartbeat,如果状态改变超过2s,从开始状态改变1s内传输额外的状态消息。
根据period和count来决定发送频率