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

1 前言

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

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

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

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

2 官方示例组包

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

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

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

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

因此字节流是:

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/

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 。

>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,整理如下:

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 

因此字节流是:

42 01 00 01 59 5C B4 74 65 73 74

3.4 成功回复

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

回复字节流如下:

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 

逐个拆包:

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

搞定回家,再见。


  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值