CoAP学习笔记(1)CoAP报文结构

article/2025/8/19 11:05:51
CoAP报文结构

CoAP基于UDP的应用层协议,报文结构如下
在这里插入图片描述

  • Ver 版本号占2bit,固定为01
  • T 报文类型,占2bit,CoAP中有4种报文类型,如下
类型描述T值
CON报文Confirmable,需要被确认的报文T=00
NON报文Non-Confirmable,不需要被确认的报文T=01
ACK报文Acknowledgement,应答报文T=10
Reset报文复位报文T=11
  • TKL标签长度指示,占4bit用于指示后面的Token占几个字节,可以取值为0000、0001、0010、0100,分贝表示没有Token,Token占1字节、Token占2字节、Token占4字节

  • Code,占8bit,其中前3bit为Class部分,后5bit为Detail部分,采用c.dd形式来描述。在CoAP请求报文种Code表示请求方法,在CoAP响应报文种Code表示响应状态。

Code值CoAP请求方法
0.01GET方法
0.02POST方法
0.03PUT方法
0.04DELETE方法
Code值CoAP响应状态
0.00空报文
2.xx正确响应
4.xx表示客户端错误
5.xx表示服务器错误
  • Messages ID,报文序号,占2字节,大段格式,一组对应的CoAP请求和响应使用相同的报文序号
  • Token,标签,长度由TKL标签长度指示确定,与是资源的"身份证",CoAP有3种不同的请求/响应模式:携带模式、分离模式,非确认模式,Token在分离模式起重要作用,携带模式可以忽略。
  • Options,选项,后续细讲
  • 分隔符 0xFF,占1字节
  • Payload ,负载
T 报文类型

CON:请求必须要接收者发送ACK或者RST确认,如果发送者规定时间内内有收到ACK或者RST,则会重发。

NON:不要求接收者确认。

ACK:用于确认Messages ID一致的CON报文,ACK的payload可能为空(在分离模式)

RST:用于对应无法处理CON的报文,Messages ID需要与CON一致,且payload一定为空。

请求/响应模式
  • 携带模式
    ACK的payload部分包含响应负载,最少2包得到数据
    在这里插入图片描述

  • 分离模式
    客户端同样发CON请求,服务器立刻会意ACK,但是ACK种没有payload,而是过段时间后服务器再回应CON,其中这个CON的Token要与客户端之前发送CON的Token一致,该CON还包含payload,客户端收到后用ACK回应。至少需要4个报文。
    在这里插入图片描述

  • 非确认模式
    这种客户端发送NON报文,不需要服务器回应
    在这里插入图片描述

CoAP重传机制

重传涉及3个参数

  • ACK_TIMEOUT 响应等待超时时间,典型值 2秒
  • ACK_RANDOM_FACTOR 随机系数 ,典型值1.5
  • MAX_RETRANSMIT 最大重传次数,典型值 4
    如果客户端在首次发送CON报文后,在ACK_TIMEOUT到ACK_TIMEOUT*ACK_RANDOM_FACTOR之间还没有收到ACK、或RST报文,则重发CON报文,下一次的超时等待时间计算中,ACK_RANDOM_FACTOR时上次的2倍。一个报文最多会被发1+MAX_RETRANSMIT 次
CoAP方法
  • GET
    查询资源
  • POST
    要求请求中的资源描述内容被服务器处理,比如创建(返回2.01 create)、修改(返回2.04 changed)、删除(返回2.02 delete)
  • PUT
    要求服务器根据请求中的URI和payload更新服务器指定资源,比如创建(返回2.01 create)、修改(返回2.04 changed)
  • DELETE
    要求根据请求中的URI删除服务器指定资源内容,返回删除(返回2.02 delete)
选项Options

选项Options由选项偏移量(Option Delete)、选项长度(Option Length)和选项值(Option Value)组成。CoAP不是直接确定选项值,而是用累加选项偏移量(Option Delete)的方式确定。
在这里插入图片描述

  • 选项偏移量(Option Delete)
    4bit无符号整数,0~12指示选项偏移量,13、14、15特殊意义
    13:Option Delete占8位无符号整数,此时选项偏移量为 该8位无符号整数+13
    14:Option Delete占16位无符号整数,此时选项偏移量为 该16位无符号整数+269
    15,保留

  • 选项长度(Option Length)
    4bit无符号整数,0~12指示选项偏移量,13、14、15特殊意义
    13:Option Length占8位无符号整数,此时选项偏移量为 该8位无符号整数+13
    14:Option Length占16位无符号整数,此时选项偏移量为 该16位无符号整数+269
    15,保留

  • 选项定义
    上面的选项偏移量(Option Delete)累加起来查这张表就时对应的选项名称
    在这里插入图片描述

