SNMP協議總結


說明:本文僅供學習交流,轉載請標明出處,歡迎轉載!

        SNMP(Simple Network Management Protocal),簡單網絡管理協議,其前身是SGMP協議(簡單網關監控協議),該協議的作用是對網絡上的設備進行監視管理,是一種應用層協議。

        基於TCP/IP的網絡管理包含兩個部分:網絡管理器(也叫管理進程,manager)和被管設備(代理),被管設備相應的進程稱為代理進程。管理器控制盒監視着一組代理。通常情況下,管理器是主機,代理是路由器或server。代理把相關性能信息存儲在數據庫中,管理器能夠獲取或改動該數據庫的值。管理器和被管設備之間的通信主要包含下面是三個方面:

        1.管理器向代理請求獲取某信息。

        2.管理器向代理請求設置代理數據庫中的某些值,以便強迫代理完畢某個任務。

        3.代理向管理器發送異常情況的警告。

        網絡管理的三個重要組成部分:SMI,MIB,SNMP

        SMI:管理信息結構。主要作用是:(1)定義了對象命名的規則;(2)定義了類型規則。(3)定義了編碼方法。

        MIB:管理信息庫,主要作用是:定義了類型對象的實體。

        SNMP:定義了管理器與代理交互的分組格式。

        為了更好地理解這三個網絡管理構件。我們將其與編程語言類比:SMI相當於語法。MIB相當於對象的申明與定義,SNMP相當於程序編碼

      以下簡介下着幾個構件.

       SMI 管理信息結構

       SMI使用了抽象語法標記1(由ISO指定的ASN.1)來定義數據類型。 

       對象命名規則:通過對象命名樹來約定命名規則。SMI使用了對象標識符,全部被SNMP管理的對象都要賦予一個對象標識符,這個對象對於命名樹中的iso.org.dod.internet.mgmt.mib-2,數字表示為1.3.6.1.2.1,對象標識符以1.3.6.1.2.1開始

        類型:包含簡單數據類型相當於C內置類型)和結構化數據類型,而結構化數據類型包含sequence類型相當於C語言中struct定義的類型)和sequence of類型(相當於C語言中的數組)。

        編碼方法:SMI採用了BER(Basic Encoding Rules,基本編碼規則),BER指明數據可用一個三元組(標記、長度、值)表示。每一種數據類型相應一個唯一的標記和長度,如整形INTEGER相應的標記為0000 0010。其長度為4B。可用表示為0000 0100。

       MIB 管理信息庫

       管理信息庫定義了因特網上被管對象的集合。以下簡介下MIB2(版本號2)。每一個代理都有它自己的MIB2。包括了管理器可以管理的全部對象的集合。

MIB2包括:sys(system,系統)、if(iterface,接口)、at(address translation。地址轉換)、ip、icmp、tcp、udp和snmp。

       怎樣訪問MIB變量呢? 以udp為例。來分析下簡單變量的訪問方式。首先我們必須知道變量和實例的差別。我們能夠把變量看成一種命名規則,而實例就是一個對象,若當前的結點為葉子結點,則能夠表示成一個變量,若為非葉子結點,則相應一個表。對於簡單變量的訪問(如udpInDatagrams)其id為1.3.6.1.2.1.7.1,則該變量的實例為id.0,即1.3.6.1.2.1.7.1.0,對於表的訪問,如在我們的命名樹中有這種分支udpTable-->udpEntry--->(udpLocalAddress,udpLocalPort)。先說下相應的數字,udp相應7,udpTable相應5,udpEntry相應1。udpLocalAddress相應1。udpLocalPort相應2,在不論什么時候。要訪問表中的某個特定實例(行),我們應該訪問id+索引,這里的索引是本地IP/本地port號,比如對於套接字181.23.45.14.23, 

       獲取其ip地址的方法是1.3.6.1.2.1.7.5.1.1.181.23.45.14.23, 

       獲取其port號的方法為1.3.6.1.2.1.7.5.1.2.181.23.45.14.23。

       重要的是。實例標識符(id+索引)是依照字典序排列的,對於表的排序,採用的“先列后行”的規則排列。也就是說在訪問的時候,先依照列的順序走。

       SNMP

       SNMP應用程序的主要作用是使得管理器和代理之間相互通信,以達到網絡管理的功能。SNMPv3在之前的版本號上加入了兩個特性不同級別的安全和遠程管理

       PDU:SNMPv3定義了8種類型的PDU。各自是GetRequestGetNextRequestGetBulkRequestSetRequestResponseTrapInformRequestReport

       GetRequest:管理器發給代理,用於讀取一個變量或一組變量的值。

       GetNextRequest:管理器發給代理讀取下一個變量值。

       GetBulkRequest:管理器發給代理,讀取塊請求。

       SetRequest:管理器發給代理,用於設置變量的值。

       Response:代理發給管理器,響應其請求。

       Trap:代理發給管理器,用來報告事件。

       InformRequest:管理器發給還有一個遠程管理器。獲取某些變量的值。

       Report:管理器發給還有一個遠程管理器。報告其差錯。

       SNMP使用的UDPport

        代理(相當於server)使用的是161管理器(相當於代理)使用的是162

        注意:這兩個port號僅僅在用於向對方主動發送報文時,在報文中設置目的port號。而對於被動響應報文,則port號使用主動請求方使用的暫時port號。

參考文獻:

[1]《TCP/IP協議族 第四版 王海等譯》

[2]《計算機網絡 第5版》

[3]《TCP/IP具體解釋 卷1:協議》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM