1、SNMP的工作原理
基於TCP/IP互聯網的標準協議,傳輸層協議一般採用UDP,SNMP採用特殊的客戶機/服務器模式,即代理/管理站模型。對網絡的管理與維護是通過管理工作站與SNMP代理間的交互工作完成的。每個SNMP從代理負責回答SNMP管理工作站(主代理)關於MIB定義信息的各種查詢。如下圖1所示:
2、SNMP的常用操作
SNMP規定了5種協議數據單元PDU(也就是SNMP報文),用來在管理進程和代理之間的交換。
get-request操作:從代理進程處提取一個或多個參數值。
get-next-request操作:從代理進程處提取緊跟當前參數值的下一個參數值。
set-request操作:設置代理進程的一個或多個參數值。
get-response操作:返回的一個或多個參數值。這個操作是由代理進程發出的,它是前面三種操作的響應操作。
trap操作:代理進程主動發出的報文,通知管理進程有某些事情發生。
前面的3種操作是由管理進程向代理進程發出的,後面的2個操作是代理進程發給管理進程的,為了簡化起見,前面3個操作今後叫做get、get-next和set操作
3、SNMP的報文格式
4、SNMP常見數據類型
INTEGER:一個整數
OCTER STRING: 0或多個8bit字節,每個字節在0~255之間取值
DisplayString:0或多個8bit字節,每個字節必須是ASCII碼。在MIB-II中,所有該類型變量不能超過255個字符(0個字符可以)
NULL:代表相關的變量沒有值
IpAddress:4字節長的OCTER STRING,以網絡字節序表示IP地址
PhyAddress:6字節長的OCTER STRING,代表物理地址
Counter:非負整數,可以從0遞增到232-1()。達到最大值後歸0
TimeTicks:時間計數器,以0.01秒為單位遞增,不同的變量可以有不同的遞增幅度。所以在定義這種類型的變量時需要制定遞增幅度
SEQUENCE:與C語言中的結構體類似
SEQUENCE OF:一個向量
5.讀取設備信息的簡單報文交互過程
6.SNMP報文處理過程
Agent通過UDP端口161接收來自NMS的Request報文。
Agent接收到報文後,其基本處理過程如下:
1. 解碼:依據ASN.1基本編碼規則,生成用內部數據結構表示的報文。如果此過程出現錯誤導致解碼失敗,則丟棄該報文,不做進一步處理。
2. 比較SNMP版本號:將報文中的版本號取出,與本Agent支持的SNMP版本號比較。如果不一致,則丟棄該報文,不做進一步處理。
3. 團體名驗證:將報文中的團體名取出,此團體名由發出請求的網管站填寫。如與Agent所在設備認可的團體名不符,則丟棄該報文,不做進一步處理,同時產生一個Trap報文。SNMPv1提供較弱的安全措施,在版本3中這一功能被加強。
4. 提取PDU:從通過驗證的ASN.1對象中提出協議數據單元PDU。如果失敗,丟棄報文,不做進一步處理。
5. 處理PDU:根據不同的PDU,SNMP協議實體進行不同的處理。得到管理變量在MIB樹中對應的節點,從相應的模塊中得到管理變量的值,形成Response報文,編碼發回網管站。
6. 網管站得到響應報文後,經過同樣的處理,最終顯示結果。
閱讀更多 MirageWang 的文章