我正在编写一个 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”。这对我来说看起来更好。
为什么这两种实现会在电线上产生不同的结果?
哪个是正确的版本,我怎样才能设法从两个实现中获得相同的版本?