CoAP协议及开源实现
2013-04-30 11:35
274 查看
1. CoAP协议的简单介绍
CoAP是一种面向网络的协议,采用了与HTTP类似的特征,核心内容为资源抽象、REST式交互以及可扩展的头选项等。这些关键特征使得因特网由简单的文档检索机制(World Wide Web)演进成为现在繁荣的应用平台(Web 2.0)。HTTP作为IETF 成功长期采用的标准,可以用较小的脚本程序来融合不同的资源和服务。它提供的互操作性正是物联网的关键讨论内容,从而HTTP 被推向设备层面。但是由于HTTP基于TCP传输协议,采用点对点的通信模型,不适合于推送通知服务,而且对于受限设备(如8-bit
微处理器)HTTP过于复杂。
CoAP协议基于REST 构架,REST 是指表述性状态转换架构,是互联网资源访问协议的一般性设计风格。为了克服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协议,开销明显降低,并支持多播。
CoAP协议采用了双层的结构。事务层(Transaction layer)处理节点间的信息交换,同时,也提供对多播和拥塞控制的支持。请求/响应层(Request/Response layer)用以传输对资源进行操作的请求和相应信息。CoAP协议的REST 构架基于该层的通信,REST请求附在一个CON 或者NON消息上,而REST响应附在匹配的ACK消息上。CoAP的双层处理方式,使得CoAP没有采用TCP协议,也可以提供可靠的传输机制。利用默认的定时器和指数增长的重传间隔时间实现
CON消息的重传,直到接收方发出确认消息。另外,CoAP的双层处理方式支持异步通信,这是物联网和M2M应用的关键需求之一。
2. 开源实现
维基百科:http://en.wikipedia.org/wiki/Constrained_Application_Protocol
其中两个开源版本:libcoap(C语言实现)和Californium(java语言实现),比较实用。
3.相关论文
《CoAP协议分析及应用场景设计》《基于CoAP的智能家居功耗监控系统的通信机制设计与实现》
介绍CoAP协议、应用场景、实现方案等等。
4.CoAP协议内容
其中比较重要的有:
draft-ietf-core-block-10:介绍块传输
draft-ietf-core-coap-14:CoAP协议的核心内容
draft-ietf-core-link-format-14:介绍link format
draft-ietf-core-observe-14:介绍观察者模式的实现
CoAP是一种面向网络的协议,采用了与HTTP类似的特征,核心内容为资源抽象、REST式交互以及可扩展的头选项等。这些关键特征使得因特网由简单的文档检索机制(World Wide Web)演进成为现在繁荣的应用平台(Web 2.0)。HTTP作为IETF 成功长期采用的标准,可以用较小的脚本程序来融合不同的资源和服务。它提供的互操作性正是物联网的关键讨论内容,从而HTTP 被推向设备层面。但是由于HTTP基于TCP传输协议,采用点对点的通信模型,不适合于推送通知服务,而且对于受限设备(如8-bit
微处理器)HTTP过于复杂。
CoAP协议基于REST 构架,REST 是指表述性状态转换架构,是互联网资源访问协议的一般性设计风格。为了克服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协议,开销明显降低,并支持多播。
CoAP协议采用了双层的结构。事务层(Transaction layer)处理节点间的信息交换,同时,也提供对多播和拥塞控制的支持。请求/响应层(Request/Response layer)用以传输对资源进行操作的请求和相应信息。CoAP协议的REST 构架基于该层的通信,REST请求附在一个CON 或者NON消息上,而REST响应附在匹配的ACK消息上。CoAP的双层处理方式,使得CoAP没有采用TCP协议,也可以提供可靠的传输机制。利用默认的定时器和指数增长的重传间隔时间实现
CON消息的重传,直到接收方发出确认消息。另外,CoAP的双层处理方式支持异步通信,这是物联网和M2M应用的关键需求之一。
2. 开源实现
维基百科:http://en.wikipedia.org/wiki/Constrained_Application_Protocol
其中两个开源版本:libcoap(C语言实现)和Californium(java语言实现),比较实用。
3.相关论文
《CoAP协议分析及应用场景设计》《基于CoAP的智能家居功耗监控系统的通信机制设计与实现》
介绍CoAP协议、应用场景、实现方案等等。
4.CoAP协议内容
其中比较重要的有:
draft-ietf-core-block-10:介绍块传输
draft-ietf-core-coap-14:CoAP协议的核心内容
draft-ietf-core-link-format-14:介绍link format
draft-ietf-core-observe-14:介绍观察者模式的实现
相关文章推荐
- CoAP协议及开源实现
- Coap协议介绍,及其开源实现Californium实战
- CoAP协议及开源实现
- CoAP协议及开源实现
- CoAP协议及开源实现
- Server端CoAP协议实现
- 开源一个C++实现的简单HTTP协议处理库
- MingQQ v1.0高仿版开源了,使用WebQQ协议实现了QQ客户端基本的聊天功能...
- PHP开源Fetion协议实现(openfetion)
- RabbitMQ是一个由erlang开发的基于AMQP(Advanced Message Queue )协议的开源实现。
- CoAP协议的常用开源代码实现
- 开源的C#实现WebSocket协议客户端和服务器websocket-sharp组件解析
- mosquitto-MQTT协议的开源实现
- 直播电视HLS协议分析及实现1---相关开源工程代码
- 使用开源消息推送协议的实现-mosquitto
- java\C#\php主流语言实现FMS流媒体传输协议RTMP的开源组件
- MingQQ v1.0高仿版开源了,使用WebQQ协议实现了QQ客户端基本的聊天功能...
- 开源RTP协议实现:Java.net.rtp说明(1)
- 无线物联网中CoAP协议的研究与实现【转】
- CoAP协议的常用开源代码实现