CoAP 协议详解以及如何在物联网中使用它

本文介绍了什么是CoAP以及如何在物联网中使用它。 CoAP是一种IoT协议,具有专门为受约束的设备设计的有趣功能。 还有其他一些物联网协议可用于将物联网解决方案构建为MQTT等。
 
如今,物联网是一个巨大的现实,也是最有趣和最有前途的技术趋势之一。 物联网是一个生态系统,其中的对象,人员,设备相互连接并交换数据。 在此博客中,我们从开发物联网项目以及涉及物联网的多个方面的多个角度介绍了物联网。

什么是CoAP协议?

如前所述,CoAP是一种物联网协议。 CoAP代表受约束的应用协议,它在RFC 7252中定义。 CoAP是一种低开销的简单协议,专门用于受限设备(例如微控制器)和受限网络。 该协议用于M2M数据交换,并且与HTTP非常相似,即使稍后会有重要区别。

CoAP协议的主要功能是:

  • M2M中使用的Web协议具有受限的要求
  • 异步消息交换
  • 低开销,非常易于解析
  • URI和内容类型支持
  • 代理和缓存功能

您可能会注意到,即使不能将CoAP视为压缩HTTP协议,某些功能也与HTTP非常相似,因为CoAP是专门为IoT设计的,并且更详细地针对M2M,因此针对此任务进行了优化。

从抽象协议层,CoAP可以表示为:

CoAP 协议详解以及如何在物联网中使用它_第1张图片

如您所见,CoAp协议有两个不同的层:消息和请求/响应。 消息层处理UDP和异步消息。 请求/响应层基于请求/响应消息来管理请求/响应交互。

CoAP支持四种不同的消息类型:

  • 可确认的
  • 无法确认
  • 致谢
  • 重启

在更深入地介绍CoAp协议结构之前,先定义一些我们稍后将要使用的术语是有用的:

端点 :参与CoAP协议的实体。 通常,将端点标识为主机

发件人 :发送消息的实体

收件人 :消息的目的地

客户端 :发送请求的实体和响应的目的地

服务器 :接收来自客户端的请求并向客户端发送回响应的实体

CoAP消息模型

这是CoAP的最低层。 该层处理端点之间的UDP交换消息。 每个CoAP消息都有一个唯一的ID,这对于检测消息重复非常有用。 CoAP消息由以下部分构建:

  • 二进制头
  • 紧凑的选择
  • 有效载荷

稍后,我们将更详细地描述消息格式。

如前所述,CoAP协议使用两种消息:

  • 确认消息
  • 不可确认的消息

可确认的消息是可靠的消息。 在两个端点之间交换消息时,这些消息可能是可靠的。 在CoAP中,使用确认消息(CON)获得可靠的消息。 使用这种消息,客户端可以确保消息将到达服务器。 反复发送确认消息,直到另一方发送确认消息(ACK)。 ACK消息包含与确认消息(CON)相同的ID。

下图显示了消息交换过程:

CoAP 协议详解以及如何在物联网中使用它_第2张图片

如果服务器在管理传入请求时遇到麻烦,则可以发回一个Rest消息(RST)而不是Acknowledge消息(ACK):

CoAP 协议详解以及如何在物联网中使用它_第3张图片

另一个消息类别是“不可确认(NON)”消息。 这些是不需要服务器确认的消息。 它们是不可靠的消息,或者换句话说,它们不包含必须传递给服务器的关键信息。 包含从传感器读取的值的消息属于此类别。

即使这些消息不可靠,它们也具有唯一的ID。

CoAP 协议详解以及如何在物联网中使用它_第4张图片

CoAp请求/响应模型

CoAP请求/响应是CoAP抽象层中的第二层。 使用“确认”(CON)或“非确认”(NON)消息发送请求。 根据服务器是否可以立即响应客户端请求或答案(如果不可用),有几种方案:

如果服务器可以立即响应客户端请求,则如果使用确认消息(CON)承载了请求,则服务器会向客户端发送包含响应或错误代码的确认消息:

CoAP 协议详解以及如何在物联网中使用它_第5张图片

正如您在CoAP消息中注意到的那样,有一个令牌。 令牌与消息ID不同,它用于匹配请求和响应。

如果服务器无法立即响应来自客户端的请求,则它将发送带有空响应的Acknowledge消息。 一旦响应可用,服务器就会向客户端发送一条包含该响应的新的Confirmable消息。 此时,客户端发送回确认消息:

CoAP 协议详解以及如何在物联网中使用它_第6张图片

如果来自客户端的请求是使用不可确认消息承载的,则服务器将使用不可确认消息进行应答。

CoAp邮件格式

本段涵盖了CoAP消息格式。 到现在为止,我们已经讨论了客户端和服务器之间交换的各种消息,现在该分析消息格式了。 受限的应用程序协议是受限环境中的关键,因此,它使用紧凑的消息。 为了避免分段,消息占用UDP数据报的数据部分。 一条消息由几个部分组成:

CoAP 协议详解以及如何在物联网中使用它_第7张图片

哪里:

Ver :2位无符号整数,表示版本

T :它是2位无符号整数,指示消息类型:0可确认,1不可确认

TKL :令牌长度是令牌4位长度

代码 :这是代码响应(8位长度)

消息ID :以16位表示的消息ID

等等。

更多有用的资源:

  • MQTT协议教程
  • 物联网协议概述

CoAP安全方面

处理物联网协议时的一个重要方面是安全性方面。 如前所述,CoAP使用UDP传输信息。 CoAP依靠UDP安全性方面来保护信息。 由于HTTP使用基于TCP的TLS,因此CoAP使用基于UDP的数据报TLS。 DTLS支持RSA,AES等。 无论如何,我们应该考虑在某些受限设备中可能无法使用某些DTLS密码套件。 重要的是要注意,某些密码套件引入了一些复杂性,并且受约束的设备可能没有足够的资源来管理它。

CoAP 协议详解以及如何在物联网中使用它_第8张图片

CoAP与MQTT

涵盖的重要方面是CoAP和MQTT之间的主要区别。 如您所知, MQTT是物联网中广泛使用的另一种协议。 这两种协议之间存在一些差异。 注意的第一个方面是所使用的不同范例。 MQTT使用发布者-订阅者,而CoAP使用请求-响应范例。 MQTT使用中央代理将来自发布者的消息调度到客户端。 CoAP本质上是与HTTP协议非常相似的一对一协议。 而且,MQTT是面向事件的协议,而CoAP更适合于状态转移。

翻译自: https://www.javacodegeeks.com/2018/11/coap-protocol-step-step-guide.html

你可能感兴趣的:(CoAP 协议详解以及如何在物联网中使用它)