SNMP的相关知识及C#开发事项
项目中会用到SNMP来上报设备信息,所以最近收集了一些关于SNMP的一些文档,暂时保存到这里。在学习和开发中,如果遇到不容易解决的问题,也会记录到这里
C# 一个简单实用 SNMP 的例子 通过这个例子,我们可以从底层了解SNMP的通讯方式。可以看到,SNMP是利用UDP进行通讯(默认是161或162端口),拼凑固定格式的数据包发送到管理端,并解析返回数据。当然在实际开发中,我们不会一个字节一个字节的去凑。可以利用现成的开源项目,最出名的就是 SNMPSharpNet 。 这里可以看到SNMP的介绍,以及开发中的使用示例
SNMP从入门到开发:基础篇 强烈推荐读一读这篇文章,作者很用心的分析了两个版本的SNMP数据包内容。(交互的数据包采用的是 数据类型-数据长度-具体数据 的结构)
思科的SNMP介绍 推荐阅读,全英文,排版清晰,介绍地很全面。并且能避免一些翻译上的干扰
利用C#开发基于snmpsharpnet基础的SNMP开发应用 实际项目中利用SNMPSharpNet来开发的部分例子。
在添加了SNMP功能,开启SNMP服务后,如果利用上面的例子无法获取到信息。可以尝试在SNMP Service的安全属性中,选择接受来自任何主机的SNMP数据包。并重启该服务,应该就能获取到详细信息了。
SNMP v2的Trap数据包格式跟其他操作的数据包格式一致,但他的前两个键值对固定为SysUpTime和trapObjectID。4.2.6. The SNMPv2-Trap-PDU
只要看到关于Trap的解释里,包含了企业OID(Enterprise OID),代理地址(Agent address),Trap类型(Generic Trap Type),指定Trap代码(Specific Trap Code)和时间戳(Time stamp)这些内容的,都是讲的SNMP v1版本的,不用理会。
暂时写到这里,以后有新的内容会及时更新