概述
CoAP( Constrained Application Protocol 约束应用程序协议)是 RFC 7252 中定义的用于受限设备的专用 Internet 应用程序协议。它使设备能够通过互联网进行通信。它被定义为一种旨在用于非常简单的硬件的协议。该协议特别适用于受约束的硬件,例如8位微控制器,低功耗传感器和无法在HTTP或TLS上运行的类似设备。这是对在UDP上运行的HTTP协议的简化,有助于节省带宽。它设计用于同一受限网络(例如,低功耗、有损网络)上的设备之间、Internet 上的设备和一般节点之间,以及由互联网连接的不同受限网络上的设备之间。CoAP还通过其他机制使用,例如移动通信网络上的SMS.
CoAP特点
- 在受限制的情况下满足M2M要求的网络协议环境
- 具有可选可靠性的UDP [RFC0768]绑定支持单播和多播请求
- 异步消息交换
- 低报头开销和解析复杂性
- URI和内容类型支持
- 简单的代理和缓存功能
CoAP协议
它将普通的 HTTP 客户端扩展到具有资源约束的客户端。这些客户端称为 CoAP 客户端。代理设备基于HTTP协议弥合了受约束环境与典型互联网环境之间的差距。同一台服务器负责处理 HTTP 和 CoAP 协议消息。
CoAP协议栈
CoAP数据格式
CoAP 消息格式,由 4 个字节的标头和令牌值(从 0 到 8 个字节)组成。下表提到了由4个字节(即32位)组成的头部标识
CoAP消息头部标识 | 说明 |
Ver | 它是 2 位无符号整数。它提到了 CoAP 版本号。设置为 1。 |
T | 它是 2 位无符号整数。指示消息类型,即可确认 (0)、不可确认 (1)、确认 (2) 或 RESET(3)。 |
TKL | 它是 4 位无符号整数,表示令牌的长度(0 到 8 个字节)。 |
Code | 它是 8 位无符号整数,它分为两部分,即 3 位类 (MSB) 和 5 位详细信息 (LSB)。 |
Message ID | 16 位无符号整数。用于匹配响应。用于检测邮件重复。 |
CoAP数据交换
协议消息在 CoAP 客户端和 CoAP 服务器之间交换有两种模式,单独响应模式和非单独响应模式
通过单独的响应,服务器通知客户端收到请求消息。这将增加处理时间,但有助于避免不必要的重新传输。由于使用了UDP,CoAP物联网是不可靠的协议。因此,CoAP消息到达无序或到达目的地时会丢失。
为了使CoAP成为可靠的协议,停止和等待时,其中包含指数退避重传功能。还引入了重复检测
CoAP在智慧家庭的应用
智能家居网络提供家庭设备的控制和监控能量。能源控制系统采用智能插座管理和监控耗电设备,以提供电压、电流和其他能源信息。可实现事故预警、远程控制、动态节能。系统结构如图12所示。使用CoAP客户端的每个数据收集节点都可以与其他节点交换信息。CoAP都可以安装在局域网或互联网上。与许多用于家用汽车设备的无线协议不同,CoAP的设计不受本地网络的限制,而是提供网络的基础数据,在此系统中,使用 CoAP-HTTP 代理来提供与 CoAP 资源的 HTTP 客户端连接,反之亦然。
设备的能源信息和环境信息由智能插座采集,通过无线通道传送到数据采集模块,然后向代理发送串行数据进行处理和打包。控制服务器分析所有数据并将其存储在数据库中。系统集家庭网络和互联网于一体,用户可访问系统网页,远程控制开关、管理配置、查询能耗等
CoAP & MQTT
MQTT是另一种广泛用于物联网的协议。这两种协议之间存在一些差异。要注意的第一个方面是使用的不同范式。MQTT 使用发布者-订阅者,而 CoAP 使用请求-响应范例。MQTT 使用中央代理将来自发布者的消息分派给客户端。CoAP本质上是一个一对一的协议,与HTTP协议非常相似。此外,MQTT 是一种面向事件的协议,而 CoAP 更适合于状态传输
参考资料
内容审核: