抓包分析华为IOT平台CoAP对接流程

说明

使用NB模组对接华为IOT时,使用非常简单,但是一直不清楚平台coap/lwm2m协议对接的具体流程是什么。想在2G/4G模组中也使用这种方式,但是不知道怎么对接平台(不喜欢MQTT对接,协议还是比较重)。因此使用官方的NB设备模拟器,用wireshark抓包分析了设备注册、数据上报和下发的流程。比较简单,可以在任何具备TCP/IP能力的设备上封包实现。

通信流程

1.wireshark数据包

抓包分析华为IOT平台CoAP对接流程_第1张图片

2.流程分析

抓包分析华为IOT平台CoAP对接流程_第2张图片

  • 设备注册。Post,需要携带终端名称(endpointname,唯一,一般为IMEI)。coap报文选项字段内容如下:
    • Uri-Path: t
    • Uri-Path: r
    • Content-Format:application/octet-stream
    • Uri-Query:ep=869976030020714 (IMEI)
  • 平台发起观察请求,观察设备/t/d资源。观察者模式是coap协议引入的一个概念,用于服务端主动向客户端推送资源数据,避免客户端频繁的查询资源,浪费交互时间。Get请求,coap报文的选项字段内容为:
    • Observe:0
    • Uri-Port:31556 (端口号随机)
    • Uri-Path:t
    • Uri-Path:d
  • 平台请求/4/0/8资源,该资源为网络连接信息,终端可回复没有404。

经过上面的步骤,设备就已经注册到平台上了。之后操作中,都是终端作为coap服务器角色,而平台作为coap客户端。

  • 设备上报数据
    由于平台已经观察了终端侧的/t/d资源,之后终端就可以按照通知的方式(响应报文),将数据发送给平台(coap观察者)。此时的终端,其实是coap协议当中的服务器角色;当要发送数据时,该数据作为/t/d资源的信息,仅携带observe选项,由终端发给平台。
    注意: 上报报文其实一条coap响应报文,响应码是2.05 Content; 报文当中的token,应跟注册过程中平台的观察请求中携带的token值一致;observe选项值递增。

  • 平台下发数据
    确认报文,POST请求,token值随机,不同于上报数据时的token,下发的数据在coap报文的负载部分,coap选项如下:

    • Uri-Port:31556
    • Uri-Path:t
    • Uri-Path:d
    • Content-Format:application/octet-stream

    终端收到命令后回复确认。

你可能感兴趣的:(IOT)