其他分享
首页 > 其他分享> > COAP学习笔记

COAP学习笔记

作者:互联网

文章目录

https://help.aliyun.com/document_detail/57697.html?spm=a2c4g.11186623.6.621.32bf3d57fPX9zp
https://github.com/emqtt/gen_coap
https://libcoap.net/install.html

https://blog.csdn.net/weixin_42971252/article/details/105462695

一、UDP协议简介

用户数据报协议(User Datagram Protocol,简称UDP)是一种比较快的传输层的协议,因为减少了确认程序。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去。因此,与 TCP/IP 相比,UDP 的可靠性相对不高,但是比较快。对于M2M 项目的快速原型,一个非常简单的解决方案是使用 UDP,因为就 UDP 头包含很少的字节,比 TCP 负载消耗少。

TCP类似打电话,UDP类似发短信

二、COAP协议

2.1 COAP简介

  CoAP是受限制的应用协议(Constrained Application Protocol)的代名词.它是一种应用层的协议,它运行于 UDP协议之上.

  对于小型设备而言,实现TCP和HTTP协议显然是一个过分的要求。为了让小设备可以接入互联网,CoAP协议被设计出来。CoAP基于轻量级的UDP协议,并且允许IP多播。为了弥补UDP传输的不可靠性,CoAP定义了带有 重传机制事务处理机制 。并且提供资源发现机制,并带有资源描述。
在这里插入图片描述

在这里插入图片描述

COAP RFC文档 RFC7252
CoAP核心协议 RFC 7252
CoAP资源发现 RFC 6690
COAP维基百科

2.2 CoAP消息报文结构

一个CoAP消息最小为4个字节,以下是CoAP协议不同部分的描述。
在这里插入图片描述

i CoAP消息结构 - 消息类型 详解

CoAP采用与HTTP协议相同的请求响应工作模式。CoAP协议共有4中不同的消息类型。
在这里插入图片描述

ii CoAP消息结构 - Requset/Response Code 详解

功能响应码分为两个部分,第一个部分是Class,第二个部分是Code.如下图所示.
在这里插入图片描述
为了方便描述它被写成了c.dd结构,c表示 class(前3bit), dd表示 Code(后3bit)
0.dd表示CoAP请求的某种方法,2.dd4.dd5.dd则表示CoAP响应的某种具体表现。
在这里插入图片描述
在这里插入图片描述

阿里云的返回码说明
在这里插入图片描述

iii CoAP消息结构 - Option 详解

CoAP支持多个Option,CoAP的Option的表示方法比较特殊,采用增量的方式描述,细节可参考RFC7252 #3.1

在这里插入图片描述
一般情况下Option部分包含Option Delta、Option Length和Option Value三部分,如上图所示.

CoAP协议中支持多个Option,例如

第一个Option Delta=11,表示该Option表示Uri-Path(11)
第二个Option Delta=1,表示该Option=1+11,表示Content-Format(12)
第三个Option Delta=3,表示该Option=3+1+11,表示Uri-Query(15)
CoAP采用这样的方式表示多个Option,而每种Option都可以在HTTP协议中找到对应项。

2.3 CoAP观察模式

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

2.4 COAP的安全性

COAP的安全性是用DTLS加密实现的。DTLS的实现需要的资源和带宽较多,如果是资源非常少的终端和极有限的带宽下可能会跑不起来。DTLS仅仅在单播情况下适用。
在这里插入图片描述

# 阿里云对称加密
阿里云服务器智能采集数据,不能下发数据,
阿里云先要发认证报文,才能发送数据.认证是由时间现在的,过了这段时间,就必须要重新认证

三、根据阿里云COAP规范,分析并构建十六进制的报文

3.1 阿里云物联网的 三元组,COAP中Option选项,以及负载payload 如下所示

在这里插入图片描述

//三元组ProductKey,DeviceName,DeviceSecret
{
  "ProductKey": "a1eLpNbJ8S8",
  "DeviceName": "lySmartHome",
  "DeviceSecret": "3c6b7a902aa607f8ed48528c2a6be0b1"
}

//COAP中Option选项 
POST /auth		//POST对应Option中的uri-Path,
Host: a1eLpNbJ8S8.coap.cn-shanghai.link.aliyuncs.com	//Host对应Option中的uri-Host
Port: 5682		//Port对应Option中的uri-port 
Accept: application/json or application/cbor	//对应Option中的Accept 
Content-Format: application/json or application/cbor	//对应Option中的Content-Format

