本文介绍什么是CoAP，以及如何在物联网设备上使用它。CoAP是一种物联网协议，具有一些专门为受约束的设备而设计的有趣功能。还有其他一些可用于构建物联网解决方案的IoT协议，例如MQTT等。
物联网是最有趣和最有前途的技术趋势之一。在这个生态系统中，对象，人员，设备相互连接并交换数据。在此博客中，我们从多个角度介绍了物联网和开发物联网项目，并涵盖了与物联网相关的多个方面。
什么是CoAP协议？
如前所述，CoAP是一种物联网协议。CoAP意思为ConstrainedApplicationProtocol，在RFC7252中所定义。CoAP是一种低开销的简单协议，专门针对受限设备（例如微控制器）和受限网络而设计。该协议用于M2M数据交换中，并且与HTTP非常相似，即使稍后我们将介绍重要的区别。
CoAP协议的主要特征是：
您可能会注意到，CoAP某些功能也与HTTP非常相似，但是不能将CoAP视为压缩版本的HTTP协议，因为CoAP是专门为IoT设计的，并且更详细地针对M2M，因此针对这些要求必须有所优化。
从抽象协议层，CoAP可以表示为：
正如你所看到的，CoAP协议有两个不同的层：消息负载和请求/响应。消息层处理UDP和异步消息。请求/响应层基于请求/响应消息来管理请求/响应交互。
在深入研究CoAP协议之前，以下必要的术语有助于我们更好的了解CoAP协议：
这是CoAP的最低层。该层处理端点之间的UDP交换消息。每个CoAP消息都有一个唯一的ID。这对于检测消息重复很有用。CoAP消息由以下部分构建：
如前所述，CoAP协议使用两种消息：
可确认消息是可靠消息。在两个端点之间交换消息时，这些消息可能是可靠的。在CoAP中，使用确认消息（CON）获得可靠的消息。使用这种消息，客户端可以确保消息将到达服务器。反复发送确认消息，直到另一方发送确认消息（ACK）。ACK消息包含与确认消息（CON）相同的ID。
下图显示了消息交换过程：
如果服务器在管理传入请求时遇到问题，则可以发送回Rest消息（RST）而不是Acknowledge消息（ACK）：
另一个消息类别是“不可确认（NON）”消息。这些是不需要服务器确认的消息。它们是不可靠的消息，或者换句话说，这些消息不包含必须传递给服务器的关键信息。包含从传感器读取的值的消息属于此类别。
即使这些消息不可靠，它们也具有唯一的ID。
如果服务器无法立即响应来自客户端的请求，则它将发送带有空响应的确认消息。一旦响应可用，服务器就会向客户端发送一条新的Confirmable消息，其中包含响应。此时，客户端发送回确认消息：
如果来自客户端的请求是使用不可确认消息承载的，则服务器将使用不可确认消息进行应答。
本段涵盖了CoAP消息格式。到目前为止，我们已经讨论了客户端和服务器之间交换的各种消息。现在是时候分析消息格式了。受限的应用程序协议是受限环境中的关键，因此，它使用紧凑的消息。为了避免分段，消息占用UDP数据报的数据部分。一条消息由几个部分组成：
这描述了请求和响应着两种消息类型上下文的数据包消息类型。
0:可确认:该消息需要相应的确认消息。
MessageID(16bits):用于检测消息重复并将“确认/重置”类型的消息与“确认”/“不可确认”类型的消息进行匹配。：响应消息将具有与请求相同的消息ID。
处理物联网协议时的一个重要方面是安全性方面。如前所述，CoAP使用UDP传输信息。CoAP依靠UDP安全性方面来保护信息。由于HTTP使用基于TCP的TLS，因此CoAP使用基于UDP的数据报TLS。DTLS支持RSA，AES等。无论如何，我们应该考虑在某些受限设备中可能无法使用某些DTLS密码套件。重要的是要注意，某些密码套件引入了一些复杂性，并且受约束的设备可能没有足够的资源来管理它。
------本文结束感谢您的阅读-------------
给我加点油吧!