999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于.NET技術實現的SNMP通信

2011-03-14 05:13:06趙英王小維
電子設計工程 2011年10期
關鍵詞:管理

趙英,王小維

(北京化工大學信息科學與技術學院,北京100029)

隨著計算機網絡技術的飛速發展,通信網絡結構越來越復雜,通信網絡使用的設備也越來越復雜,由于網絡的大型化和復雜化,如何有效地進行網絡管理日益成為們普遍關注的問題。網絡管理的目標是最大限度地增加網絡的可用時間,提高網絡設備的利用率、網絡性能、服務質量和安全性,簡化多廠商混合網絡環境下的管理和控制網絡運行成本,提供網絡的長期規劃。

SNMP[1](Simple Network Management Protocol,簡單網絡管理協議)易于實現和廣泛的TCP/IP應用基礎,可以在多廠商混合網絡環境下,通過提供單一的網絡操作控制環境來管理所有子網和被管理設備,以集中的、統一的方式遠程控制網絡,以排除故障和重新配置網絡設備而獲得廠商的支持。

然而,實現SNMP編程常見方法是使用網絡管理應用SNMP的API,大多數API都提供了一個很大的函數庫,比如WinSNMP[2]。由于.NET有豐富的、可復用的標準類庫,采用.NET開發越來越受到開發人員的青睞。為了簡化SNMP網絡管理系統的開發復雜度、開發出高效易擴展的代碼,采用把復雜的WinSNMP[3]的API函數封裝成一個個相關的.NET[4]類,從而簡化了SNMP網絡管理軟件開發的復雜性。用于它把SNMP編程中的核心部分都面向對象化封裝起來,因此開發人員不必了解SNMP底層機制,只要了解.NET的編程知識和SNMP編程的流程,就可以快速開發出高效的SNMP程序。

1 SNMP概述

SNMP(Simple Network Management Protocol,簡單網絡管理協議)首先是有IETF的研究小組為了解決Internet上的路由器的管理問題而提出的。1989年SNMP v1發行時,雖然能顯示出管理大部分Internet設備的強大能力,但是也暴露出明顯不足:給網絡帶來沉重負擔、網絡中數據的安全性差。1993年IETF發布了新的SNMP v2,然后再增加了安全機制的同時,也增加了實施的復雜性。隨著網絡安全重要性的發展,SNMPv3誕生了,其體系結構不僅體現了模塊化的設計思想,還能簡單地實現功能模塊的增加和修改。從總體上說,SNMP的設計原則是簡單性和可擴展性。簡單性是通過信息類型限制、請求響應或協議而實現的;可擴展性是通過將管理信息模型與協議、被管理對象的詳細規定(MIB[6])分離而實現的。

1.1 SNMP通信模型

SNMP通信管理模型采用的是管理站/管理代理模型,共有4個組成部分:管理站、管理代理、管理信息庫和網絡管理協議,如圖1所示。

圖1 SNMP網絡管理模型Fig.1Network management model

它們之間的關系是:管理站通過與管理代理發送/接受/響應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所示。

圖2 SNMP報文的工作機制Fig.2SNMP message work mechanism

前面3個操作是由管理站向管理代理發出的,后面2個操作是管理代理發給管理站的。這里值得注意的一點是,在管理代理一端使用熟知端口161來接受get或set報文,而在管理站一端是用熟知端口162來接受trap報文。

2 SNMP通信的關鍵

2.1 數據類型的規范定義

在基于SNMP通信的監控系統中,每個被管理設備都維護一個包含統計信息及其他數據的數據庫,被稱作管理信息庫(Management Information Base,MIB)。每個MIB的每項都包含一個信息:對象類型、語法、訪問及狀態等。MIB中的各項內容由管理信息結構(Structure of Management Information,SMI)來定義,SMI為MIB提供了一個通用框架,同時規定了在MIB中使用時的數據類型,即如何表示和命名MIB對象。一個對象類型的命名明確代表一個對象,成為對象標識符。它是一個由圓點分隔的整數序列,這些對象標識符按照類似DNS域名系統的樹狀結構來排列的,一個對象標識符(OID)唯一標識一個MIB對象。另外,MIB還要嚴格遵守ASN.1(Abstract Syntax Notation One,抽象語法標記)的語法格式,ASN.1提供了一套正規格式用來描述對象結構,而且不管對象數據的具體指代。

本文中最常用到的幾個數據的規范如表1所示。

表1 ASN.1規范下的數據定義Tab.1Data definition under the criterion of ASN.1

2.2 SNMP通信的關鍵函數

SNMP規定使用用戶數據報協議(UDP[7])作為第4層傳輸協議,在數據傳輸過程中,網絡一步步把UDP數據封裝成SNMP報文的形式來保障管理站和管理代理之間的數據順利交互,而UDP使用的是無連接服務,所以SNMP無需在管理站和管理代理之間保持連接,但可能發生數據報丟失的情況,因此一定要有超時和重傳機制。主要實現的幾個函數如下:

