SNMP學習之Snmp4j

文章轉自:http://blog.csdn.net/clearwater21cn/article/details/1667614

相關鏈接:
Snmp學習筆記
使用snmp4j實現Snmp功能(一)
使用snmp4j實現Snmp功能(二)
使用snmp4j實現Snmp功能(三)

SNMP是英文“Simple Network Management Protocol”的縮寫,中文意思是“簡單網絡管理協議”。SNMP是目前最常用的環境管理協議。SNMP被設計成與協議無關,所以它可以在IP,IPX,AppleTalk,OSI以及其他用到的傳輸協議上被使用。SNMP是一系列協議組和規範,它們提供了一種從網絡上的設備中收集網絡管理信息的方法。SNMP也爲設備向網絡管理工作站報告問題和錯誤提供了一種方法。
    目前,幾乎所有的網絡設備生產廠家都實現了對SNMP的支持。領導潮流的SNMP是一個從網絡上的設備收集管理信息的公用通信協議。設備的管理者收集這些信息並記錄在管理信息庫(MIB)中。這些信息報告設備的特性、數據吞吐量、通信超載和錯誤等。MIB有公共的格式,所以來自多個廠商的SNMP管理工具可以收集MIB信息,在管理控制檯上呈現給系統管理員。
    SNMP提供了一種統一的、跨平臺的設備管理辦法。

概念太抽象,先來看一個例子。
我們來做一個最簡單的Snmp操作:獲取一臺機器的機器名,假設其IP是192.168.1.1。
    首先要給192.168.1.1安裝Snmp環境。Window組件的管理監視工具裏包含Snmp,只需要安裝一下就可以了。Snmp默認的通信端口是161/162,有的系統需要手動設置,這個可以通過創建篩選器列表來實現,具體怎麼設置網上很多,大家可以去搜索一下。另外需要關閉192.168.1.1的防火牆。

接下來需要一個能夠進行Snmp通信的工具,比較簡單的有snmputil,大家可以去網上下載。
snmputil的命令規則是:
snmputil [get|getnext|walk] agent community oid [oid ...]
[get|getnext|walk]爲消息類型,我們此次進行的操作是get
agent指Snmp代理即你想進行操作的網絡設備的ip或名稱,即192.168.1.1
community:分區域,即密碼,默認是public
oid:想要操作的MIB數據對象號,設備名稱對應的MIB對象號是.1.3.6.1.2.1.1.5.0

打開命令行窗口,進入snmputil所在路徑,鍵入
snmputil get 192.168.1.1 public .1.3.6.1.2.1.1.5.0
如果參數都正確,控制檯就會顯示出192.168.1.1的機器名。

不知道現在大家對snmp有沒有一個感性的認識,通過get、set這樣的操作,我們就可以讀取、控制網絡設備了。

接下來學習一下和Snmp有關的基本概念吧

代理和管理站的模型

Snmp分2種角色:SNMP管理站(manager,我們的本機127.0.0.1)和SNMP代理(agent,我們操作的機器,比如192.168.1.1)。代理是實際網絡設備中用來實現SNMP功能的部分。代理在UDP的161端口接收NMS的讀寫請求消息,管理站在UDP的162端口接收代理的事件通告消息。所以,一旦獲取設備的訪問權限(community,默認爲public),就可以訪問設備信息、改寫和配置設備參數。由於採用UDP協議,不需要在代理和管理站之間保持連接。

SNMP的操作命令

SNMP協議之所以易於使用,這是因爲它對外提供了三種用於控制MIB對象的基本操作命令。它們是:Get、Set 和 Trap。

Get:管理站讀取代理者處對象的值。它是SNMP協議中使用率最高的一個命令,因爲該命令是從網絡設備中獲得管理信息的基本方式。

Set:管理站設置代理者處對象的值。它是一個特權命令,因爲可以通過它來改動設備的配置或控制設備的運轉狀態。它可以設置設備的名稱,關掉一個端口或清除一個地址解析表中的項等。

