我星期一将它发布到net-snmp邮件列表中并且没有回复,所以我在这里尝试。 我很困惑,希望有人可以提供帮助。
我正在为Cortex M4应用程序编写SNMP代理。 我购买的SNMP书籍以及我在网上阅读的内容表明所有数据字段都应该是ASN.1编码的。我知道OID是ASN.1编码的。我不确定这是否适用于其他字段,如请求ID。
查看net-snmp发送的snmp命令,看起来Request ID字段是一个简单的(4字节)32位整数。 这是一个屏幕截图,显示了通过Wireshark监控的snmpget事务:
http://www.ko4bb.com/net-snmp/RequestID.png
它显示RequestID为1750020546(十进制),0x684F31C2为十六进制。 Wireshark中的数据字段也显示为“68 4f 31 c2”
这不是ASN.1编码的,否则前3个字节将其第7位设置为1,最后一个字节将第7位设置为0,这意味着前3个值将是> 0x7F并且最后一个值应该< 0x80的
ASN.1是否未用于RequestID字段?
答案 0 :(得分:2)
我添加了wireshark标签,因为这纯粹是Wireshark问题。
请求ID字段严格采用ASN.1 BER格式,即02 04 68 4f 31 c2
。
你应该小心,Wireshark太聪明了,无法解析数据并隐藏你的一些细节。
请检查突出显示68 4f 31 c2
的按钮面板。 Wireshark突出显示它们,但故意忽略02 04
。这就是问题所在。
正如@GuyHarris在评论中指出的,这个Wireshark行为是可配置的。其他数据包分析器(如Microsoft网络监视器)在同一场景中的行为可能不同。