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协议FAQ

什么是CoAP
CoAP是受限制的应用协议(Constrained Application Protocol)的代名词。最近几年专家们预测会有更多的设备相互连接,而这些设备的数量将远超人类的数量。在这种大背景下,物联网和M2M技术应运而生。虽然对人们而言,连接入互联网显得方便容易,但是对于那些微型设备而言接入互联网非常困难。在当前由PC机组成的世界,信息交换是通过TCP和应用层协议HTTP实现的。但是对于小型设备而言,实现TCP和HTTP协议显然是一个过分的要求。为了让小设备可以接入互联网,CoAP协议被设计出来。 CoAP是一种应用层协议,它运行于 UDP协议之上而不是像HTTP那样运行于TCP之上。CoAP协议非常小巧,最小的数据包仅为4字节。

CoAP协议是否可以替换HTTP协议?

CoAP并不能替代HTTP协议,但是对于那些小设备(256KB Flash 32KB RAM 20MHz主频)而言CoAP的确是一个好的解决方案。

CoAP消息类型

CoAP采用与HTTP协议相同的请求响应工作模式。CoAP协议共有4中不同的消息类型。
CON——需要被确认的请求,如果CON请求被发送,那么对方必须做出响应。
NON——不需要被确认的请求,如果NON请求被发送,那么对方不必做出回应。
ACK——应答消息,接受到CON消息的响应。
RST——复位消息,当接收者接受到的消息包含一个错误,接受者解析消息或者不再关心发送者发送的内容,那么复位消息将会被发送。

CoAP消息结构

一个CoAP消息最小为4个字节,以下是CoAP协议不同部分的描述。
【版本Version】:类似于IPv6和IPv6,仅仅是一个版本号。
【消息类型Message Type】:CON,NON,ACK,RST。
【消息ID Message ID】:每个CoAP消息都有一个ID,在一次会话中ID总是保持不变。但在这个会话之后该ID会被回收利用。
【标记 Token】:标记是ID的另一种表现。
【选项 Options】:CoAP选项类似于HTTP请求头,它包括CoAP消息本身,例如CoAP端口号,CoAP主机和CoAP查询字符串等。
【负载Payload】:真正有用的被交互的数据。

图 CoAP消息结构
CoAP的URL

在HTTP的世界中,RESTFul协议由于其简单性和适用性,在WEB应用中越来越受欢迎,这样的道理同样适用于CoAP。一个CoAP资源可以被一个URI所描述,例如一个设备可以测量温度,那么这个温度传感器的URI被描述为:CoAP://machine.address:5683/sensors/temperature。请注意,CoAP的默认UDP端口号为5683。

CoAP观察模式

在物联网的世界中,你需要去监控某个传感器例如温度或湿度等。在这种情况下,CoAP客户端并不需要不停的查询CoAP服务器端的数据变化情况。CoAP客户端可以发送一个观察请求到服务器端。从该时间点开始计算,服务器便会记住客户端的连接信息,一旦温度发生变化,服务器将会把新结果发送给客户端。如果客户端不在希望获得温度检测结果,那么客户端将会发送一个RST复位请求,此时服务器便会清除与客户端的连接信息。

CoAP块传输

CoAP协议的特点是传输的内容小巧精简,但是在某些情况下不得不传输较大的数据。在这种情况下可以使用CoAP协议中的某个选项设定分块传输的大小,那么无论是服务器或客户端可完成分片和组装这两个动作。

