coap协议和mqt协议的
本文介绍了什么是CoAP,以及如何在物联网中使用它。 CoAP是一种IoT协议,具有专门为受约束的设备设计的有趣功能。 还有其他一些物联网协议可用于将物联网解决方案构建为MQTT等。
如今,物联网是一个巨大的现实,也是最有趣和最有前途的技术趋势之一。 物联网是一个生态系统,其中的对象,人员,设备相互连接并交换数据。 在此博客中,我们从开发物联网项目以及涉及物联网的多个方面的多个角度介绍了物联网。
什么是CoAP协议?
如前所述,CoAP是一种物联网协议。 CoAP代表受约束的应用协议,它在RFC 7252中定义。 CoAP是一种低开销的简单协议,专门针对受限设备(例如微控制器)和受限网络而设计。 该协议用于M2M数据交换,并且与HTTP非常相似,即使稍后会有重要区别。
CoAP协议的主要功能是:
- M2M中使用的Web协议具有受限的要求
- 异步消息交换
- 低开销,非常易于解析
- URI和内容类型支持
- 代理和缓存功能
您可能会注意到,即使不能将CoAP视为压缩HTTP协议,某些功能也与HTTP非常相似,因为CoAP是专门为IoT设计的,并且更详细地针对M2M,因此针对此任务进行了优化。
从抽象协议层,CoAP可以表示为:
如您所见,CoAp协议有两个不同的层:消息和请求/响应。 消息层处理UDP和异步消息。 请求/响应层基于请求/响应消息来管理请求/响应交互。
CoAP支持四种不同的消息类型:
- 可确认的
- 无法确认
- 致谢
- 重启
在深入研究CoAp协议结构之前,先定义一些我们稍后将要使用的术语是有用的:
端点 :参与CoAP协议的实体。 通常,将端点标识为主机
发件人 :发送消息的实体
收件人 :消息的目的地
客户端 :发送请求的实体和响应的目的地
服务器 :从客户端接收请求并向客户端发送响应的实体
CoAP消息模型
这是CoAP的最低层。 该层处理端点之间的UDP交换消息。 每个CoAP消息都有一个唯一的ID,这对于检测消息重复非常有用。 CoAP消息由以下部分构建:
- 二进制头
- 紧凑的选择
- 有效载荷
稍后,我们将更详细地描述消息格式。
如前所述,CoAP协议使用两种消息:
- 确认消息
- 不可确认的消息
可确认的消息是可靠的消息。 在两个端点之间交换消息时,这些消息可能是可靠的。 在CoAP中,使用确认消息(CON)获得可靠的消息。 使用这种消息,客户端可以确保消息将到达服务器。 一次又一次发送确认消息,直到另一方发送确认消息(ACK)。 ACK消息包含与确认消息(CON)相同的ID。
下图显示了消息交换过程:
如果服务器在管理传入请求时遇到麻烦,则可以发回一个Rest消息(RST)而不是Acknowledge消息(ACK):
另一个消息类别是“不可确认(NON)”消息。 这些是不需要服务器确认的消息。 它们是不可靠的消息,换句话说,它们是不包含必须传递到服务器的关键信息的消息。 包含从传感器读取的值的消息属于此类别。
即使这些消息不可靠,它们也具有唯一的ID。
CoAp请求/响应模型
CoAP请求/响应是CoAP抽象层中的第二层。 使用“确认”(CON)或“非确认”(NON)消息发送请求。 根据服务器是否可以立即响应客户端请求或答案(如果不可用),有几种方案:
如果服务器可以立即响应客户端请求,则如果使用确认消息(CON)承载了请求,则服务器将包含响应或错误代码的确认消息发送回客户端:
正如您在CoAP消息中注意到的那样,有一个令牌。 令牌与消息ID不同,它用于匹配请求和响应。
如果服务器无法立即响应来自客户端的请求,则它将发送带有空响应的Acknowledge消息。 一旦响应可用,服务器就会向客户端发送一条包含该响应的新的Confirmable消息。 此时,客户端发送回确认消息:
如果来自客户端的请求是使用不可确认消息承载的,则服务器将使用不可确认消息进行应答。
CoAp邮件格式
本段涵盖了CoAP消息格式。 到目前为止,我们已经讨论了客户端和服务器之间交换的各种消息,现在该分析消息格式了。 受限的应用程序协议是受限环境中的关键,因此,它使用紧凑的消息。 为了避免分段,消息占用UDP数据报的数据部分。 一条消息由几个部分组成:
哪里:
Ver :2位无符号整数,表示版本
T :它是2位无符号整数,指示消息类型:0可确认,1不可确认
TKL :令牌长度是令牌4位长度
代码 :这是代码响应(8位长度)
消息ID :以16位表示的消息ID
等等。
更多有用的资源:
CoAP安全性方面
处理物联网协议时的一个重要方面是安全性方面。 如前所述,CoAP使用UDP传输信息。 CoAP依靠UDP安全性来保护信息。 由于HTTP使用基于TCP的TLS,因此CoAP使用基于UDP的数据报TLS。 DTLS支持RSA,AES等。 无论如何,我们应该考虑在某些受限设备中可能无法使用某些DTLS密码套件。 重要的是要注意,某些密码套件引入了一些复杂性,并且受约束的设备可能没有足够的资源来管理它。
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协议和mqt协议的