COAP介绍

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

    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应用的关键需求之一。


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。这些消息类型相当于HTTP协议的PUTGET等
    【消息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协议中的某个选项设定分块传输的大小,那么无论是服务器或客户端可完成分片和组装这两个动作。


    最近做了一个项目,使用GPRS模块上传数据应用UDP协议,而服务器没有应答机制。每个数据包均包括一个序列号,序列号占用两个字节。为了保证客户端上传的数据服务器可以收到,客户端采用重发机制,简单的说同一个数据发送2次或者3次,为了区别同一个数据包还加入了子序列号。项目进行到最后出现了一些问题,对比CoAP协议做一个总结。

一个数据包是否需要应答?
    这个需要分情况而定,如果是一个传感器的温度数据,那么传输该数据时可能不需要应答,因为即使该数据丢失了下一时刻新的数据也会把旧的数据覆盖掉。但是如果温度超过一个阈值通俗的讲便是温度报警,在这种情况下传输该数据包往往需要应答,必须要保证服务器接收到该数据包,温度报警往往预示着一个紧急情况即将发生或已经发生。从这个角度看看CoAP协议便发觉CoAP协议设计的非常好,CoAP协议支持4种消息,例如CON需确认消息,NON无需确认消息,CON和NON便可解决该项目的困惑。可以肯定的是,继续研究CoAP协议将会获得更大的收获。


开源实现

维基百科:http://en.wikipedia.org/wiki/Constrained_Application_Protocol

其中两个开源版本:libcoap(C语言实现)和Californium(java语言实现),比较实用。


相关论文

《CoAP协议分析及应用场景设计》《基于CoAP的智能家居功耗监控系统的通信机制设计与实现》

介绍CoAP协议、应用场景、实现方案等等。


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:介绍观察者模式的实现





http://chatgpt.dhexx.cn/article/ogpNrXpS.shtml

相关文章

时序数据库InfluxDB和关系型数据库MySQL的区别及适用场景

数据库主要分为关系型数据库和非关系型数据库,大家所熟悉的数据库中,属Oracle、MySQL和Microsoft SQL Server最出名,使用人数最多,这三种都属于关系型数据库,之所以使用人数这么多,是因为关系型数据库符合大…

vm时序数据库-导入数据

时间序列数据可以通过任何支持的摄取协议导入: Prometheus remote_write API. See these docs for details.DataDog submit metrics API. See these docs for details.InfluxDB line protocol. See these docs for details.Graphite plaintext protocol. See these …

三种常用时序数据库对比调研-InfluxDB、Prometheus、IotDB

1、引言 时序数据治理是数据治理领域核心、打通IT与OT域数据链路,是工业物联网基石、大数据价值创造的关键、企业管理提升的发动机、是数字化转型的重要支撑。 工业企业在生产经营过程中,会运用物联网技术,采集大量的数据并进行实时处理&am…

时序数据 mysql存储_【时序数据库】时序数据库介绍

1.基本概念 时序数据库(Time Series Database)是用于存储和管理时间序列数据的专业化数据库。时序数据库特别适用于物联网设备监控和互联网业务监控场景。 下面介绍下时序数据库的一些基本概念(不同的时序数据库称呼略有不同)。 1.1 度量(metric) 监测数据的指标,例如风力和温…

mysql 时序数据库_时序数据库介绍和使用(转)

1.基础 1.1 时序数据的定义 什么是时间序列数据(Time Series Data,TSD,以下简称时序)从定义上来说,就是一串按时间维度索引的数据。用描述性的语言来解释什么是时序数据,简单的说,就是这类数据描述了某个被测量的主体在一个时间范围内的每个时间点上的测量值。它普遍存在于…

关于时序数据库

https://blog.csdn.net/ransom0512/article/details/78114167 看了一些时序数据库,没有太深入,有一些大概认识,记录下来。 1. 核心 数据存储分为行存储或者列存储,由于列存储的高压缩比,现在使用列存储的比较多一…

时序数据库Machbase

Background 最近偶然接触到Machbase,发现相关信息很少,于是自己做了一些简单的了解,这里记录下,方便有兴趣的童靴参考哈。 1、官方介绍 Machbase是韩国的一家公司开发的一款类似InfluxDB、DolphinDB、TDengine等时序数据库产品&am…

用友:时序数据库要更懂业务场景