internal bool RequestAsync(IPAddress peer,int port,byte[]buffer,intbufferLength,inttimeout,intretries,SnmpAsyncCallback asyncCallback);//建立一個異步的SNMP請求;

internal void SendToBegin();//調用同步的SendTo函數;

internal void ReceiveBegin();//從Socket類接收數據;

internal void RetryAsyncRequest();//異步重傳請求函數;

public byte[]Request(IPAddress peer,int port,byte[]buffer,int bufferLength,int timeout,int retries);//使用同步請求借助請求超時和重傳的IP/UDP協議;

.NET使用以上幾個函數完成基本的SNMP通信,首先,用RequestAsync函數建立SNMP請求,然后用SendToBegin函數發送此SNMP請求,同時管理代理端有監聽函數,收到SNMP請求后會做出響應并給管理站返回需要的信息,此時,管理站用ReceiveBegin函數接受返回來的信息。在此通信過程中有可能發生數據丟失,RetryAsyncRequest和Request函數就是為此而設計的重傳請求函數和重傳協議函數。

3 .NET技術實現

把UDP的Socket通信[8]封裝好之后,運用.NET技術[9]進行具體的SNMP控制,下面以Get-Request操作和Set-Request操作為例子來演示.NET技術編程[10]的快速、便捷。

Get-Request操作具體應用:

class Program{

static void Main(string[]args){

String snmpAgent=“127.0.0.1”;//指定管理代

理的IP地址;

Int snmpPort=1611;//指定管理代理的端口號;

String snmpCommunity=“public”;//指定共同體;

Int timeout=300;//設定超時,默認超時時間是0.01 s,現為3 s;

Int retry=2;//設定重傳次數;

//調用SimpleSnmp的構造函數初始化,一個有5個構造函數,此構造函數帶有4個參數值;

SimpleSnmp snmp=new SimpleSnmp(snmpAgent,snmpPort,snmpCommunity,timeout,retry);

Pdu pdu=new Pdu();//產生一個pdu請求;

pdu.Type=PduType.Get;//調用Get方法;

pdu.VbList.Add("1.3.6.1.2.1.1.5.0");//指定OID節點;

//調用GetNext方法把結果保存在Dictionary數據類型的result中;

Dictionary<Oid,AsnType>result=snmp.GetNext(SnmpVersion.Ver1,pdu);

if(result==null){

Console.WriteLine("Request failed.");

//如果返回結果為空,請求失敗;

}

else{//如果有返回值,依次順序,解析返回結果;

foreach(KeyValuePair<Oid,AsnType>entry in result)

{

Console.WriteLine("{0}={1}:{2}",entry.Key.ToString(),

SnmpConstants.GetTypeName(entry.Value.Type),

entry.Value.ToString());

}

}

}

}

Set-Request操作具體應用:

class program{

static void Main(string[]args){

String snmpAgent="localhost";//指定管理代理的IP地址;

String snmpCommunity="private";//指定管理代理的端口號;

//調用SimpleSnmp的構造函數初始化,一個有5個構造函數,此構造函數帶有兩個參數值;

SimpleSnmp snmp=new SimpleSnmp(snmpAgent,snmpCommunity);

List<Vb>vbList=new List<Vb>();//產生一個pdu請求;

Oid setOid=new Oid("1.3.6.1.2.1.1.1.0");//指定OID節點;

OctetString setValue=new OctetString("My personal toy");//添加OctetString字符串;

vbList.Add(new Vb(setOid,setValue));//把數據添加到UDP數據報中;

//調用Set方法把結果保存在Dictionary數據類型的result中;

Dictionary<Oid,AsnType>result=snmp.Set(SnmpVersion.Ver1,list.ToArray());

if(result==null){

Console.WriteLine("Request failed.");//如果返回結果為空,請求失敗;

}else{

Console.WriteLine("Success!");//否則,Set操作成功;

}

}

}

在主程序中執行了這兩段代碼,都返回了開發者想要的結果。最重要的是,使用.NET技術封裝了SNMP底層通信的編程,使整個程序看起來簡單易懂。

4 結束語

隨著網絡規模和復雜性的發展,一個功能健全的安全監控管理軟件自然成為網絡管理者的最大愿望。.NET的開發語言之一C#的主要特點就是簡單易用。由于C#把對編程中的很多部分都對象化,編程人員不需要了解函數的具體實現,在使用的時候,著重注意函數的參數類型和個數以及對象與函數之間的對應關系,就可以很方便地實現各種參數的傳輸、修改等等。如此一來,整個基于SNMP的網站監控管理系統的開發周期就大大縮短。

[1]RFC3410.Introduction and applicability statements for internetstandardnetworkmanagementframework,(RDC2570)[S].2002.

[2]Stalling William.SNMP網絡管理[M].胡成松,汪凱,譯.北京:中國電力出版社,2001.

[3]羅君舟.TCP/IP協議及網絡編程技術[M].北京:清華大學出版社,2004:181-234.

