SNMP Table簡介
SNMP Table是對象的有序集合,包含若干行。爲什麼SNMP中需要用表格呢,原因是有些數據的組織用表格來表達更方便,多個對象的組合才能完整描述一條信息。格式相同的信息可能有多條,像表tcpConnTable:
tcpConnState
|
tcpConnLocalAddress
|
tcpConnLocaPort
|
tcpConnRemAddress
|
tcpConnRemPort
|
established(5)
|
127.0.0.1
|
1042
|
127.0.0.1
|
6000
|
closed(1)
|
127.0.0.1
|
6000
|
127.0.0.1
|
1042
|
closeWait(8)
|
192.168.0.101
|
1
|
192.168.0.102
|
80
|
SNMP的變量可分爲兩種,一種是標量(scalar variable),另一種是用表格組織的變量。對象是一個定義,實際的應用需要把對象實例化,無論哪種變量都有對象實例。一個標量對象只有一個對象實例,標量的對象實例是通過在對象ID後加‘.0’來標識,如sysName變量的OID是:“.iso.org.dod.internet.mgmt.mib-2.system.sysName”,標識便是“.iso.org.dod.internet.mgmt.mib-2.system.sysName.0”。 表格中的對象我們通常叫列對象,他的實例是一組用列對象標識符(OID)和行索引值(RowIndexValue)聯合標識的實例,對象OID後面擴展index的值來標識對象實例(OID.ind1Value.ind2Value…..),index相當於數據庫中的主鍵,index的個數可以是1個也可以多個,通過index可找到唯一的對象實例,舉個例子,如果取tcpConnTable中的tcpConnState第3個對象實例的值,通過“.iso.org.dod.internet.mgmt.mib-2.tcp.tcpConnTable.tcpConnEntry.tcpConnState. 192.168.0.101.1. 192.168.0.102.80”來標識,取出的值就是closeWait(8)。
SNMP表格的常用操作是取值(取整個表的對象實例的值、取行的值、取列的值)、修改值、添加行、刪除行和遍歷整個表。其實這些操作都是基於get、set、getNext、getBulk、response這幾個基本操作實現的,要證實也不難,用抓包工具抓包看看就知道了。