1.URI选项
比如coap://wsncoap.org:5683/device/1234CDEF?limit=10&offest=20
Uri-Host 定义服务器域名,上面示例Uri-Host就是wsncoap.org
Uri-Port 定义端口,上面示例Uri-Port就是5683
Uri-Path定义路径,上面例子是2个Uri-Path,分别为device1234cdefUri-Path不会出现/这类分隔符
Uri-Query定义参数,上面例子是2个Uri-Query,分别为limit=10offest=20,Uri-Query不会出现? &这类分隔符
下面是
coap://wsncoap.org:5683/device/1234CDEF?limit=10的例子
在这里插入图片描述

下面是选项长度扩展例子Uri-Path为16字节
在这里插入图片描述

2.Content-Format选项
Content-Format选项指示CoAP负载payload媒体类型,用无符号整数表示,如二进制负载编号42,json负载编号50
3.Accept选项
Accept选项表示客户端期望接受到的payload媒体类型,编号定义与Content-Format选项编号定义相同
在这里插入图片描述
下面是媒体类型编号

媒体类型编号
text/plain0
application/link-format40
application/xml41
application/octet-stream42
application/exi47
application/json50
application/cbor60

4.Etag选项
Etag选项作为标记实体资源的 "新旧"程度,当客户端的Etag和服务器中实体资源Etag一致时,服务器会回应2.03Valid,无响应内容。如下
在这里插入图片描述
5.If-Match选项
If-Match选项是CoAP条件请求,一般用于更新服务器资源,和Etag组合使用,当服务器收到待更新资源的Etag和If-Match的Etag相同则更新资源,返回2.04(changed),否则不更新,返回4.12(Precondition Failed),如下图
在这里插入图片描述
6.If-None-Match选项
If-None-Match选项,一般用于在服务器上创建新资源
在这里插入图片描述


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

相关文章

coap协议学习之搭建coap测试环境

本篇目标:简单初步认识coap,以及怎么去测试自己搭建的coap协议应用。 材料准备: 谷歌浏览器/火狐浏览器(55.0)与 copper插件linux系统(搭建在虚拟机下的 Ubantu)与 libcoap开源程序 COAP插件的…

【协议】MQTT、CoAP、HTTP比较,MQTT协议优缺点

目录 MQTT、CoAP、HTTP区别 1. 协议栈: 2. 请求方式 3. 通讯消息格式: 4. 使用特点与使用场景 5.客户端平台差异 6.防火墙容错 MQTT、CoAP、HTTP介绍 CoAP协议 简介 CoAP与MQTT的区别: HTTP协议 简介 HTTP与CoAP的区别 MQTT协…

libcoap 接口分析与 CoAP 协议开发

libcoap 作为一个重要的 CoAP 开源实现,完整实现了 RFC 7252。很多优秀的 IoT 产品都用到了 libcoap,libcoap 为资源受限的设备(例如计算能力,射频范围,内存,带宽或网络数据包大小)实施轻量级应…

CoAP协议接入

CoAP协议规范 本小节介绍物联网平台支持的CoAP协议规范。 协议版本 支持RFC 7252 Constrained Application Protocol协议,更多信息,请参见RFC 7252。 通道安全 使用DTLS v1.2保证通道安全,更多信息,请参见DTLS v1.2。 开源客…

干货 | CoAP协议例析

点击上方“中兴开发者社区”,关注我们 每天读一篇一线开发者原创好文 在物联网领域中,MQTT和CoAP是最主要的两个应用协议。MQTT(Message Queuing Telemetry Transport/消息队列遥测传输)是基于TCP的发布/订阅方式的应用协议&#…

CoAP协议简介

学习CoAP最简单的方法便是阅读协议文档。该协议文档并不是那么复杂。当然如果有一个CoAP的简单介绍那就再好不过了。 什么是CoAP CoAP是受限制的应用协议(Constrained Application Protocol)的代名词。在最近几年的时间中,专家们预测会有更多的设备相互连接&#xf…

CoAP 协议学习

CoAP 协议学习 2014年左右智能家居异常火热,由于高效的端到端订阅推送特性,使得MQTT成为了智能家居的首选协议。因此目前各大云平台中,MQTT基本成了标配。 物联网另一个应用协议 CoAP 协议则相对低调,不过由于 NB-IoT 的推出&am…

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

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

COAP学习笔记

文章目录 一、UDP协议简介二、COAP协议2.1 COAP简介2.2 CoAP消息报文结构i CoAP消息结构 - 消息类型 详解ii CoAP消息结构 - Requset/Response Code 详解iii CoAP消息结构 - Option 详解 2.3 CoAP观察模式2.4 COAP的安全性 三、根据阿里云COAP规范,分析并构建十六进制的报文3.1…

CoAP

CoAP是受限的应用协议(Contrained Application Protocol)的代名词. CoAP是一种应用层协议, 它运行于UDP协议之上. 参考: https://blog.csdn.net/xukai871105/article/details/45167069 CoAP协议综述 和其他TCP IP协议簇中的协议一样, CoAP协议总是以"头"的形式出现…

COAP详解

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

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,以下简称时序)从定义上来说,就是一串按时间维度索引的数据。用描述性的语言来解释什么是时序数据,简单的说,就是这类数据描述了某个被测量的主体在一个时间范围内的每个时间点上的测量值。它普遍存在于…