我正在编写一个 SNMP 代理,MIB 定义包括一个 Unsigned32 类型的 OID。
代理的 Unix 实现使用 Net-SNMP 并将 OID 设置为 ASN_UNSIGNED 类型,因为它没有 ASN_UNSIGNED32。当我使用 Wireshark 查看 GET 响应时,它会将其解码为“Gauge32”值。乍一看这是有道理的,因为根据 RFC 1902 Unsigned32 和 Gauge32 是相同的。
Windows 实现基于 Windows 的 SnmpAPI.lib,并将 OID 设置为 ASN_UNSIGNED32,当我使用 Wireshark 查看 GET 响应时,它会将其解码为“Unsigned32”。这对我来说更好看。
为什么这 2 种实现会在线路上产生不同的结果?
哪个是正确的版本,我如何设法从两个实现中获得相同的版本?
最佳答案
事实证明,Net-SNMP 使用当前的 RFC 1902 编码,其中 Unsigned32 和 Gauge32 是相同的,而 Windows 使用过时的 RFC 1442 编码,其中 Unsigned32 和 Gauge32 具有不同的编码。
关于c++ - SNMP 类型 Unsigned32 的正确编码是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10756666/