前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CoAP协议学习笔记 1.3 用UDP工具来调试CoAP

CoAP协议学习笔记 1.3 用UDP工具来调试CoAP

作者头像
twowinter
发布2020-04-17 10:49:13
1.7K0
发布2020-04-17 10:49:13
举报
文章被收录于专栏:twowintertwowinter

1 前言

CoAP的调试,目前没找到好用的工具,网上说的火狐插件现在也不能用了,多希望手头的TCP/UDP网络调试工具就可以支持。

既然CoAP是基于UDP来组包的,那肯定是可以实现。

所以这篇文章给研究 CoAP 的伙伴们带来我琢磨出的一套手动组包调试方案。虽然效率不高,但至少能用。而且一个显而易见的好处是,它将使我们加深对 CoAP 消息格式的理解。

小能手正在学习 CoAP 协议,CoAP协议学习笔记可点此查看

2 官方示例组包

1.2 一张表了解 CoAP 协议中,本能手额外提及了官方的示例,协议最后的附录中有给了3个很好的示例。

我们先拿官方的示例练练手。

我们把查询温度的示例转成字节流:

代码语言:javascript
复制
Ver:01 T=0 TKL=0 // 0x40
Code=0.01 // 0x01
MID// 0x7D 34
Option No=11(Uni-Path) len=11 value="temperature"(0x74 65 6D 70 65 72 61 74 75 72 65) // 0xBB 0x74 65 6D 70 65 72 61 74 75 72 65

因此字节流是:

代码语言:javascript
复制
40 01 7D 34 BB 74 65 6D 70 65 72 61 74 75 72 65

3 示例 Get /test

刚组了一个小包,现在来往一个真实 CoAP 服务器组个包试试。

3.1 ETSI 提供的 CoAP 测试服务器介绍

http://coap.me/

代码语言:javascript
复制
Access CoAP nodes via HTTP, analyze pcaps (tcpdump/wireshark packet capture files) and run the ETSI interoperability tests against your server on this simple interactive website.

在这个网站上,可以跑一些 ETSI 的操作示例,另外 coap://coap.me 这个服务器也支持 CoAP 调试。

3.2 UDP工具连接 coap.me 服务器

ping 了下 http://coap.me/,得到它的 IP 。

代码语言:javascript
复制
>ping coap.me

正在 Ping coap.me [134.102.218.18] 具有 32 字节的数据:
来自 134.102.218.18 的回复: 字节=32 时间=289ms TTL=45
来自 134.102.218.18 的回复: 字节=32 时间=288ms TTL=45
来自 134.102.218.18 的回复: 字节=32 时间=303ms TTL=45
来自 134.102.218.18 的回复: 字节=32 时间=289ms TTL=45

3.3 组包

接着,我们直接去 Get /test,整理如下:

代码语言:javascript
复制
Ver:01 T=0 TKL=2 // 0x42
Code=0.01 // 0x01
MID// 0x00 01 
TOKEN = 22950// 0x595C
Option No=11(Uni-Path) len=4 value="test"(0x74 65 6D 70 65 72 61 74 75 72 65) // 0xB4 0x74 65 73 74 

因此字节流是:

代码语言:javascript
复制
42 01 00 01 59 5C B4 74 65 73 74

3.4 成功回复

一试就成功,本能手的内心一阵激动。

回复字节流如下:

代码语言:javascript
复制
62 45 00 01 59 5C 48 7C 38 F8 1A AF F8 7F F2 80 FF 77 65 6C 63 6F 6D 65 20 74 6F 20 74 68 65 20 45 54 53 49 20 70 6C 75 67 74 65 73 74 21 20 6C 61 73 74 20 63 68 61 6E 67 65 3A 20 32 30 31 38 2D 30 34 2D 32 35 20 30 36 3A 31 35 3A 30 35 20 55 54 43 

逐个拆包:

代码语言:javascript
复制
62 // ‭01100010‬ VER=01 T=2(ACK) TKL=2
45 // ‭010 00101‬ Code=2.05(Content)
00 01 // MID=0x0001
59 5C // TOKEN=0x595C
48 // OptionNO=4(ETag) OptionLen=8
7C 38 F8 1A AF F8 7F F2 // Option:
80 // OptionNO=8(LocationPath)
FF // Marker
77 65 6C 63 6F 6D 65 20 74 6F 20 74 68 65 20 45 54 53 49 20 70 6C 75 67 74 65 73 74 21 20 6C 61 73 74 20 63 68 61 6E 67 65 3A 20 32 30 31 38 2D 30 34 2D 32 35 20 30 36 3A 31 35 3A 30 35 20 55 54 43 
// welcome to the ETSI plugtest! last change: 2018-04-25 06:15:05 UTC

4 END

搞定回家,再见。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 前言
  • 2 官方示例组包
  • 3 示例 Get /test
    • 3.1 ETSI 提供的 CoAP 测试服务器介绍
      • 3.2 UDP工具连接 coap.me 服务器
        • 3.3 组包
          • 3.4 成功回复
          • 4 END
          相关产品与服务
          测试服务
          测试服务 WeTest 包括标准兼容测试、专家兼容测试、手游安全测试、远程调试等多款产品,服务于海量腾讯精品游戏,涵盖兼容测试、压力测试、性能测试、安全测试、远程调试等多个方向,立体化安全防护体系,保卫您的信息安全。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档