COAP 协议学习
1、CoAP 简单介绍
在 2010 年 3 月,CoRE 工作组开始制定 CoAP 协议,到目前为止,该协议还
没有定稿。CoAP 协议是为物联网中资源受限设备制定的应用层协议。CoAP 是受
限制的应用协议(Constrained Application Protocol)的代名词。在最近几年的
时间中,专家们预测会有更多的设备相互连接,而这些设备的数量将远超人类的
数量。在这种大背景下,物联网和 M2M 技术应运而生。虽然对人而言,连接入
互联网显得方便容易,但是对于那些微型设备而言接入互联网非常困难。在当前
由 PC 机组成的世界,信息交换是通过 TCP 和应用层协议 HTTP 实现的。但是对
于小型设备而言,实现 TCP 和 HTTP 协议显然是一个过分的要求。为了让小设备
可以接入互联网,CoAP 协议被 设计出来。CoAP 是一种应用层协议,它运行于
UDP 协议之上而不是像 HTTP 那样运行于 TCP 之上。CoAP 协议非常的小巧,最小
为了克服 HTTP 对于受限环境的劣势,CoAP 既考虑到数据报长度的最优化,
又考虑到提供可靠通信。一方面,CoAP 提供 URI,REST 式的方法如 GET,POST,
PUT 和 DELETE,以及可以独立定义的头选项提供的可扩展性。另一方面,CoAP
基于轻量级的 UDP 协议,并且允许 IP 多播。而组通信是物联网最重要的需求之
一,比如说用于自动化应用中。为了弥补 UDP 传输的不可靠性,CoAP 定义了带
有重传机制的事务处理机制。并且提供 资源发现机制,并带有资源描述。
CoAP 协议不是盲目的压缩了 HTTP 协议,考虑到资源受限设备的低处理能力
和低功耗限制,CoAP 重新设计了 HTTP 的部分功能以适应设备的约束条件。另外,
为了使协议适应物联网和 M2M 应用,CoAP 协议改进了一些机制,同时增加了一
些功能。下图 1 显示了 HTTP 和 CoAP 的协议栈。CoAP 和 HTTP 在传输层有明显的
区别。HTTP 协议的传输层采用了 TCP 协议,而 CoAP 协议的传输层使用 UDP 协议,