payload: {"productKey":"a1eLpNbJ8S8","deviceName":"lySmartHome","clientId":"a1eLpNbJ8S8&lySmartHome","sign":"de1cfbb9c1fbea4735c04b262d84642e","seq":"1"}

payload中sign的获取:

使用device,使用HmacMD5加密方法,对clientIdXdeviceNameYproductKeyZseq1进行加密,
其中,X表示三元组的clientId,Y表示三元组的deviceName,Z表示三元组的productKey.
在这里插入图片描述
加密网站点击这里

3.2 分析构造报文

在这里插入图片描述

整理上面的数据得到我们COAP的CON报文:

40 02 01 01 
3d 21 61 31 65 4C 70 4E 62 4A 38 53 38 2E 63 6F 61 70 2E 63 6E 2D 73 68 61 6E 67 68 61 69 2E 6C 69 6E 6B 2E 61 6C 69 79 75 6E 63 73 2E 63 6F 6D
42 16 32
44 61 75 74 68
11 32
51 32
ff
7B 22 70 72 6F 64 75 63 74 4B 65 79 22 3A 22 61 31 65 4C 70 4E 62 4A 38 53 38 22 2C 22 64 65 76 69 63 65 4E 61 6D 65 22 3A 22 6C 79 53 6D 61 72 74 48 6F 6D 65 22 2C 22 63 6C 69 65 6E 74 49 64 22 3A 22 61 31 65 4C 70 4E 62 4A 38 53 38 26 6C 79 53 6D 61 72 74 48 6F 6D 65 22 2C 22 73 69 67 6E 22 3A 22 64 65 31 63 66 62 62 39 63 31 66 62 65 61 34 37 33 35 63 30 34 62 32 36 32 64 38 34 36 34 32 65 22 2C 22 73 65 71 22 3A 22 31 22 7D 

3.3 UDP连接并发送设备认证报文

udp的远程主机域名:a1eLpNbJ8S8.coap.cn-shanghai.link.aliyuncs.com:5682
设备认证报文为:40 02 01 01 3d 21 61 31 65 4C 70 4E 62 4A 38 53 38 2E 63 6F 61 70 2E 63 6E 2D 73 68 61 6E 67 68 61 69 2E 6C 69 6E 6B 2E 61 6C 69 79 75 6E 63 73 2E 63 6F 6D 42 16 32 44 61 75 74 68 11 32 51 32 ff 7B 22 70 72 6F 64 75 63 74 4B 65 79 22 3A 22 61 31 65 4C 70 4E 62 4A 38 53 38 22 2C 22 64 65 76 69 63 65 4E 61 6D 65 22 3A 22 6C 79 53 6D 61 72 74 48 6F 6D 65 22 2C 22 63 6C 69 65 6E 74 49 64 22 3A 22 61 31 65 4C 70 4E 62 4A 38 53 38 26 6C 79 53 6D 61 72 74 48 6F 6D 65 22 2C 22 73 69 67 6E 22 3A 22 64 65 31 63 66 62 62 39 63 31 66 62 65 61 34 37 33 35 63 30 34 62 32 36 32 64 38 34 36 34 32 65 22 2C 22 73 65 71 22 3A 22 31 22 7D
在这里插入图片描述

i. 错误响应

这里是sign生成错误而导致的.生成sign一定要细心.
在这里插入图片描述

ii.正确响应

在这里插入图片描述

返回的十六进制数据如下:

60 45 01 01 FF 7B 22 72 61 6E 64 6F 6D 22 3A 22 39 34 36 66 36 61 32 38 39 38 33 64 66 32 32 38 22 2C 22 73 65 71 4F 66 66 73 65 74 22 3A 32 2C 22 74 6F 6B 65 6E 22 3A 22 71 67 36 50 6A 7A 71 6E 61 39 48 7A 6D 62 6A 31 68 31 6E 5A 30 30 30 30 30 30 2E 36 64 66 35 22 7D 

