本文主要讲述Coap协议和专门针对Coap协议开发的Californium框架,文章分成3部分,
1. Coap协议介绍
2. Californium框架介绍
3. Californium框架的使用示例,含代码
文章的第一和第二部分在网上有很多文章,内容都差不多,但是关于Californium的使用,网上很少有资料涉及,感兴趣的读者可以重点关注下。进入正题。
一、Coap协议介绍
Coap(Constrained Application Protocol)是一种在物联网世界的类web协议,它的详细规范定义在 RFC 7252。COAP名字翻译来就是“受限应用协议”,顾名思义,使用在资源受限的物联网设备上。物联网设备的ram,rom都通常非常小,运行TCP和HTTP是不可以接受的。
1.1 COAP协议特点
- COAP网络传输层采用UDP。
- 它基于REST,server的资源地址和互联网一样也有类似url的格式,客户端同样有POST,
GET,PUT,DELETE方法来访问server,对HTTP做了简化。
- COAP是二进制格式的,HTTP是文本格式的,COAP比HTTP更加紧凑。
- 轻量化,COAP最小长度仅仅4B。
- 支持可靠传输,数据重传,块传输。
- 支持IP多播, 即可以同时向多个设备发送请求。
- 非长连接通信,适用于低功耗物联网场景。
1.2 COAP协议消息类型
COAP协议有4种消息类型
CON—— 需要被确认的请求,如果CON请求被发送,那么对方必须做出响应。这有点像TCP,对方必须给确认收到消息,用以可靠消息传输。
NON—— 不需要被确认的请求,如果NON请求被发送,那么对方不必做出回应。这适用于消息会重复频繁的发送,丢包不影响正常操作。这个和UDP很像。用以不可靠消息传输。
ACK —— 应答消息,对应的是CON消息的应答。
RST —— 复位消息,可靠传输时候接收的消息不认识或错误时,不能回ACK消息,必须回RST消息。
1.3 COAP消息格式
1.3.1 消息头(HEAD)
第一行是消息头,必须有,固定4个byte。
Ver : 2bit, 版本信息,当前是必须写0x01。
T: 2bit, 消息类型,包括 CON, NON. ACK, RST这4种。
TKL: 4bit,token长度, 当前支持0~8B长度,其他长度保留将来扩展用。
Code:8bit,分成前3bit(0~7)和后5bit(0~31),前3bit代表类型。 0代表空消息或者请求码, 2开头代表响应码,取值如下:
1 0.00 Indicates an Empty message
2 0.01-0.31 Indicate