物联网通信协议-COAP

CoAP协议优点

CoAP(Constrained Application Protocol)是一种适用于物联网(IoT)设备的应用层协议,具有以下优点:

低功耗:适用于电池供电的设备,能够显著减少设备的能耗。

低开销和高效性:CoAP协议设计轻量,能够在资源受限的嵌入式设备运行,适用于低带宽、高延迟的网络环境。

协议格式简洁:采用简洁的二进制消息格式,减少了报文的大小和解析的复杂度

可靠传输:通过消息层提供重传机制,弥补了UDP传输的不可靠性

RESTful风格:支持类似HTTP的RESTful接口,与现有的互联网应用和服务集成更加方便。

1. COAP逻辑分层结构

CoAP 采用 了 双层 结构—— 消息 层 和 请求/ 响应 层。消息 层 处理 端点 之间 的 数据 交换, 并为 CON、 NON、 ACK 和 RST 报文 类型 提供重传 机制,CoAP 通过 增加 消息 层 的 方式 弥补 UDP 传输 的 不 可靠性。

 

2. COAP三种工作模式

1) 携带模式: ACK 报文 中 包含 响应 负载, 响应 负载 为 文本 形式。

2)分离 模式 中 总共 产生 两 组 CON 报文 和 ACK 报文。 相比 于 携带 模式,分离 模式 需要 进行 4 次 交互.

.

03) 非确认模式:

3. COAP 报文类型

3.1 Confirmable Message( CON):

在 请求/ 响应 交互 过程中, CON 报文 需要 被 接收者 确认。 每一个 CON 报文 必须 要对 应 一个 准确 的 ACK 报文 或 RST 报文, 如果 在 规定 的 时间 内 客户 端 未 接收 到 ACK 报文 或 RST 报文, 那么 客户 端 将会 触发 一次“ 重传”。

3.2 Non- Confirmable Message( NON):

相比 于 CON 报文, NON 报文 的 约束 条件 要 宽松 许多。 单个 NON 报文 不需要 对应 一个 准确 的 ACK 或 RST 报文。 在 一些 传感器 数据 上传 应用 场景 中 NON 报文 较为 常用, 服务器 对 NON 报文 的 处理 也 较为 灵活。 若 服务器 收到 一个 来自 客户 端 的 NON 报文 类型 的 CoAP 请求, 服务器 可选择 不返 回响 应; 同时 客户 端 也不 会 因为 一定 时间 内 没有 收到 来自 服务器 的 ACK 类型 报文 而 触发 重传 机制。

3.3 Acknowledgement Message( ACK):

ACK 报文 用于 确认 CON 报文。 ACK 报文 的 报文 序号( Message ID) 需要 和 CON 报文 的 报文 序号 保持 严格 一致, ACK 报文 可以 在 一定程度 上 保证 CoAP 传输 的 可靠性。 ACK 报文 中 可以 不包括 响应 负载, 可 能为 空。 CoAP 请求/ 响应 过程 定义 了 携带 模式 和 分离 模式, ACK 报文 负载 为 空的 情况 一般 出现 在 分离 模式 中。

3.4 Reset Message( RST):

若服务器 接收 到 一个 CON 报文, 但 由于 报文 中上 下文 缺失 导致 服务器 无法 处理 该报 文, 那么 服务器 将会 返回 一个 RST 报文。RST 报文 的 报文 序号 需 要与 CON 报文 的 报文 序号 保持 严格 一致, 而且 RST 报文 的 负载 一 定为 空。

4. COAP传输机制

4.1 传输参数

4.2. 重传机制

5. COAP协议结构

6. COAP首部

第一个字节

 版本编号(ver--bit7-6):固定为0b01 报文 类型 T(bit5-4):需要确认的报文(0-CON), 不需要确认(1-NON), 应答报文(ACK),复位报文(RST)标签长度 (TKL bit3-0): token标签长度,token长度为0,1,2,4字节

第二个字节CODE:

 Code 部分 采用 c. dd 的 形式 描述, 其中 c 的 取值 范围 为 0 ~ 7, dd取值 范围 为 0 ~31“·

COAP请求

Code= 0. 01 表示 GET 方法 ·

Code= 0. 02 表示 POST 方法 ·

Code= 0. 03 表示 PUT 方法

Code= 0. 04 表示 DELETE 方法

COAP应答

Code= 0. 00 表示 空 报文 ·

Code= 2. xx 表示 正确 响应

Code= 4. xx 表示 客户 端 错误 响应

Code= 5. xx 表示 服务器 错误 响应

第三、四个字节

报文序号(Message ID):用于报文确认、重传,排序。

标签 Token:

CoAP 中 定义 了 两种 不同 形式 的 请求/ 响应 工作 模式: 一种 为 携带 模式; 另一种 为 分离 模式。标签 在 分离 模式 中 发挥 重要的 作用, 但在 携带 模式 中 往往 可以 省略。

选项 Options:

CoAP 选项 包括 Uri- Host、 Uri- Port、 Uri- Path、 Uri- Query、

Content- Format、 Accept、 Etag、 If- Match 和 If- None- Match 等 部分。

分隔符 0xFF:分隔COAP首部和COAP负载

负载 Payload :

支持格式: 二进制、文本、 XML、JSON 、 CBOR。

  • 16
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TechIoT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值