ASCII数据如下:
`E{“random”:“946f6a28983df228”,“seqOffset”:2,“token”:“qg6Pjzqna9Hzmbj1h1nZ000000.6df5”}

iii.响应解析

正确响应的 返回的十六进制数据

60 45 01 01 FF 7B 22 72 61 6E 64 6F 6D 22 3A 22 39 34 36 66 36 61 32 38 39 38 33 64 66 32 32 38 22 2C 22 73 65 71 4F 66 66 73 65 74 22 3A 32 2C 22 74 6F 6B 65 6E 22 3A 22 71 67 36 50 6A 7A 71 6E 61 39 48 7A 6D 62 6A 31 68 31 6E 5A 30 30 30 30 30 30 2E 36 64 66 35 22 7D 

在这里插入图片描述
在这里插入图片描述

4.4 post上报数据

i 分析构造报文

在这里插入图片描述

//三元组ProductKey,DeviceName,DeviceSecret
{
  "ProductKey": "a1eLpNbJ8S8",
  "DeviceName": "lySmartHome",
  "DeviceSecret": "3c6b7a902aa607f8ed48528c2a6be0b1"
}

POST /topic/${topic}
Host: ${YourEndpoint}
Port: 5682
Accept: application/json or application/cbor
Content-Format: application/json or application/cbor
payload: ${your_data}
CustomOptions: number:2088(标识token), 2089(seq)

在这里插入图片描述

认证报文:

//三元组ProductKey,DeviceName,DeviceSecret
{
  "ProductKey": "a1eLpNbJ8S8",
  "DeviceName": "lySmartHome",
  "DeviceSecret": "3c6b7a902aa607f8ed48528c2a6be0b1"
}


40 02 01 01 
3d 21 61 31 65 4C 70 4E 62 4A 38 53 38 2E 63 6F 61 70 2E 63 6E 2D 73 68 61 6E 67 68 61 69 2E 6C 69 6E 6B 2E 61 6C 69 79 75 6E 63 73 2E 63 6F 6D
42 16 32
44 61 75 74 68
11 32
51 32
ff
7B 22 70 72 6F 64 75 63 74 4B 65 79 22 3A 22 61 31 65 4C 70 4E 62 4A 38 53 38 22 2C 22 64 65 76 69 63 65 4E 61 6D 65 22 3A 22 6C 79 53 6D 61 72 74 48 6F 6D 65 22 2C 22 63 6C 69 65 6E 74 49 64 22 3A 22 61 31 65 4C 70 4E 62 4A 38 53 38 26 6C 79 53 6D 61 72 74 48 6F 6D 65 22 2C 22 73 69 67 6E 22 3A 22 64 65 31 63 66 62 62 39 63 31 66 62 65 61 34 37 33 35 63 30 34 62 32 36 32 64 38 34 36 34 32 65 22 2C 22 73 65 71 22 3A 22 31 22 7D 

我们COAP的CON Post报文:

40 02 01 02
3d 21 61 31 65 4C 70 4E 62 4A 38 53 38 2E 63 6F 61 70 2E 63 6E 2D 73 68 61 6E 67 68 61 69 2E 6C 69 6E 6B 2E 61 6C 69 79 75 6E 63 73 2E 63 6F 6D
42 16 32
45 74 6F 70 69 63
03 73 79 73 
0b 61 31 65 4C 70 4E 62 4A 38 53 38 
0b 6C 79 53 6D 61 72 74 48 6F 6D 65 
05 74 68 69 6E 67 
05 65 76 65 6E 74 
08 70 72 6F 70 65 72 74 79 
04 70 6F 73 74 
11 32
51 32
ed 07 0a 12 token的16进制
1d 03 AES密文 
ff
payload16进制密文

在这里插入图片描述

`E{"random":"9f4fa84d5108aa04","seqOffset":9,"token":"qg6Pjzqna9Hzmbj1h1nZ000000.7bb7"}

token的16进制:71 67 36 50 6A 7A 71 6E 61 39 48 7A 6D 62 6A 31 68 31 6E 5A 30 30 30 30 30 30 2E 37 62 62 37 


SHA256明文ds,random:3c6b7a902aa607f8ed48528c2a6be0b1,9f4fa84d5108aa04

SHA256密文:40833a4c9730f661fb087a863d4c53b12853516a38ffa06e6b240ce8c85acd8d

AES加密的密钥 - SHA256密文卡头结尾:
							 得到:fb087a863d4c53b12853516a38ffa06e

AES初始向量:35343379686a79393761653766796667

AES明文 - seq+1的16进制:31 30

