为什么在使用ASN.1标准时计算SID2值SID1应该乘以40?

时间:2015-01-26 15:26:20

标签: snmp asn.1 mib

如标准所述(http://rsdn.ru/article/ASN/ASN.xml),在编码OBJECT IDENTIFIER时,必须将SID1设置为0,1或2,并且SID2应具有相应的值,以便仅接近解码SID1和SID2。

那么,为什么评估编码SID2的公式是SID1 * 40 + SID2?什么是40岁?

2 个答案:

答案 0 :(得分:2)

这是ASN.1早期的遗产。 OID树中的弧0和1每个限制为40个子项(0-39),而Arc 2对子项数没有限制。为了节省线路上的比特,前两个OID节点以单个字节表示(即使对于Arc 2,如果其子节点小于47)。选择“40”只是为方便起见而选择的任意数字,以便于计算将前两个OID弧拟合为单个字节。

答案 1 :(得分:1)

这来自OID命名空间限制(IIRC,X.208)。当根命名空间是itu-t或iso时,只有三个顶级根(itu-t,iso和joint-itu-t),第二级限制为40弧(0-39)。因此,可以用单个字节明确地编码前两个弧。