基于.NET技術實現的SNMP通信
摘要:隨著網絡規模的擴大和復雜性的提高,網絡安全越來越受到網絡管理者的重視,SNMP以設計簡單為最大優勢,得到了廣大廠商的支持和應用。基于開發一個功能健全的網絡監控系統為目的,利用.NET技術支持下的SNMP-SharpNet開發包提供的接口不斷進行實驗研究,最終從SNMP請求的建立、發送和接受以及SNMP請求的超時和重傳都實現了函數封裝,同時實現了管理站和管理代理之間的SNMP通信,為監控系統后續功能的開發奠定了良好基礎。
關鍵詞:SNMP;.NET技術;SNMPSharpNet開發包;SNMP通信
隨著計算機網絡技術的飛速發展,通信網絡結構越來越復雜,通信網絡使用的設備也越來越復雜,由于網絡的大型化和復雜化,如何有效地進行網絡管理日益成為們普遍關注的問題。網絡管理的目標是最大限度地增加網絡的可用時間,提高網絡設備的利用率、網絡性能、服務質量和安全性,簡化多廠商混合網絡環境下的管理和控制網絡運行成本,提供網絡的長期規劃。
SNMP(Simple Network Management Protocol,簡單網絡管理協議)易于實現和廣泛的TCP/IP應用基礎,可以在多廠商混合網絡環境下,通過提供單一的網絡操作控制環境來管理所有子網和被管理設備,以集中的、統一的方式遠程控制網絡,以排除故障和重新配置網絡設備而獲得廠商的支持。
然而,實現SNMP編程常見方法是使用網絡管理應用SNMP的API,大多數API都提供了一個很大的函數庫,比如WinsNMP。由于.NET有豐富的、可復用的標準類庫,采用.NET開發越來越受到開發人員的青睞。為了簡化SNMP網絡管理系統的開發復雜度、開發出高效易擴展的代碼,采用把復雜的WinSNMP的API函數封裝成一個個相關的.NET類,從而簡化了SNMP網絡管理軟件開發的復雜性。用于它把SNMP編程中的核心部分都面向對象化封裝起來,因此開發人員不必了解SNMP底層機制,只要了解.NET的編程知識和SNMP編程的流程,就可以快速開發出高效的SNMP程序。
1 SNMP概述
SNMP(Simple Network Management Protocol,簡單網絡管理協議)首先是有IETF的研究小組為了解決Internet上的路由器的管理問題而提出的。1989年SNMPv1發行時,雖然能顯示出管理大部分Internet設備的強大能力,但是也暴露出明顯不足:給網絡帶來沉重負擔、網絡中數據的安全性差。1993年IETF發布了新的SNMP v2,然后再增加了安全機制的同時,也增加了實施的復雜性。隨著網絡安全重要性的發展,SNMPv3誕生了,其體系結構不僅體現了模塊化的設計思想,還能簡單地實現功麓模塊的增加和修改。從總體上說,SNMP的設計原則是簡單性和可擴展性。簡單性是通過信息類型限制、請求響應或協議而實現的;可擴展性是通過將管理信息模型與協議、被管理對象的詳細規定(MIB)分離而實現的。
1.1 SNMP通信模型
SNMP通信管理模型采用的是管理站/管理代理模型,共有4個組成部分:管理站、管理代理、管理信息庫和網絡管理協議,如圖1所示。
它們之間的關系是:管理站通過與管理代理發送/接受/響應SNMP請求來完成對管理代理的監控管理工作、所有管理設備的信息都被儲存在管理代理實體的管理信息庫中、管理站和管理代理之間交互的數據格式和規則都由SNMP來規范。每個部分的具體介紹如下:
1)管理站 一個單獨的設備或者是共享網絡中的一員,為管理站和網絡管理系統提供接口。
2)管理代理 一般的網絡終端如路由器、交換機等在設備出廠時都已經配置好相關的SNMP管理代理,對于不支持SNMP協議的設備,如果網絡終端是主機的話,可以在“控制面板”的“添加/刪除程序”的“添加/刪除windows組件”。安裝“簡單網絡管理協議”。
3)管理信息庫(MIB) 存放了網絡設備上被管對象資源的所有信息,每個被管對象有一個惟一對象的對象標識符(OID)。管理信息庫本身就是一個定義如何把對象標識符組合成邏輯相關的集合。
4)網絡管理協議(SNMP) 主要有以下3個功能:取值(Get)使網管站能讀取代理處對象的值;設置值(Set)使網管站能設置管理代理處對象的值;告警信息(Trap)使管理代理能夠向管理站通報重要事件。
1.2 SNMP協議數據單元
在SNMP中,信息按照SNMP報文格式在管理站和管理代理之間進行交換,一共有Get-Request操作、Get-Next-Request操作、Set-Request操作、Get-Response操作、Trap操作一共5種報文類型。如圖2所示。
前面3個操作是由管理站向管理代理發出的,后面2個操作是管理代理發給管理站的。這里值得注意的一點是,在管理代理一端使用熟知端口161來接受get或set報文,而在管理站一端是用熟知端口162來接受trap報文。
評論