AES密文,使用工具生成 :58A439022B9FB16817321AAAD0133905



payload16进制明文:7B 22 6D 65 74 68 6F 64 22 3A 22 74 68 69 6E 67 2E 65 76 65 6E 74 2E 70 72 6F 70 65 72 74 79 2E 70 6F 73 74 22 2C 22 69 64 22 3A 22 32 30 33 33 30 32 33 32 32 22 2C 22 70 61 72 61 6D 73 22 3A 7B 22 43 75 72 72 65 6E 74 54 65 6D 70 65 72 61 74 75 72 65 22 3A 33 33 2E 33 33 7D 2C 22 76 65 72 73 69 6F 6E 22 3A 22 31 2E 30 2E 30 22 7D 

payloadAES密文:E50819A8F8981D8C9120721872E0553891DA65F87BE4F6CC4D5D5743C6A5FCA6F2EBE9DBF67F4883489FA08101184331B47FE48C311CF40D992F2E913428468C6F0D015BCFE309EE4070A319F2A2B10F2F3F228223545B9BB8568582BBD8EF93E1B58540A7538DE04647189B291EB78D
40 02 01 02
3d 21 61 31 65 4C 70 4E 62 4A 38 53 38 2E 63 6F 61 70 2E 63 6E 2D 73 68 61 6E 67 68 61 69 2E 6C 69 6E 6B 2E 61 6C 69 79 75 6E 63 73 2E 63 6F 6D
42 16 32
45 74 6F 70 69 63
03 73 79 73 
0b 61 31 65 4C 70 4E 62 4A 38 53 38 
0b 6C 79 53 6D 61 72 74 48 6F 6D 65 
05 74 68 69 6E 67 
05 65 76 65 6E 74 
08 70 72 6F 70 65 72 74 79 
04 70 6F 73 74 
11 32
51 32
ed 07 0a 12 71 67 36 50 6A 7A 71 6E 61 39 48 7A 6D 62 6A 31 68 31 6E 5A 30 30 30 30 30 30 2E 37 62 62 37 
1d 03 58A439022B9FB16817321AAAD0133905
ff
E50819A8F8981D8C9120721872E0553891DA65F87BE4F6CC4D5D5743C6A5FCA6F2EBE9DBF67F4883489FA08101184331B47FE48C311CF40D992F2E913428468C6F0D015BCFE309EE4070A319F2A2B10F2F3F228223545B9BB8568582BBD8EF93E1B58540A7538DE04647189B291EB78D

ii.验证:验证成功示例

在这里插入图片描述

得到返回的报文
60 45 01 02 E8 07 1D 12 C4 E6 57 15 C7 50 00 FF A2 2F DE FF 2F 78 32 10 0D 0D 00 33 EA DF 60 2B 93 AC 3C DB D3 69 9D 62 F7 A6 60 73 84 A4 A3 DC 9E E2 A5 AC BE AD 58 31 93 C8 11 B8 12 BB EB 56 59 E2 44 CF 41 2D 01 11 CC D4 DA 14 EC FB 99 81 D8 2C A7 C1 D7 D9 E2 1F 8E 88 A2 0D 3E 6D 54 20 9F 11 D9 4A 84 80 B3 C8 E7 F7 E6 F9 50 59 8B F6 B6 63 CF 30 B6 E8 E5 D1 36 D2 FE F3 04 E1 BF 89 55 D9 1E BC 3A BA C9 2B 3E FF 45 23 6A 1D 27 30 

返回报文的payload密文(ff分隔符后面的值)
A2 2F DE FF 2F 78 32 10 0D 0D 00 33 EA DF 60 2B 93 AC 3C DB D3 69 9D 62 F7 A6 60 73 84 A4 A3 DC 9E E2 A5 AC BE AD 58 31 93 C8 11 B8 12 BB EB 56 59 E2 44 CF 41 2D 01 11 CC D4 DA 14 EC FB 99 81 D8 2C A7 C1 D7 D9 E2 1F 8E 88 A2 0D 3E 6D 54 20 9F 11 D9 4A 84 80 B3 C8 E7 F7 E6 F9 50 59 8B F6 B6 63 CF 30 B6 E8 E5 D1 36 D2 FE F3 04 E1 BF 89 55 D9 1E BC 3A BA C9 2B 3E FF 45 23 6A 1D 27 30 

