COAP协议解析和简单打包实现

1. COAP概述

由于物联网中的很多设备都是资源受限型的,即只有少量的内存空间和有限的计算能力,所以传统的HTTP协议应用在物联网上就显得过于庞大而不适用。 IETF的CoRE工作组提出了一种基于REST架构的COAP协议。

2. 协议格式

【Ver】版本号
【T】报文类型, CoAP协议定了4种不同形式的报文, CON(0)报文, NON(1)报文, ACK(2)报文和RST(3)报文.
【TKL】CoAP标识符长度, CoAP协议中具有两种功能相似的标识符, 一种为Message ID(报文编号), 一种为Token(标识符). 其中每个报文均包含消息编号, 但是标识符对于报文来说是非必须的.
【Code】 请求方法或者应答状态字
【Message ID】报文编号
【Token】标识符具体内容,通过TKL指定Token长度。
【Options】报文选项,通过报文选项可设定CoAP主机,CoAP URI,CoAP请求参数和负载媒体类型等等。
【1111 1111B】CoAP报文和具体负载之间的分隔符。
【payload】 有效数据。

3. code

3.1. 请求方法

0.01 GET:获取资源
0.02 POST:创建资源
0.03 PUT:更新资源
0.04 DELETE:删除资源

3.2. 应答状态字

3.2.1. 成功应答

2.01 Created
2.02 Deleted
2.03 Valid
2.04 Changed
2.05 Content

3.2.2. 客户端错误

这类的状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理。

4.00 Bad Request
4.01 Unauthorized
4.02 Bad Option
4.03 Forbidden
4.04 Not Found
4.05 Method Not Allowed
4.06 Not Acceptable
4.12 Precondition Failed
4.13 Request Entity Too Large
4.15 Unsupported Content-Format

3.2.3. 服务器错误

这类状态码代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器的软硬件资源无法完成对请求的处理。

5.00 Internal Server Error
5.01 Not Implemented
5.02 Bad Gateway
5.03 Service Unavailable

如果这篇文章对您很有帮助,不妨
----- 本文结束 ❤ 感谢您的阅读 ----