其他分享
首页 > 其他分享> > COAP详解

COAP详解

作者:互联网

COAP协议学习

1分析工具

2COAP协议介绍

2.1 客户端与服务端模拟

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

wakaama

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

标签:15,字节,wakaama,COAP,详解,delta,bit,option
来源: https://blog.csdn.net/linux_cwg/article/details/105482991