物联网的coap协议相关推荐

  1. 【物联网】CoAP协议总结

    [物联网]CoAP协议总结 一.概述 二.CoAP报文结构 1.报头 2.可选字段 3.数据 参数详解 三.CoAP逻辑分层 四.CoAP传输模型 4.1 CoAP Message模型 1. CoAP ...

  2. Thingsboard 物联网平台 CoAP 协议介绍

    可复制:121202538 中文社区:http://thingsboard.org.cn TB的MQTT设备协议 TB官网: https://thingsboard.io/ TB GitHub: ht ...

  3. 物联网基础之了解CCP协议,COAP协议,MTQQ协议等

    首先介绍下背景.最近开始研究物联网的套件.公司选中了阿里物联网套件,所以博主就开始投入到漫长的开发文档中.由于博主并非嵌入式开发者,所以一些名字没有听过,这对文档的阅读造成了不少的困扰,所以在此记录一 ...

  4. 物联网协议Coap协议介绍

    COAP协议简介 Coap(Constrained Application Protocol)是一种在物联网世界的类web协议,它的详细规范定义在 RFC 7252.COAP名字翻译来就是" ...

  5. 物联网通信之Coap 协议

    物联网通信之Coap 协议 Coap 简介 名为受限制的应用协议,是UDP上的应用层协议.适用于小内存,低处理和低存储能力的设备.传输内容小巧精简,对于较大的数据可分块传输.客户端可以发送观察者请求, ...

  6. 阿里云物联网平台 > 设备接入 > 使用开放协议自主接入 > CoAP协议接入 >

    CoAP连接通信 更新时间:2020-08-27 17:20:05 编辑我的收藏 本页目录 基础流程 使用对称加密自主接入 使用DTLS自主接入 物联网平台支持CoAP协议连接通信.CoAP协议适用在 ...

  7. 物联网协议-CoAP协议简介

    1. 什么是CoAP CoAP是受限制的应用协议(Constrained Application Protocol)的简称.最近几年专家们预测会有更多的设备相互连接,而这些设备的数量将远超人类的数量. ...

  8. 物联网平台 源码 智慧农业物联网平台 ,支持mqtt,h ttp,coap协议 java+postgresql,支持集群

    物联网平台 源码 智慧农业物联网平台 ,支持mqtt,h ttp,coap协议 java+postgresql,支持集群. 支持萤石云摄像头接入,云台控制,支持nbiot,lora物联网平台,5g物联 ...

  9. 物联网协议之CoAP协议开发学习笔记之术语解释

    哪有什么天生如此,只是我们天天坚持. -Zhiyuan 此文章主要总结CoAP协议的术语解释: 只在网上找到了[RFC2616] 的解释,但是这些都是通用的 本文档要求读者熟悉[RFC2616]中讨论 ...

最新文章

  1. 脑机综述(一) | 脑机接口在康复医学中的应用进展
  2. SpringCloud系列——Zuul 动态路由
  3. 一文弄懂YOLO目标检测算法
  4. MySQL 安装包下载教程
  5. 好文转发《我现在是这样编程的》
  6. win7+计算机+桌面图标不见了怎么办,win7电脑系统桌面图标不见了怎么办
  7. 惊呼!JavaScript基本数据类型和引用数据类型详解
  8. 反编译用unity打包的资源文件
  9. 到达一个数 Reach a Number
  10. 移动云正式发布基于龙蜥 Anolis OS 的 BC-Linux V8.2 通用版操作系统
  11. Part Ⅱ At the Restaurant 在饭店??
  12. AspNetCore中使用Ocelot之 IdentityServer4(1)
  13. 最长回文串之中心扩散法
  14. Mysql更新关联子查询报错
  15. wxWindows的事件表机制
  16. Typora设置高亮
  17. 如何用友远程到服务器,怎么安装用友T3远程通
  18. 黄金分割数0.618与美学有重要的关系。舞台上报幕员所站的位置大约就是舞台宽度的0.618处
  19. 宅男福利!爬虫实战,爬取原神真人c图片并保存,谁的老婆快抱走
  20. 爽啊,这么多有趣好玩强大的 Python 库

热门文章

  1. mysql rpc_启用mysql作用
  2. 无法运行宏,可能是因为该宏在此工作簿中不可用,或者所有的宏都被禁用的解决方法...
  3. opencv学习手册(三)(线条识别)(更新中
  4. 精准准确的统一社会信用代码正则(js)
  5. XMPP与SIP-IM两大协议的对比
  6. Microsoft Surface 平板电脑
  7. 细说社交化经销商服务的十大典型应用场景
  8. 【Unity】Unity下载器下载不下IOS/Android等模块的解决办法
  9. 人脸识别(Facenet)
  10. JQuary(从原生js到jq,就发现jq好简单)