对payload密文解密。
在这里插入图片描述

解密后的payload:
7B 22 63 6F 64 65 22 3A 32 30 30 2C 22 64 61 74 61 22 3A 7B 7D 2C 22 69 64 22 3A 22 32 30 33 33 30 32 33 32 32 22 2C 22 6D 65 73 73 61 67 65 22 3A 22 73 75 63 63 65 73 73 22 2C 22 6D 65 74 68 6F 64 22 3A 22 74 68 69 6E 67 2E 65 76 65 6E 74 2E 70 72 6F 70 65 72 74 79 2E 70 6F 73 74 22 2C 22 76 65 72 73 69 6F 6E 22 3A 22 31 2E 30 22 7D 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 

转化成ascii:
{"code":200,"data":{},"id":"203302322","message":"success","method":"thing.event.property.post","version":"1.0"}

iii.验证:再次post示例

修改seq值为 12 = 31 32,重新生成seqAES密文,payload不修改。

AES明文 - seq+1的16进制:31 32

AES密文,使用工具生成 :59B15538E657151BE340B2BB5E318389

40 02 01 02
3d 21 61 31 65 4C 70 4E 62 4A 38 53 38 2E 63 6F 61 70 2E 63 6E 2D 73 68 61 6E 67 68 61 69 2E 6C 69 6E 6B 2E 61 6C 69 79 75 6E 63 73 2E 63 6F 6D
42 16 32
45 74 6F 70 69 63
03 73 79 73 
0b 61 31 65 4C 70 4E 62 4A 38 53 38 
0b 6C 79 53 6D 61 72 74 48 6F 6D 65 
05 74 68 69 6E 67 
05 65 76 65 6E 74 
08 70 72 6F 70 65 72 74 79 
04 70 6F 73 74 
11 32
51 32
ed 07 0a 12 71 67 36 50 6A 7A 71 6E 61 39 48 7A 6D 62 6A 31 68 31 6E 5A 30 30 30 30 30 30 2E 37 62 62 37 
1d 03 59B15538E657151BE340B2BB5E318389
ff
E50819A8F8981D8C9120721872E0553891DA65F87BE4F6CC4D5D5743C6A5FCA6F2EBE9DBF67F4883489FA08101184331B47FE48C311CF40D992F2E913428468C6F0D015BCFE309EE4070A319F2A2B10F2F3F228223545B9BB8568582BBD8EF93E1B58540A7538DE04647189B291EB78D

在这里插入图片描述

返回的payload密文
A2 2F DE FF 2F 78 32 10 0D 0D 00 33 EA DF 60 2B 93 AC 3C DB D3 69 9D 62 F7 A6 60 73 84 A4 A3 DC 9E E2 A5 AC BE AD 58 31 93 C8 11 B8 12 BB EB 56 59 E2 44 CF 41 2D 01 11 CC D4 DA 14 EC FB 99 81 D8 2C A7 C1 D7 D9 E2 1F 8E 88 A2 0D 3E 6D 54 20 9F 11 D9 4A 84 80 B3 C8 E7 F7 E6 F9 50 59 8B F6 B6 63 CF 30 B6 E8 E5 D1 36 D2 FE F3 04 E1 BF 89 55 D9 1E BC 3A BA C9 2B 3E FF 45 23 6A 1D 27 30

解密得到hex:
7B22636F6465223A3230302C2264617461223A7B7D2C226964223A22323033333032333232222C226D657373616765223A2273756363657373222C226D6574686F64223A227468696E672E6576656E742E70726F70657274792E706F7374222C2276657273696F6E223A22312E30227D10101010101010101010101010101010
转化为string:
{"code":200,"data":{},"id":"203302322","message":"success","method":"thing.event.property.post","version":"1.0"}

iv.验证:验证超时示例

在这里插入图片描述
a0 = 1010 0000,表示超时了
在这里插入图片描述

v.验证成功示例的分析

