5.4.6 选项编号

一个option由一个option编号所定义,这个编号也能提供一些额外的语义信息,比如,奇数编号代表一个重要option,偶数编号代表非重要option。注意,这不只是一个约定,也是协议的一个功能:option是否重要,取决于这个option编号是奇数还是偶数。

更通俗点说,一个option编号由一位掩码来确定这个option是否重要,是unsafe还是safe-to-forward,还有,如果是safe-to-forward,还提供一个cache-key,如下图所示。在下文中,这位掩码被表示成为一个字节,当LSB格式时,option编号表示成无符号整数。当bit7(最低有效位)是1,option是重要(同样,如果是0的话为非重要)。当bit6是1,option是unsafe(同样,如果是0的话为safe-to-forward)。当bit6是0的时候,也就是这个option不是unsafe。当且仅当bit 3-5全都设置为1的时候它不是一个cache-key(NoCacheKey),所有其他的bit的组合,代表它确实是一个Cache-Key。这些options的分类在下面章节中有阐述。

           0   1   2   3   4   5   6   7
         +---+---+---+---+---+---+---+---+
         |           | NoCacheKey| U | C |
         +---+---+---+---+---+---+---+---+
        图10:option number mask(LSB)

一个端可以使用一段等价的C代码(如图11),来得到这个option的编号“onum”的特性。

Critical = (onum & 1);
UnSafe = (onum & 2);
NoCacheKey = ((onum & 0x1e) == 0x1c);

Figure 11: 选项编号的确定特性

Option的编号都定义在CoAP选项编号文档中(见12.2节)。

最后更新于