亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于.NET技術(shù)實(shí)現(xiàn)的SNMP通信

        2011-03-14 05:13:06趙英王小維
        電子設(shè)計(jì)工程 2011年10期
        關(guān)鍵詞:重傳管理站網(wǎng)絡(luò)管理

        趙英,王小維

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

        隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,通信網(wǎng)絡(luò)結(jié)構(gòu)越來(lái)越復(fù)雜,通信網(wǎng)絡(luò)使用的設(shè)備也越來(lái)越復(fù)雜,由于網(wǎng)絡(luò)的大型化和復(fù)雜化,如何有效地進(jìn)行網(wǎng)絡(luò)管理日益成為們普遍關(guān)注的問(wèn)題。網(wǎng)絡(luò)管理的目標(biāo)是最大限度地增加網(wǎng)絡(luò)的可用時(shí)間,提高網(wǎng)絡(luò)設(shè)備的利用率、網(wǎng)絡(luò)性能、服務(wù)質(zhì)量和安全性,簡(jiǎn)化多廠商混合網(wǎng)絡(luò)環(huán)境下的管理和控制網(wǎng)絡(luò)運(yùn)行成本,提供網(wǎng)絡(luò)的長(zhǎng)期規(guī)劃。

        SNMP[1](Simple Network Management Protocol,簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議)易于實(shí)現(xiàn)和廣泛的TCP/IP應(yīng)用基礎(chǔ),可以在多廠商混合網(wǎng)絡(luò)環(huán)境下,通過(guò)提供單一的網(wǎng)絡(luò)操作控制環(huán)境來(lái)管理所有子網(wǎng)和被管理設(shè)備,以集中的、統(tǒng)一的方式遠(yuǎn)程控制網(wǎng)絡(luò),以排除故障和重新配置網(wǎng)絡(luò)設(shè)備而獲得廠商的支持。

        然而,實(shí)現(xiàn)SNMP編程常見(jiàn)方法是使用網(wǎng)絡(luò)管理應(yīng)用SNMP的API,大多數(shù)API都提供了一個(gè)很大的函數(shù)庫(kù),比如WinSNMP[2]。由于.NET有豐富的、可復(fù)用的標(biāo)準(zhǔn)類庫(kù),采用.NET開(kāi)發(fā)越來(lái)越受到開(kāi)發(fā)人員的青睞。為了簡(jiǎn)化SNMP網(wǎng)絡(luò)管理系統(tǒng)的開(kāi)發(fā)復(fù)雜度、開(kāi)發(fā)出高效易擴(kuò)展的代碼,采用把復(fù)雜的WinSNMP[3]的API函數(shù)封裝成一個(gè)個(gè)相關(guān)的.NET[4]類,從而簡(jiǎn)化了SNMP網(wǎng)絡(luò)管理軟件開(kāi)發(fā)的復(fù)雜性。用于它把SNMP編程中的核心部分都面向?qū)ο蠡庋b起來(lái),因此開(kāi)發(fā)人員不必了解SNMP底層機(jī)制,只要了解.NET的編程知識(shí)和SNMP編程的流程,就可以快速開(kāi)發(fā)出高效的SNMP程序。

        1 SNMP概述

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

        1.1 SNMP通信模型

        SNMP通信管理模型采用的是管理站/管理代理模型,共有4個(gè)組成部分:管理站、管理代理、管理信息庫(kù)和網(wǎng)絡(luò)管理協(xié)議,如圖1所示。

        圖1 SNMP網(wǎng)絡(luò)管理模型Fig.1Network management model

        它們之間的關(guān)系是:管理站通過(guò)與管理代理發(fā)送/接受/響應(yīng)SNMP請(qǐng)求來(lái)完成對(duì)管理代理的監(jiān)控管理工作、所有管理設(shè)備的信息都被儲(chǔ)存在管理代理實(shí)體的管理信息庫(kù)中、管理站和管理代理之間交互的數(shù)據(jù)格式和規(guī)則都由SNMP來(lái)規(guī)范。每個(gè)部分的具體介紹如下:

        1)管理站一個(gè)單獨(dú)的設(shè)備或者是共享網(wǎng)絡(luò)中的一員,為管理站和網(wǎng)絡(luò)管理系統(tǒng)提供接口。

        2)管理代理一般的網(wǎng)絡(luò)終端如路由器、交換機(jī)等在設(shè)備出廠時(shí)都已經(jīng)配置好相關(guān)的SNMP管理代理,對(duì)于不支持SNMP協(xié)議的設(shè)備,如果網(wǎng)絡(luò)終端是主機(jī)的話,可以在“控制面板”的“添加/刪除程序”的“添加/刪除windows組件”,安裝“簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議”。

        3)管理信息庫(kù)(MIB)存放了網(wǎng)絡(luò)設(shè)備上被管對(duì)象資源的所有信息,每個(gè)被管對(duì)象有一個(gè)惟一對(duì)象的對(duì)象標(biāo)識(shí)符(OID)。管理信息庫(kù)本身就是一個(gè)定義如何把對(duì)象標(biāo)識(shí)符組合成邏輯相關(guān)的集合。

        4)網(wǎng)絡(luò)管理協(xié)議(SNMP)主要有以下3個(gè)功能:取值(Get)使網(wǎng)管站能讀取代理處對(duì)象的值;設(shè)置值(Set)使網(wǎng)管站能設(shè)置管理代理處對(duì)象的值;告警信息(Trap)使管理代理能夠向管理站通報(bào)重要事件。

        1.2 SNMP協(xié)議數(shù)據(jù)單元

        在SNMP中,信息按照SNMP報(bào)文格式在管理站和管理代理之間進(jìn)行交換,一共有Get-Request操作、Get-Next-Request操作、Set-Request操作、Get-Response操作、Trap操作一共5種報(bào)文類型。如圖2所示。

        圖2 SNMP報(bào)文的工作機(jī)制Fig.2SNMP message work mechanism

        前面3個(gè)操作是由管理站向管理代理發(fā)出的,后面2個(gè)操作是管理代理發(fā)給管理站的。這里值得注意的一點(diǎn)是,在管理代理一端使用熟知端口161來(lái)接受get或set報(bào)文,而在管理站一端是用熟知端口162來(lái)接受trap報(bào)文。

        2 SNMP通信的關(guān)鍵

        2.1 數(shù)據(jù)類型的規(guī)范定義

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

        本文中最常用到的幾個(gè)數(shù)據(jù)的規(guī)范如表1所示。

        表1 ASN.1規(guī)范下的數(shù)據(jù)定義Tab.1Data definition under the criterion of ASN.1

        2.2 SNMP通信的關(guān)鍵函數(shù)

        SNMP規(guī)定使用用戶數(shù)據(jù)報(bào)協(xié)議(UDP[7])作為第4層傳輸協(xié)議,在數(shù)據(jù)傳輸過(guò)程中,網(wǎng)絡(luò)一步步把UDP數(shù)據(jù)封裝成SNMP報(bào)文的形式來(lái)保障管理站和管理代理之間的數(shù)據(jù)順利交互,而UDP使用的是無(wú)連接服務(wù),所以SNMP無(wú)需在管理站和管理代理之間保持連接,但可能發(fā)生數(shù)據(jù)報(bào)丟失的情況,因此一定要有超時(shí)和重傳機(jī)制。主要實(shí)現(xiàn)的幾個(gè)函數(shù)如下:

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

        internal void SendToBegin();//調(diào)用同步的SendTo函數(shù);

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

        internal void RetryAsyncRequest();//異步重傳請(qǐng)求函數(shù);

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

        .NET使用以上幾個(gè)函數(shù)完成基本的SNMP通信,首先,用RequestAsync函數(shù)建立SNMP請(qǐng)求,然后用SendToBegin函數(shù)發(fā)送此SNMP請(qǐng)求,同時(shí)管理代理端有監(jiān)聽(tīng)函數(shù),收到SNMP請(qǐng)求后會(huì)做出響應(yīng)并給管理站返回需要的信息,此時(shí),管理站用ReceiveBegin函數(shù)接受返回來(lái)的信息。在此通信過(guò)程中有可能發(fā)生數(shù)據(jù)丟失,RetryAsyncRequest和Request函數(shù)就是為此而設(shè)計(jì)的重傳請(qǐng)求函數(shù)和重傳協(xié)議函數(shù)。

        3 .NET技術(shù)實(shí)現(xiàn)

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

        Get-Request操作具體應(yīng)用:

        class Program{

        static void Main(string[]args){

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

        理的IP地址;

        Int snmpPort=1611;//指定管理代理的端口號(hào);

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

        Int timeout=300;//設(shè)定超時(shí),默認(rèn)超時(shí)時(shí)間是0.01 s,現(xiàn)為3 s;

        Int retry=2;//設(shè)定重傳次數(shù);

        //調(diào)用SimpleSnmp的構(gòu)造函數(shù)初始化,一個(gè)有5個(gè)構(gòu)造函數(shù),此構(gòu)造函數(shù)帶有4個(gè)參數(shù)值;

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

        Pdu pdu=new Pdu();//產(chǎn)生一個(gè)pdu請(qǐng)求;

        pdu.Type=PduType.Get;//調(diào)用Get方法;

        pdu.VbList.Add("1.3.6.1.2.1.1.5.0");//指定OID節(jié)點(diǎn);

        //調(diào)用GetNext方法把結(jié)果保存在Dictionary數(shù)據(jù)類型的result中;

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

        if(result==null){

        Console.WriteLine("Request failed.");

        //如果返回結(jié)果為空,請(qǐng)求失敗;

        }

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

        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操作具體應(yīng)用:

        class program{

        static void Main(string[]args){

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

        String snmpCommunity="private";//指定管理代理的端口號(hào);

        //調(diào)用SimpleSnmp的構(gòu)造函數(shù)初始化,一個(gè)有5個(gè)構(gòu)造函數(shù),此構(gòu)造函數(shù)帶有兩個(gè)參數(shù)值;

        SimpleSnmp snmp=new SimpleSnmp(snmpAgent,snmpCommunity);

        List<Vb>vbList=new List<Vb>();//產(chǎn)生一個(gè)pdu請(qǐng)求;

        Oid setOid=new Oid("1.3.6.1.2.1.1.1.0");//指定OID節(jié)點(diǎn);

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

        vbList.Add(new Vb(setOid,setValue));//把數(shù)據(jù)添加到UDP數(shù)據(jù)報(bào)中;

        //調(diào)用Set方法把結(jié)果保存在Dictionary數(shù)據(jù)類型的result中;

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

        if(result==null){

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

        }else{

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

        }

        }

        }

        在主程序中執(zhí)行了這兩段代碼,都返回了開(kāi)發(fā)者想要的結(jié)果。最重要的是,使用.NET技術(shù)封裝了SNMP底層通信的編程,使整個(gè)程序看起來(lái)簡(jiǎn)單易懂。

        4 結(jié)束語(yǔ)

        隨著網(wǎng)絡(luò)規(guī)模和復(fù)雜性的發(fā)展,一個(gè)功能健全的安全監(jiān)控管理軟件自然成為網(wǎng)絡(luò)管理者的最大愿望。.NET的開(kāi)發(fā)語(yǔ)言之一C#的主要特點(diǎn)就是簡(jiǎn)單易用。由于C#把對(duì)編程中的很多部分都對(duì)象化,編程人員不需要了解函數(shù)的具體實(shí)現(xiàn),在使用的時(shí)候,著重注意函數(shù)的參數(shù)類型和個(gè)數(shù)以及對(duì)象與函數(shù)之間的對(duì)應(yīng)關(guān)系,就可以很方便地實(shí)現(xiàn)各種參數(shù)的傳輸、修改等等。如此一來(lái),整個(gè)基于SNMP的網(wǎng)站監(jiān)控管理系統(tǒng)的開(kāi)發(fā)周期就大大縮短。

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

        [2]Stalling William.SNMP網(wǎng)絡(luò)管理[M].胡成松,汪凱,譯.北京:中國(guó)電力出版社,2001.

        [3]羅君舟.TCP/IP協(xié)議及網(wǎng)絡(luò)編程技術(shù)[M].北京:清華大學(xué)出版社,2004:181-234.

        [4]劉建榮,武樺,趙楊.基于.NET的水電廠遠(yuǎn)程監(jiān)控系統(tǒng)的研究[J].西北水力發(fā)電,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技術(shù)的Web遠(yuǎn)程監(jiān)控系統(tǒng)方案[J].工業(yè)控制計(jì)算機(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網(wǎng)管系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2006:78-81.

        [7]苗蘇娟,萬(wàn)振凱.簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議SNMP的研究與應(yīng)用[J].石油工業(yè)計(jì)算機(jī)應(yīng)用,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設(shè)計(jì)網(wǎng)絡(luò)通訊程序[J].信息工程大學(xué)學(xué)報(bào),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#技術(shù)站.C#調(diào)用Windows API的要點(diǎn)[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

        猜你喜歡
        重傳管理站網(wǎng)絡(luò)管理
        宿遷市救助管理站:小團(tuán)隊(duì)如何撬動(dòng)大社會(huì)
        大連市救助管理站:多個(gè)“第一”背后的秘密
        面向異構(gòu)網(wǎng)絡(luò)的多路徑數(shù)據(jù)重傳研究?
        電動(dòng)汽車充電服務(wù)網(wǎng)絡(luò)管理初探
        基于EOC通道的SHDSL網(wǎng)絡(luò)管理技術(shù)
        數(shù)據(jù)鏈路層的選擇重傳協(xié)議的優(yōu)化改進(jìn)
        校園網(wǎng)絡(luò)管理及安全防護(hù)
        河南科技(2014年11期)2014-02-27 14:16:52
        試論加強(qiáng)農(nóng)村水利管理站管理的措施
        河南科技(2014年5期)2014-02-27 14:08:52
        衛(wèi)星導(dǎo)航網(wǎng)絡(luò)管理設(shè)計(jì)
        MPTCP中一種減緩緩存阻塞的重傳策略
        亚洲综合色一区二区三区另类| 小雪好紧好滑好湿好爽视频| 国产69精品久久久久久久| 国产乱子伦精品免费无码专区 | 东北少妇不戴套对白第一次| 国产最新进精品视频| 深夜国产成人福利在线观看女同 | 日本巨大的奶头在线观看| 亚洲高清有码在线观看| 亚洲女同性恋激情网站| 亚洲人成网站在线播放2019| 国产黄在线观看免费观看不卡| 亚洲色欲久久久综合网| 国产成人自拍视频视频| 亚洲 另类 小说 国产精品| 俄罗斯老熟妇色xxxx| 国产成人8x视频网站入口| 亚洲综合中文一区二区| 精品国产三级a∨在线欧美| 国产午夜亚洲精品午夜鲁丝片| 亚洲一区二区高清精品| 久久精品国产一区老色匹| 国产av久久久久精东av| 夜爽8888视频在线观看| 国产成人精品视频网站| 亚洲国产成人久久精品一区| 爆乳熟妇一区二区三区霸乳| 日本一本久道| 亚洲国产精品成人一区| 男人的天堂av高清在线| 野花在线无码视频在线播放| 乱色视频中文字幕在线看| 漂亮人妻出轨中文字幕| 成年女人色毛片| 人妻久久999精品1024| 精品亚洲国产亚洲国产| 国内免费高清在线观看| 杨幂AV污网站在线一区二区| 日韩精品少妇专区人妻系列| 日本免费视频| 韩国19禁无遮挡啪啪无码网站|