本文来自IT168 作者卢敏 时序数据库是针对时间戳或时间序列数据优化的数据库。比如工业企业为了管好工业设备,需要用传感器收集一些带有时间标签的数据,这些数据既要求“超大规模数据瞬时写入”,又要求实现乱序管理。 用友网络助理总裁何冠…

InfluxDB时序数据库

InfluxDB是一个由InfluxData开发的开源时序型数据。它由Go写成,着力于高性能地查询与存储时序型数据。InfluxDB被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景。 InfluxDB有三大特性: Time Series (时间序列&#xff…

【技术选型】时序数据库选型

文章目录 1、前言2、概述2.1 时序数据库的定义2.2 时序数据库的概念2.3 时序数据库的趋势 3、时序数据库对比3.1 influxdb3.2 Prometheus3.3 TDengine3.4 DolphinDB 4、选型结论 1、前言 时序数据治理是数据治理领域核心、打通IT与OT域数据链路,是工业物联网基石、…

mysql时序性数据库_时序数据库入门

数据库的模型包含关系型、key-value 型、Document 型等很多种,那么为什么新型的时序数据库成为监控数据存储的新宠呢? 下面就会从 为什么需要时序数据库? 时序数据库的数据结构 两个方面来介绍一下时序数据库。 1. 为什么需要时序数据库 1.1 …

时序数据库详解和使用

1.基础 1.1 时序数据的定义 什么是时间序列数据(Time Series Data,TSD,以下简称时序)从定义上来说,就是一串按时间维度索引的数据。用描述性的语言来解释什么是时序数据,简单的说,就是这类数据描…

时序数据库 InfluxDB

目录 一、介绍 二、安装 三、inflxudb保留字 四、基本语法 1、客户端操作 1. 数据库操作 2. 数据表和数据操作 3. series 操作 4.Shard 5. 用户操作 2、API操作 状态码 3、Java操作 五、常用函数 六、存储策略 1.查看策略 2.创建策略 3、修改策略 4. 删除…

时序数据库介绍

目录 1 .什么是InfluxDB 2.那么时序数据有什么特点呢? 3.对于时序数据,我们总结了以下特点: 4.业务方常见需求 5.时序数据库为了解决什么问题? 6.InfluxDB的优势 1 .什么是InfluxDB InfluxDB是一个开源的、高性能的时序型数…

4款堪称神器的电脑黑科技软件,让人相见恨晚

Syncthing https://syncthing.net/ 一款免费的开源跨平台文件同步客户端、服务器工具。支持Linux、Windows、OSX、FreeBSD以及Solaris等系统,具有一个强大的响应式的网页管理界面,能够帮助用户简便地添加、删除和管理通过网络进行同步的文件夹。支持用…

4个超级实用的黑科技软件神器,让你爱不释手!

EyeLoveU 一款免费的眼睛保护工具,主要功能分为两种提醒模式:定时提醒、智慧提醒,用户可以设定不同的提醒时间,或者工作持续多久后进入休息模式。 Rolan 一款轻量级系统启动器管理工具。支持添加一些常用系统功能,如…

目前最值得推荐的几款黑科技APP,快来收藏吧!

说到黑科技APP,每个人都有自己喜欢的,但是都有一个共同特性,那就是装逼神器、时尚大气、实用性强等等。那么今天我就来给大家推荐几款瞬间提高逼格的黑科技APP我们来一起看看吧! 一、魔音音乐 音乐是缓解学习和工作压力的最有效…

学计算机必备软件,电脑必备6个黑科技软件,每个都是顶尖,学习、工作必不可少!...

原标题:电脑必备6个黑科技软件,每个都是顶尖,学习、工作必不可少! 现在基本上已经是信息的时代,我们生活中几乎很难离开两样东西:一个是电脑、一个手机。我们经常会在电脑和手机上边下载或者是安装好多个软…

5款用得最爽的黑科技软件神器,每一款都好用到你无以伦比

闲话少扯,直接切入正题,5款软件件,值得你高调的收藏的! 1、一粒云盘软件 一款专注于企业数据管理的操作软件,每一个精细的权限下都是一次小小的改革,主要用于大型企业的数据资产保护,一个规模…

盘点那些功能强大的黑科技软件:竟然可以如此简单?

随着移动互联网的全球话普及,越来越多黑科技软件渗透到我们的日常生活和工作中,方便着人们的衣食住行。 今天就给大家分享几款比较小众但是却很神器的黑科技软件,用了他们你才知道,原来生活可以如此便捷! 1、拍手寻手机clap 据研究表明,80%的手机用户每年至少有3次找不…