SNMP request
SNMPv1的PDU有五种类型,包括报文请求(Request)和响应(Response):
GetRequest、GetNextRequest、SetRequest、GetResponse、Trap
SNMPv2又增加了两种PDU:GetBulkRequest和InformRequest。
SNMP工具软件
在很多snmp工具中都有很多功能,例如get subtree,walk,table view之类的,可以肯定的是这些功能都是通过上面的标准request/response组合,通过工具软件自己的逻辑+MIB库实现的。
snmp工具最好load上对应的MIB库,这样可以对snmp mib有个更详细的了解,例如每个OID代表的是什么含义,哪些Oid之间有关联的,数据表中哪些是索引,哪些是数据等。
下面我们来搞清楚table view是如何做到的:
在通过snmp工具获取这个table view时,抓包:
首先,需要注意的是全部使用的是get-next-request
第二,由于snmp工具软件load了对应的mib库,通过mib中的描述,工具知道了,这个表里有5列,列的OID风别为:
1.3.6.1.2.1.4.20.1.1
1.3.6.1.2.1.4.20.1.2
1.3.6.1.2.1.4.20.1.3
1.3.6.1.2.1.4.20.1.4
1.3.6.1.2.1.4.20.1.5
并且这个表的索引 index是1.3.6.1.2.1.4.20.1.1
了解到这些信息后,SNMP工具一次getnext这个5个OID
设备一次性返回了5对应的5个response,实际上这正好是一行的数据
然后snmp 工具就继续用已知oid get next,一直到SNMP工具发现 返回的OID 超出了表格定义的OID范围
注意:
最后回应的数据包中20.1.1的NEXT已经是20.1.2的数据
20.1.5的NEXT已经是21.1.1
由此SNMP工具判定这个table数据已经获取完毕了