[4]劉建榮,武樺,趙楊.基于.NET的水電廠遠程監控系統的研究[J].西北水力發電,2006(1):4-10.LIU Jian-rong,WU Hua,ZHAO Yang.Remote monitoring system research of hydropower plants based on.NET[J].Northwest Hydropower,2006(1):4-10.

[5]胡士毅,魏豐,曹宇.一種基于.NET技術的Web遠程監控系統方案[J].工業控制計算機,2003(2):39-40.HU Shi-yi,WEI Feng,CAO Yu.Web remote monitoring system plan based on.NET technology[J].Industry Control Computer,2003(2):39-40.

[6]楊蕾.基于SNMP的GPON網管系統的設計與實現[D].成都:電子科技大學,2006:78-81.

[7]苗蘇娟,萬振凱.簡單網絡管理協議SNMP的研究與應用[J].石油工業計算機應用,2004,12(4):40-42.MIAO Su-juan,WAN Zhen-kai.Research and application of simple network management protocol SNMP[J].Petroleum Industry Computer Application,2004,12(4):40-42.

[8]謝安明,邵美珍.使用Socket設計網絡通訊程序[J].信息工程大學學報,2001,2(1):68-70.XIE An-ming,SHAO Mei-zhen.The design of the network communication program with socket[J].Journal of Information Engineering University,2001,2(1):68-70.

[9]中文C#技術站.C#調用Windows API的要點[EB/OL].[2011-02-03].http://www.chinacs.net.

[10]Zitun.SNMP library[EB/OL].[2010-02-12].http://www.codeproject.com/KB/cs/SNMPDLL.aspx

猜你喜歡
管理
棗前期管理再好,后期管不好,前功盡棄
今日農業(2022年15期)2022-09-20 06:56:20
《水利建設與管理》征訂啟事
聆聽兩會
——關注自然資源管理
2020年《水利建設與管理》征稿函
運行管理
管理就是溝通
中國制筆(2019年1期)2019-08-28 10:07:26
加強土木工程造價的控制與管理
如何加強土木工程造價的控制與管理
解秘眼健康管理
“這下管理創新了!等7則
雜文月刊(2016年1期)2016-02-11 10:35:51
主站蜘蛛池模板: 国产精品蜜芽在线观看| 亚卅精品无码久久毛片乌克兰| 日本欧美中文字幕精品亚洲| 亚洲无码精品在线播放| 欧美日韩亚洲国产| 在线视频精品一区| 日韩资源站| 99久久精品国产麻豆婷婷| 欧美a网站| 高清精品美女在线播放| 日韩精品专区免费无码aⅴ| 日本成人精品视频| 热久久国产| 呦视频在线一区二区三区| 国产精品久线在线观看| 免费国产高清视频| 久久大香伊蕉在人线观看热2| 日本亚洲欧美在线| 国产成人一级| 福利视频一区| 国产综合另类小说色区色噜噜 | 91久久偷偷做嫩草影院| 高清国产va日韩亚洲免费午夜电影| 国产人前露出系列视频| 国产av剧情无码精品色午夜| 亚洲国产中文综合专区在| 中文字幕永久在线看| 伊人久久大香线蕉综合影视| 国产一二三区在线| 国模私拍一区二区三区| 亚洲最大福利视频网| 欧美日本中文| 国产区人妖精品人妖精品视频| 国产一级二级三级毛片| 国产高潮视频在线观看| 亚洲无线国产观看| 免费AV在线播放观看18禁强制| 国产精品一区不卡| 丰满人妻一区二区三区视频| 粉嫩国产白浆在线观看| 91国语视频| 国产精品尤物在线| 欧美精品不卡| 就去色综合| 欧亚日韩Av| 欧美无遮挡国产欧美另类| 日韩欧美视频第一区在线观看| 国产女人在线视频| 夜夜拍夜夜爽| 午夜精品久久久久久久99热下载 | 欧美成人怡春院在线激情| 亚洲欧美成人| julia中文字幕久久亚洲| 欧美成人精品一级在线观看| 热re99久久精品国99热| 精品福利国产| 国产精品久久久久久久久kt| 色呦呦手机在线精品| 国产精品手机在线播放| 久久黄色小视频| 欧美精品在线视频观看| 色综合五月| 亚洲天堂在线免费| 特级aaaaaaaaa毛片免费视频| 国产精品综合色区在线观看| 国产精品开放后亚洲| 国产va欧美va在线观看| 老熟妇喷水一区二区三区| 久久综合色视频| 国产黄色免费看| 亚洲三级a| 精品福利一区二区免费视频| 亚洲综合色婷婷中文字幕| 无码内射中文字幕岛国片| 国产精品无码一区二区桃花视频| 亚洲黄色成人| 久久久精品久久久久三级| 成年免费在线观看| 欧美日在线观看| 香蕉伊思人视频| 国产女人在线观看| 九色视频线上播放|