我正在编写一个SNMP agent,MIB定义包含一个Unsigned32类型的OID。
代理的Unix实现使用Net-SNMP并将OID设置为ASN_UNSIGNED类型,因为它没有ASN_UNSIGNED32。当我使用Wireshark查看GET响应时,它将其解码为"Gauge32“值。乍一看,这是有道理的,因为根据RFC1902,Unsigned32和Gauge32是相同的。
Windows实现基于Windows的SnmpAPI.lib并将OID设置为ASN_UNSIGNED32,当我使用Wireshark查看GET响应时,它将其解码为"Unsigned32“。这在我看来更好。
为什么这两个实现在网络上产生了不同的结果?
哪一个是正确的版本,我如何才能从两个实现中获得相同的版本?
发布于 2012-05-29 17:40:22
结果表明,Net-SNMP使用当前的RFC1902编码,其中Unsigned32和Gauge32相同,而Windows使用过时的RFC1442编码,其中Unsigned32和Gauge32具有不同的编码。
发布于 2012-05-26 18:16:18
如果您在Windows上保存Wireshark捕获,然后在Unix上的Wireshark中打开它。然后,您可能会看到它显示的类型。Unsigned32和Gauge32是由标准定义的可互换的,所以在所有的SNMP实现中应该没有任何不同。在线路上,它应该传输相同的字节。
https://stackoverflow.com/questions/10756666
复制相似问题