SNMPtypesUnsigned32的正确编码是什么?

我正在写一个SNMP代理,MIB定义包含一个Unsigned32types的OID。

代理的Unix实现使用Net-SNMP,并将OID设置为ASN_UNSIGNEDtypes,因为它没有ASN_UNSIGNED32。 当我用Wireshark查看GET响应时,它将其解码为“Gauge32”值。 这是一见钟情,因为根据RFC 1902,Unsigned32和Gauge32是相同的。

Windows实现基于Windows的SnmpAPI.lib,并将OID设置为ASN_UNSIGNED32,当我使用Wireshark查看GET响应时,将其解码为“Unsigned32”。 这对我来说看起来更好。

2个实现如何在电线上产生不同的结果?

哪个是正确的版本,我怎样才能从两个实现中获得相同的结果?

Solutions Collecting From Web of "SNMPtypesUnsigned32的正确编码是什么?"

事实证明,Net-SNMP使用当前的RFC 1902编码,其中Unsigned32和Gauge32是相同的,而Windows使用过时的RFC 1442编码,其中Unsigned32和Gauge32具有不同的编码。

如果您在Windows上保存Wireshark捕获,然后在Unix上的Wireshark中打开它。 那么你可能会看到它显示的是什么类型。 标准定义的Unsigned32和Gauge32是可以互换的,所以在所有的SNMP实现中都应该没有什么不同。 在线上,它应该传输相同的字节。