CoAP,如何理解“选项”

时间:2017-10-26 02:44:52

标签: coap

格式化CoAP数据包

[RFC 7252 CoAP] [1]

在RFC 7252第3节,图7中,第三行,字节9 ... 16或更多,是Options字段。我无法找到任何指定选项字段有多长的内容。我知道它可以改变,但不像Token字段的长度是由字段TKL指定的,我无法识别指定选项长度的位置。

是的,我看到第3.1和3.2节,但我无法理解他们告诉我的内容。该文件说明参考以前的选项。好的,对于没有先前数据包且之前没有选项的第一条消息,您如何处理?

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

1 个答案:

答案 0 :(得分:3)

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

     0   1   2   3   4   5   6   7
   +---------------+---------------+
   |  Option Delta | Option Length |   1 byte
   +---------------+---------------+

比特0-3会告诉你它是哪个选项。与此消息中编码的先前选项相比,此半字节仅为您提供增量。对于消息中的第一个选项,没有先前的选项,因此位0-3为您提供选项编号。

让我们考虑一个示例,您需要在CoAP消息中对值为Uri-Port7000且值为Uri-Path的2个选项/temp进行编码。选项始终按选项编号的递增顺序编码。因此,您首先对选项号为Uri-Port的{​​{1}}进行编码,然后使用选项编号7编码Uri-Path

<强> URI的端口 由于这是邮件中的第一个选项,因此选项增量将与选项编号相同,因此11。端口值Option delta = 0x77000个字节2,因此(0x1B58)。因此,此选项将被编码为Option length = 0x2

<强> URI的路径 这不是此消息中的第一个选项。此选项的选项增量为72 1b 58,即this option number - prev option number。编码11 - 7 = 4将占用4个字节temp。因此,此选项将编码为Option length = 4

请注意,这是一个简化的情况,其中选项号和长度不超过12个字节。当其中任何一个超过12个字节时,使用RFC中指定的扩展选项delta / length进行编码。

相关问题