【发布时间】:2012-02-07 17:25:56
【问题描述】:
一段时间以来,我一直在尝试了解 SNMP 数据包格式,但我仍然不确定我是否掌握了它。以下是我认为我认为正确的一些观察结果,但我不确定:
- 每个数据包都是一组不同类型的嵌套数据原语,由类型、长度和一些数据组成。
- OID 的前两部分始终为
1.3,并被编码为单个字节。 - 如果其数值小于 128,则后续部分将分别编码为一个字节。
- 大于 127 的 OID 部分被编码为多个字节,其值由 7 个最低有效位确定,除最后一个字节外,所有最高有效位都设置为 1。
- 有些数据类型 ID 是官方的(整数、字符串等),但有些是专有的和特定于设备的。
我真正不明白的是,如果某个值的长度超过 255 个字节,那么该值的长度是如何编码的。使用 Wireshark,我发现对于 256 以下的长度,长度字段为 1 个字节,但对于大于 256 的长度,该字段被拆分为多个字节。但是,较大的 OID 部件号中使用的编码似乎并不适用。
我在 RFC 中找不到任何关于此的内容(反正大约有 30 个)来帮助我。
谁能帮我澄清一下,并验证我上面的观察是否正确?
【问题讨论】: