COAP详解

article/2025/8/19 11:08:55

COAP协议学习

1分析工具

  • 网络包分析利器:wireshark
  • COAP协议客户端、服务端:wakaama 源码地址
  • 辅助编译工具cmake3:由于wakaama对cmake有版本要求 源码地址
    ** 文章后附上wakaama、cmake3编译、使用方法及安装步骤等

2COAP协议介绍

  • Coap(Constrained Application Protocol)是一种在物联网世界的类web协议,它的详细规范定义在 RFC 7252。COAP名字翻译来就是“受限应用协议”,顾名思义,使用在资源受限的物联网设备上。物联网设备的ram,rom都通常非常小,运行TCP和HTTP是不可以接受的。

2.1 客户端与服务端模拟

  • a、在linux上分别开两个终端,执行如下指令
    ./lwm2mserver -4
    服务端接收到的数据
    ./lwm2mclient -4
    客户端接收到的数据

  • b、协议详解分析
    coap消息格式如下图:
    消息格式
    b1、首先分析前4个字节 【44 02 21 86 】
    44: 0100,0100 版本号:01 消息类型:00 CON TKL长度:4

    	* 版本号(Ver)2-bit无符号整型,代表CoAP版本号。本文档(7252)的实现必须设置这个字段为0x01。其它的值为今后其它版本保留。对于带有未知版本号的消息,必须忽略。* 类型(T)2-bit无符号整型。代表这个消息的类型是:CON(0), NON(1), ACK(2),RST(3)* Token长度(TKL)4-bit无符号整型。表示变长的Token字段(0-8字节)的长度。长度9-15是保留的,不能设置长度为9-15。如果设置了长度为9-15,必须被当作消息格式错误来处理。
    

    02:000 00010 code码:0.02

    	8-bit无符号整型。拆分为3-bit的分类信息和5-bit详细信息。写作”c.dd”。c是3-bit长,可以是一个从07的数字,dd是5-bit长。它一个两位的数字,从0031。分类信息c可以代表是一个请求(0),一个成功的响应(2),一个客户端错误响应(4),一个服务端错误响应(5)。
    
     coap定义的响应码格式如图 ![method_code](https://img-blog.csdnimg.cn/20200413105336509.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpbnV4X2N3Zw==,size_16,color_FFFFFF,t_70#pic_center)
    

response_code
C1 6A:message ID
b2、在分析TKL个字节
6A C1 D6 CB: token值
b3、options分析
在options中就可以看到coap协议的紧凑性尽量节省每一个字节
首先看一下options的结构:
options
option 字段值含义:
option格式
首先分析第一个字节
B2:1011,0010 : option delta为11, option length 为2
option11 为:Uri-Path 长度为2字节 =》 72 64:rd
在接续分析下一个字节
11:0001,0001:option delta为1,注意因为前一个option delta有值,就说明此时的option值为11+1 =12 为:Content-Format, 长度1个字节=》28 :40 格式如下:
fromat

继续分析:
39: 0011, 1001: option delta为3 上一个option为12 结果为12+3=15为:Uri-Query 长度为9字节:6C 77 6D 32 6D 3D 31 2E 31
接续分析:
0D 05:0000,1101, 0000,0000:option delta为0 上一个option为15 结果为15+0=15为:Uri-Query ,这里多放一个05是为什么呢?因为在COAP协议中在option delta及option lenth 13,14,15都是有特殊含义的

一个option之中的各个字段的含义如下:
Option Delta:
表示Option的增量,当前的Option的具体编号。
4-bit无符号整型。值0-12代表option delta。其它3个值作为特殊情况保留:
当值为13:有一个8-bit无符号整型(extended)跟随在第一个字节之后,本option的实际delta是这个8-bit值加13。
当值为14:有一个16-bit无符号整型(网络字节序)(extended)跟随在第一个字节之后,本option的实际delta是这个16-bit值加269。
当值为15:为payload标识符而保留。如果这个字段被设置为值15,但这个字节不是payload标识符,那么必须当作消息格式错误来处理。
Option Length:
表示Option Value的具体长度。
4-bit无符号整数。值0-12代表这个option值的长度,单位是字节。其它3个值是特殊保留的:
当值为13:有一个8-bit无符号整型跟随在第一个字节之后,本option的实际长度是这个8-bit值加13。
当值为14:一个16-bit无符号整型(网络字节序)跟随在第一个字节之后,本option的实际长度是这个16-bit值加269。
当值为15:保留为将来使用。如果这个字段被设置为值15,必须当作消息格式错误来处理。
Option Value 共(option Length)个字节。

所以这里的value的长度为:13+5=18 值为:65 70 3D 74 65 73 74 6C 77 6D 32 6D 63 6C 69 65 6E 74

b4、最后分析到什么时候结束呢?
FF: 分隔符
之后全部为payload

3工具编译

cmake3

  • wget https://cmake.org/files/v3.6/cmake-3.6.3.tar.gz
  • tar -xzf cmake-3.6.3.tar.gz
  • cd cmake-3.6.3/ && ./bootstrap && make && make install
    如果cmake --version报错,尝试关闭终端重新启动

wakaama

  • 编译客户端
    下载源码: git clone https://github.com/eclipse/wakaama.git
    编译:cmake examples/client/ && make
    目录重命名:mv wakaama wakaama_client
    *编译服务端
    下载源码: git clone https://github.com/eclipse/wakaama.git
    编译:cmake examples/server/ && make
    目录重命名:mv wakaama wakaama_server

有关BLOCK也是coap的一个重点,主要用于OTA升级包的传输,暂时还没有去详细分析,有感兴趣的同学可以一起讨论下。


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

相关文章

CoAP协议及开源实现

1. CoAP协议的简单介绍 CoAP是一种面向网络的协议,采用了与HTTP类似的特征,核心内容为资源抽象、REST式交互以及可扩展的头选项等。这些关键特征使得因特网由简单的文档检索机制(World Wide Web)演进成为现在繁荣的应用平台(Web 2.0)。HTTP作为IETF 成功…

CoAP学习笔记——CoAP格式详解

0 前言 CoAP是受限制的应用协议(Constrained Application Protocol)的代名词。在当前由PC机组成的世界,信息交换是通过TCP和应用层协议HTTP实现的。但是对于小型设备而言,实现TCP和HTTP协议显然是一个过分的要求。为了让小设备可以接入互联网&#xff0c…

CoAP协议学习——CoAP基础

【 原连接地址】 更多CoAP文章请参考博文索引——【 物联网学习笔记——索引博文】 推广 《IoT开发实战:CoAP卷》已经由机械工业出版社出版,如果想学习CoAP的更多内容请于淘宝、天猫或京东平台搜索"CoAP"。 什么是CoAP CoAP是受限制的应用协议(Constraine…

COAP介绍

什么是COAP CoAP是受限制的应用协议(Constrained Application Protocol)的代名词。在最近几年的时间中,专家们预测会有更多的设备相互连接,而这些设备的数量将远超人类的数量。在这种大背景下,物联网和M2M技术应运而生。虽然对人而言&#xf…

时序数据库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 一款轻量级系统启动器管理工具。支持添加一些常用系统功能,如…