【开源物联网】CoAP协议解析和RESTful开源实现

1、概述

CoAP(Constrained Application Protocol)受限应用协议是一种物联网通信协议。顾名思义,其目标是面向资源受限物理设备通信而设计的。同时,CoAP支持RESTful(Representational State Transfer)表征性状态转移架构,实现CoAP物联网对象通过GET、POST、PUT和DELETE四种统一方式接入。本文从CoAP报文解析开始到RESTful实现提供一套基础开源框架实现奇辰Open-API

2、CoAP开源架构

设计CoAP开源架构如下图所示:

 接入CoAP物联网的对象包括各种物理设备和应用终端,比如微信小程序。相比于MQTT等其它物联网协议采用TCP作为底层协议,CoAP为了实现受限资源对象接入通常选择UDP无连接协议作为底层协议。从顶层应用调用底层协议技术实现CoAP通信是个复杂过程,本文实现的CoAP开源框架奇辰Open-API将其分成两层:

  • 协议处理层:负责CoAP报文按照 RFC 7252规范进行编码和解码,调用底层基础协议进行发送和接收;
  • RESTful层:在协议处理层基础上为应用层暴露统一的GET、POST、PUT和DELETE操作接口,实现物联网对象的类Web访问。

3、CoAP协议处理实现

3.1报文格式

CoAP报文格式如下:

 报文分4个部分:

1)Head报文头:

报文头包含4个字节,可知一条最简单的CoAP报文即为4字节。其由4个部分构成:

  • Ver:2bit,版本信息,目前为固定0x01;
  • T:2bit,消息类型,包括 CON, NON, ACK, RST4种,取值如下:
CON 0x00
NON 0x01
ACK 0x10
RST 0x11
  • TKL:4bit,token长度,取值范围0-8字节;
  • Code:8bit,功能码/响应码。Code被分成前3位和后5位两部分,两部分构成一个小数,功能划分如下:
0.00 空报文
0.01-0.31 请求报文
1.00-1.31 保留
2.00-5.31 响应报文
6.00-7.31 保留

具体含义为:

0.01 GET方法——用于获得某资源
0.02 POST方法——用于创建某资源
0.03 PUT方法——用于更新某资源
0.04 DELETE方法——用于删除某资源
2.01 Created
2.02 Deleted
2.03 Valid
2.04 Changed
2.05 Content。类似于HTTP 200 OK
4.00 Bad Request 请求错误,服务器无法处理。类似于HTTP 400
4.01 Unauthorized 没有范围权限。类似于HTTP 401
4.02 Bad Option 请求中包含错误选项
4.03 Forbidden 服务器拒绝请求。类似于HTTP 403
4.04 Not Found 服务器找不到资源。类似于HTTP 404
4.05 Method Not Allowed 非法请求方法。类似于HTTP 405
4.06 Not Acceptable 请求选项和服务器生成内容选项不一致。类似于HTTP 406
4.12 Precondition Failed 请求参数不足。类似于HTTP 412
4.15 Unsuppor Conten-Type 请求中的媒体类型不被支持。类似于H
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值