一个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)
Critical = (onum & 1);
UnSafe = (onum & 2);
NoCacheKey = ((onum & 0x1e) == 0x1c);
Figure 11: 选项编号的确定特性