解释SNMP GET REQUEST消息的OID部分的十六进制

时间:2017-04-30 16:32:41

标签: c network-programming snmp

所以我一直致力于在linux上编写SNMP版本的SNMPGET请求。我打开一个UDP套接字,形成消息,并将其发送出去只是为了不断得到一个回复​​说没有找到OID。我使用的OID是:

1.3.6.1.2.1.1.1.0 十六进制: 00 03 06 01 02 01 01 01 00

在snmpget发送的数据包上运行tcpdump后,我意识到即使使用相同的OID,发送的数据包实际上也包含了十六进制:

2B 06 01 02 01 01 01 00

当我用我的程序尝试那个十六进制时,它起作用了。所以,问题是,为什么它是2B而不是01 03?我到处寻找,但我无法绕过它的逻辑。似乎每个SNMP获取消息都以这种方式发送,其中iso.org转换为2B,但我还没有看到原因。

1 个答案:

答案 0 :(得分:2)

前两个数字(在您的情况下为1.3)编码方式不同。计算将是:

1 * 40 + 3 = 43(dec)= 2B(十六进制)。

这就是你2B的原因。

阅读this了解详情。 here是一个编码/解码的在线工具。