CoAP,全称是Constrained Application Protocol,译为受限制的应用协议,用于资源受限(CPU、内存、硬盘)的小型物联设备。
RFC 7252中有如下说明:
The interaction model of CoAP is similar to the client/server model of HTTP. However, machine-to-machine interactions typically result in a CoAP implementation acting in both client and server roles.
CoAP的交互模型类似于HTTP的客户端/服务器模型。但CoAP是双向通信。
Unlike HTTP, CoAP deals with these interchanges synchronously over a datagram-oriented transport such as UDP.
与HTTP不同,CoAP通过面向数据报的传输(例如UDP)同步处理这些交换。
计算机网络中,网络设备的资源都是相对充足的,传输层使用的是TCP协议,应用层使用的是HTTP协议,该协议构建在REST架构之上。
物联网中,网络环境通常是不稳定的,采集数据的传感设备资源往往是有限的,使用HTTP协议显然是不合适的。
那么,就需要在受限制的物联网环境中,实现类似HTTP协议却使用极少资源且用于M2M通信的应用层协议。
CoAP协议因此而诞生。
从产生的原因中,不难看出:
(1)CoAP协议使用请求/响应模型,能够双向通信;
(2)CoAP协议是Client和Server之间的点对点协议;
(1)CoAP如何定位资源?
与HTTP协议类似:
使用coap://[IP Addr]:5683/sensors/temp;
使用coap://[IP Addr]:5684/sensors/temp;
同样地,使用的请求方法:GET\\POST\\PUT\\DELETE。
(2)CoAP协议能够保证消息可靠传输吗?
CoAP协议有4种消息:Confirmable Message(可确认消息)、Non-confirmable Message(无法确认的消息)、Acknowledgement Message(确认信息)、Reset Message(重置消息)。
CoAP协议通过可确认消息和确认信息来保证消息可靠传输。
(3)CoAP协议如何保证传输数据的安全性?
CoAP使用数据包传输层安全性协议DTLS来保证传输数据的安全。DTLS是基于SSL TLS协议架构上的扩展。
开源工具有:浏览器Chrome插件Copper、coap-cli、libcoap。其中,libcoap是一个优秀的开源项目,使用C语言实现(https://github.com/obgm/libcoap)。
全部0条评论
快来发表一下你的评论吧 !