什么是CoAP?
CoAP是一种基于UDP协议的协议,类似于HTTP之于TCP。CoAP是最新提出的新协议,于2012年由IETF工作组提出,IETF 的 6LoWPAN 工作组目前正致力于解决IPv6与WSN (Wireless Sensor Net-works)的融合问题, 以实现 WSN 与现有 IP 网络的无缝互联。IETF 应用领域工作组之一的 CoRE (Constrained Restful Environments)小组希望针对资源受限的节点和网络,实现基于 REST架构的一种合理的通用 Web 协议(传统的 HTTP过于复杂, 开销过大),这些受限节点通常只有8 bit 的微处理器及很小的 ROM 和 RAM, 而受限网络指的是类似于 6LoWPAN 这样有比较高的误包率和10 kbit/s 吞吐量的网络。在这种背景下,CoAP协议提出来, 其主要设计目标是满足受限环境的特殊需求,以便很好地适用于 M2M 应用。
CoAP为什么好用呢?首先是UDP本身就要比TCP简单得多,少去了一些检验验证的工作。再者,CoAP信息结构简单,CoAP有一个紧凑的二进制报头和扩展报头。它只有短短的4 B的基本报头, 基本报头后面跟扩展选项。一个典型的请求报头为10~20 B。
这是一个基本的CoAP信息的架构,对于一个最简的CoAP的信息来说,只要有Ver,type,code,message ID就可以了,至于后面如果有token值的时候,才要再加一个TKL的部分。
CoAP协议基于REST 构架,REST 是指表述性状态转换架构,是互联网资源访问协议的一般性设计风格。为了克服HTTP对于受限环境的劣势,CoAP既考虑到数据报长度的最优化,又考虑到提供可靠通信。一方面,CoAP提供URI,REST 式的方法如GET,POST,PUT和DELETE,以及可以独立定义的头选项提供的可扩展性。另一方面,CoAP基于轻量级的UDP协议,并且允许IP多播。而组通信是物联网最重要的需求之一,比如说用于自动化应用中。为了弥补UDP传输的不可靠性,CoAP定义了带有重传机制的事务处理机制。
并且提供资源发现机制,并带有资源描述。
CoAP协议不是盲目的压缩了HTTP协议,考虑到资源受限设备的低处理能力和低功耗限制,CoAP重新设计了HTTP的部分功能以适应设备的约束条件。另外,为了使协议适应物联网和M2M 应用,CoAP协议改进了一些机制,同时增加了一些功能。图1 显示了HTTProm是什么和CoAP的协议栈。CoAP和HTTP在传输层有明显的区别。HTTP协议的传输层采用了TCP协议,而CoAP协议的传输层使用UDP协议,开销明显降低,并支持多播。
CoAP协议采用了双层的结构。事务层(Transaction layer)处理节点间的信息交换,同时,也提供对多播和拥塞控制的支持。请求/响应层(Request/Response layer)用以传输对资源
进行操作的请求和相应信息。CoAP协议的REST 构架基于该层的通信,REST请求附在一个CON 或者NON消息上,而REST响应附在匹配的ACK消息上。CoAP的双层处理方式,使得CoAP没有采用TCP协议,也可以提供可靠的传输机制。利用默认的定时器和指数增长的重传间隔时间实现 CON消息的重传,直到接收方发出确认消息。另外,CoAP的双层处理方式支持异步通信,这是物联网和M2M应用的关键需求之一。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论