背景
NB-IoT模块有一个CoAP的功能,CoAP是基于UDP协议的一种带有重传机制的事务处理机制的应用层传输协议。关于CoAP的更多介绍,可以参照这个物联网学习笔记系列里面关于CoAP的文章,应该足够用了。
今天主要是在linux平台上搭建一个CoAP并进行简答的测试,主要参考博客CoAP学习笔记——nodeJS node-coap安装和使用(Linux平台) - 物联网 IoT 经验分享小站 - 优快云博客和CoAP协议学习——CoAP基础 - 物联网 IoT 经验分享小站 - 优快云博客。
预备知识
关于CoAP的官方介绍(英文版)的可以移步RFC 7252 The Constrained Application Protocol (CoAP)
以下是我认为的一些CoAP的重要特点:
- 数据包长度小,最小可以达到4字节。
- 采用请求响应的工作模式,共有4中消息类型:
- CON(Confirmable):需要被确认的请求,必须做出响应;
- NON( Non-confirmable):无需确认的请求,不必做响应的消息;
- ACK(Acknowledgement):应答消息,用于应答CON消息;
- RST(Reset):复位消息,当接收方接收到有错误的CON或者NON消息后用于重置收发,或者是在接收方重启时发送。
- 数据包结构:
- Ver(Version):版本信息,2bit,标明CoAP的版本;
- T(Type):消息类型,2bit,从0到3分别是CON、NON、ACK和RST;
- TKL(Token Length):标记长度,4bit,可变长度的token区域(0~8字节)长度;
- Code:消息类型2,8bit,3bit指明几个大类,剩下的5bit是对细节的描述,详情可以看官方的说明;
- Message ID:消息ID,16bit,匹配一次会话所有消息的唯一ID;
- token:标记,由TKL指定长度,标记ID;
- payload:有效载荷(可选项);
- CoAP的URL,类似http,以coap开头,默认端口号5683;
- CoAP观察者模式:CoAP客户端可以以观察者的身份连接到服务端,在客