首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CoAP,如何理解“选项”

CoAP,如何理解“选项”
EN

Stack Overflow用户
提问于 2017-10-26 02:44:51
回答 1查看 2.1K关注 0票数 1

格式化CoAP数据包

RFC 7252 CoAP

在RFC 7252节3中,图7的第三行,字节9. 16或更多,是Options字段。我无法找到指定选项字段的长度的任何内容。我知道它可以更改,但与TKL字段指定的令牌字段不同,我无法识别选项的长度是在哪里指定的。

是的,我看了第3.1和3.2条,但无法理解他们在告诉我什么。文档声明引用前面的选项。好的,如果第一条消息没有先前的数据包,也没有先前的选项,您会做什么?

当我的代码需要发送CoAP消息时,如何确定可以发送哪些选项?哪些值必须加载到数据包中才能发送,例如,没有选项?

EN

回答 1

Stack Overflow用户

发布于 2017-10-27 05:37:49

如果您在RFC的sec 3.1中看到图8,第4-7位表示选项值的长度。

代码语言:javascript
复制
     0   1   2   3   4   5   6   7
   +---------------+---------------+
   |  Option Delta | Option Length |   1 byte
   +---------------+---------------+

位数0-3会告诉你它是哪一个选项。与在此消息中编码的前面的选项相比,这个小块只给出了增量。对于消息中的第一个选项,没有前面的选项,所以位数0-3给出了选项号。

让我们考虑一个示例,在这个示例中,您需要在一条Uri-Port消息中编码2个选项,即7000值的Uri-Path和值/tempUri-Path。选项总是按选项号的递增顺序编码。因此,您首先编码具有选项号7Uri-Port,然后用选项号11编码Uri-Path

Uri-端口,因为这是消息中的第一个选项,所以选项增量将与选项号相同,因此是Option delta = 0x7。端口值7000将接受2字节( (0x1B58) )和Option length = 0x2。因此,该选项将被编码为72 1b 58

Uri-Path这不是此消息中的第一个选项。此选项的选项增量为this option number - prev option number,即11 - 7 = 4。编码temp将花费4个字节,所以Option length = 4。所以这个选项将被编码为44 74 65 6d 70

注意,这是一种简化的情况,在这种情况下,选项数和长度不超过12个字节。当其中一个字节超过12个字节时,您可以使用RFC中指定的扩展选项delta/length进行编码。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46945044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档