基于 CoAP 协议的连接


设备开发者可以通过 CoAP/UDP 协议,将设备采集的实时数据上报到 EnOS,借助 EnOS,实现海量设备的安全连接和数据管理能力。NB-IoT 设备接入 EnOS 的流程如下图:

../../_images/coap_messageflow.png


  1. 设备端集成设备认证密钥(ProductKey、DeviceKey和DeviceSecret)。

  2. 设备通过运营商提供的 NB-IoT 网络连接到 EnOS,运营商负责管理设备产生的流量数据和计费,不储存业务数据。

  3. 应用开发者可以通过 EnOS 的 API 获取设备数据、修改测点属性、调用设备服务,并将获取的数据呈现在应用中。

CoAP 协议标准

EnOS 支持的协议标准为 RFC 7252 Constrained Application Protocol,具体参考:RFC 7252

EnOS CoAP约定

支持可确认请求(CON),响应会以 Piggybacked 形式在 ACK 消息中返回。

实现了 RFC 7252 协议规定的 CoAP 缓存功能,因此要求设备对于每一个新的请求,使用不同 CoAP Message ID 和 Token。

EnOS 支持 CoAP 协议中的 Block-wise 传输功能,具体参考:RFC 7959

DTLS 安全通道

设备请求连接到指定的 CoAP 服务器,然后建立 DTLS 安全通道。连接过程主要步骤如下:

  1. 设备首先发送 DTLS 握手请求;

  2. 设备端和 EnOS 根据预定义的算法协商PSK参数;

  3. 设备端发送 pskid 和 len 参数到 EnOS 进行校验,成功后建立安全连接通道。


建立安全通道之后,设备发起身份认证请求,如果采用加密方式,此步骤可与上一步DTLS握手合并;如果采用非加密方式,则采用密钥认证方式,支持选择一机一密和一型一密,如果采用后者需先返回 devicesecret 再认证。


EnoS 使用 DTLS v1.2 保证通道安全,具体参考:RFC 6347

说明与限制

当设备通过 CoAP 协议接入 EnOS 时,Topic 规范和 MQTT Topic 一致,CoAP 协议内接口对于所有 topic 和 MQTT Topic 可以复用。

EnOS CoAP 接入目前不支持资源发现功能,不支持资源观察功能。

通过 CoAP 传输数据的大小依赖于 MTU 的大小,建议在 1KB 以内。

下一步

参考CoAP 协议规范将设备接入 EnOS 并复用 MQTT topic 与 EnOS 云端进行数据传输。