Trap:代理者主動向管理站通報重要事件。它的功能就是在網絡管理系統沒有明確要求的前提下,由管理代理通知網絡管理系統有一些特別的情況或問題發生了。如果發生意外情況,客戶會向服務器的162端口發送一個消息,告知服務器指定的變量值發生了變化。通常由服務器請求而獲得的數據由服務器的161端口接收。Trap 消息可以用來通知管理站線路的故障、連接的終端和恢復、認證失敗等消息。管理站可相應的作出處理。

SNMP的命令和報文

SNMP協議定義了數據包的格式,及網絡管理員和管理代理之間的信息交換,它還控制着管理代理的MIB數據對象。因此,可用於處理管理代理定義的各種任務。
    一條SNMP報文由三個部分組成:版本域(version field),分區域(community field)和SNMP協議數據單元域(SNMP protocol data unit field),數據包的長度不是固定的。 
    版本域:這個域用於說明現在使用的是哪個版本的SNMP協議。目前,version 1是使用最廣泛的SNMP協議。 
    分區域:分區(community)是基本的安全機制,用於實現SNMP網絡管理員訪問SNMP管理代理時的身份驗證。類似於密碼,默認值爲public。分區名(Community name)是管理代理的口令,管理員被允許訪問數據對象的前提就是網絡管理員知道網絡代理的口令。如果把配置管理代理成可以執行Trap命令,當網絡管理員用一個錯誤的分區名查詢管理代理時,系統就發送一個autenticationFailure trap報文。

PDU  : 協議數據單元。是SNMP消息中的數據區, 即Snmp通信時報文數據的載體。

MIB  : 管理信息庫

管理信息數據庫(MIB)是一個信息存儲庫,它包含了管理代理中的有關配置和性能的數據,有一個組織體系和公共結構,其中包含分屬不同組的許多個數據對象。 
    MIB數據對象以一種樹狀分層結構進行組織,這個樹狀結構中的每個分枝都有一個專用的名字和一個數字形式的標識符。結構樹的分枝實際表示的是數據對象的邏輯分組。而樹葉,有時候也叫節點(node),代表了各個數據對象。在結構樹中使用子樹表示增加的中間分枝和增加的樹葉。 
    使用這個樹狀分層結構,MIB瀏覽器能夠以一種方便而且簡潔的方式訪問整個MIB數據庫。MIB瀏覽器是這樣一種工具,它可以遍歷整棵MIB結構樹,通常以圖形顯示的形式來表示各個分枝和樹葉對象。可以通過其數字標識符來查找MIB中的數據對象,這個數字標識符號從結構樹的頂部(或根部)開始,直到各個葉子節點(即數據對象)爲止。這種訪問方式和文件系統的組織方式一致。兩者的主要區別在於文件系統中的路徑名可以以絕對也可以以相對方式表示,而MIB數據對象只能以絕對方式表示,不能使用相對方式。
    每一個節點都有一個對象標識符(OID)來唯一的標識,每個節點用數字和字符兩種方式顯示,其中對象標識符OID是由句點隔開的一組整數,也就是從根節點通向它的路徑。一個帶標號節點可以擁有包含其它帶標號節點爲它的子樹,如果沒有子樹它就是葉子節點,它包含一個值並被稱爲對象。比如網絡設備名的oid是.1.3.6.1.2.1.1.5.0,其值爲設備名稱的字符串。
    網絡資源被抽象爲對象進行管理。但SNMP中的對象是表示被管資源某一方面的數據變量。對象被標準化爲跨系統的類,對象的集合被組織爲管理信息庫(MIB)。MIB作爲設在代理者處的管理站訪問點的集合,管理站通過讀取MIB中對象的值來進行網絡監控。管理站可以在代理者處產生動作,也可以通過修改變量值改變代理者處的配置。

以上就是一些Snmp最基本概念了,更深入的應用下次講!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章