在这里插入图片描述
返回的报文:60 45 01 02 E8 07 1D 12 C4 E6 57 15 C7 50 00 FF A2 2F DE FF 2F 78 32 10 0D 0D 00 33 EA DF 60 2B 93 AC 3C DB D3 69 9D 62 F7 A6 60 73 84 A4 A3 DC 9E E2 A5 AC BE AD 58 31 93 C8 11 B8 12 BB EB 56 59 E2 44 CF 41 2D 01 11 CC D4 DA 14 EC FB 99 81 D8 2C A7 C1 D7 D9 E2 1F 8E 88 A2 0D 3E 6D 54 20 9F 11 D9 4A 84 80 B3 C8 E7 F7 E6 F9 50 59 8B F6 B6 63 CF 30 B6 E8 E5 D1 36 D2 FE F3 04 E1 BF 89 55 D9 1E BC 3A BA C9 2B 3E FF 45 23 6A 1D 27 30
在这里插入图片描述

得到返回的报文
60 45 01 02 E8 07 1D 12 C4 E6 57 15 C7 50 00 FF A2 2F DE FF 2F 78 32 10 0D 0D 00 33 EA DF 60 2B 93 AC 3C DB D3 69 9D 62 F7 A6 60 73 84 A4 A3 DC 9E E2 A5 AC BE AD 58 31 93 C8 11 B8 12 BB EB 56 59 E2 44 CF 41 2D 01 11 CC D4 DA 14 EC FB 99 81 D8 2C A7 C1 D7 D9 E2 1F 8E 88 A2 0D 3E 6D 54 20 9F 11 D9 4A 84 80 B3 C8 E7 F7 E6 F9 50 59 8B F6 B6 63 CF 30 B6 E8 E5 D1 36 D2 FE F3 04 E1 BF 89 55 D9 1E BC 3A BA C9 2B 3E FF 45 23 6A 1D 27 30 

返回报文的payload密文(ff分隔符后面的值)
A2 2F DE FF 2F 78 32 10 0D 0D 00 33 EA DF 60 2B 93 AC 3C DB D3 69 9D 62 F7 A6 60 73 84 A4 A3 DC 9E E2 A5 AC BE AD 58 31 93 C8 11 B8 12 BB EB 56 59 E2 44 CF 41 2D 01 11 CC D4 DA 14 EC FB 99 81 D8 2C A7 C1 D7 D9 E2 1F 8E 88 A2 0D 3E 6D 54 20 9F 11 D9 4A 84 80 B3 C8 E7 F7 E6 F9 50 59 8B F6 B6 63 CF 30 B6 E8 E5 D1 36 D2 FE F3 04 E1 BF 89 55 D9 1E BC 3A BA C9 2B 3E FF 45 23 6A 1D 27 30 

在阿里云物联网中,设备认证报文发送一次就行!!!

设置一次设备就足够了,可以一直使用第一次设备认证时阿里云返回的的token、random,生成后续的post上报数据报文。

四、轻量级的COAP服务器搭建

4.1 server源码下载

首先去下载microcoap server,这是一个开源的 轻量级的copa server。
microcoap github

4.2 在阿里云搭建一个Linux云服务器

科在阿里云上购买一周的云服务器ECS,学生前两个月可以免费使用,连接自行百度。
在这里插入图片描述
到安全组中,添加安全组规则:UDP协议,端口5683
在这里插入图片描述
设置实例密码,设置远程连接VNC密码。
在这里插入图片描述
通过VNC远程连接
在这里插入图片描述
验证字节设置的VNC密码,然后输入示例的用户名(默认为root)和密码(自己设置的)进入终端界面。
在这里插入图片描述
WIN+R打开CMD ,ping一下公用IP,查看完了是否联通
在这里插入图片描述
网络联通下一步。

4.3 make编译COAP源码,运行coap server

首先下载microcoap源码到云服务器上,git clone 或者通过WinSCP。
这里用WINSCP,把下载的源码上传到云服务器中。
在这里插入图片描述
把下载到的microcoap_master复制粘贴到打开的远程主机中。
在这里插入图片描述
回到阿里云VNC界面,输入ls查看microcoap_master文件是否复制过来了。
文件存在进入microcoap的文件夹目录,输入如下命令,编译运行coap server

make
./coap

在这里插入图片描述

4.4 打开网络调试助手,尽情发送数据

打开网络调试助手,选择UDP协议,设置远程主机号,发送HEX数据类型的COAP报文。
在这里插入图片描述
发送成功后,我们可以在VNC界面上看到发送过来的报文。以及响应的报文。
在这里插入图片描述

标签:Option,22,COAP,笔记,学习,61,74,65,6E
来源: https://blog.csdn.net/weixin_43871650/article/details/112916998