溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SNMP協議開發概念理解-1

發布時間:2020-08-05 22:37:05 來源:網絡 閱讀:2995 作者:在你的左邊 欄目:網絡管理

SNMP協議入門

1、引言

基于TCP/IP的網絡管理包含3個組成部分:

1) 一個管理信息庫MIBManagement Information Base)。管理信息庫包含所有代理進程的所有可被查詢和修改的參數。RFC1213[McCloghrie and Rose 1991]定義了第二版的MIB,叫做MIB-II。

2)  關于MIB的一套公用的結構和表示符號。叫做管理信息結構SMIStructure of Management Information)。這個在RFC 1155 [Rose and McCloghrie 1990] 中定義。例如:SMI定義計數器是一個非負整數,它的計數范圍是 0~4294967295,當達到最大值時,又從0開始計數。

3) 管理進程代理進程之間的通信協議,叫做簡單網絡管理協議SNMPSimple Network Management Protocol)。在RFC 1157 [Case et al. 1990]中定義。SNMP包括數據報交換的格式等。盡管可以在傳輸層采用各種各樣的協議,但是在SNMP中,用得最多的協議還是UDP。 

2、SNMP協議概述

簡單網絡管理協議(SNMPSimple Network Management Protocol)是由互聯網工程任務組(IETFInternet Engineering Task Force )定義的一套網絡管理協議。該協議基于簡單網關監視協議(SGMPSimple Gateway Monitor Protocol)。利用SNMP,一個管理工作站可以遠程管理所有支持這種協議的網絡設備,包括監視網絡狀態、修改網絡設備配置、接收網絡事件警告等。雖然SNMP開始是面向基于IP的網絡管理,但作為一個工業標準也被成功用于電話網絡管理。

3、SNMP的發展史

SNMP經過了一個相對較長的發展過程,到目前為止一共經歷了三個版本。當下使用最廣泛是SNMPv2。

l  1989年發布了第一個版本的SNMP,稱為SNMPv1。

l  1991年發布SNMP的一個補充---RMON(Remote Network Monitoring,遠程網絡監視)。RMON擴充了SNMP的功能,包括對LAN的管理以及對依附于這些網絡設備的管理。注:RMON沒有修改和增加SNMP協議本身以及SMI,只是增加了SNMP監視子網的能力,把整個子網當成一個個體來監視,提供了新的MIB庫及相關的MIB行為。

l  1993SNMPv1的升級版被提出,SNMPv2。

l  1995SNMPv2正式發布,v2增加了SNMPv1的功能,并規定了如何在基于OSI的網絡中使用SNMP。同時RMON于本年度擴展為RMONv2

l  1998SNMPv3發布,一系列文檔定義了SNMP的安全性,并定義了將來改進的總體結構。SNMPv3可以和v2、v1一起使用。

4、SNMP的工作原理

SNMP采用特殊的客戶機/服務器模式,即代理/管理站模型。對網絡的管理與維護是通過管理工作站與SNMP代理間的交互工作完成的。每個SNMP從代理負責回答SNMP管理工作站(主代理)關于MIB定義信息的各種查詢。

SNMP的應用場景如圖1所示:

SNMP協議開發概念理解-1

 管理站和代理端使用MIB進行接口統一,MIB定義了設備中的被管理對象。管理站和代理都實現相應的MIB對象,使得雙方可以識別對方的數據,實現通信。管理站向代理請求MIB中定義的數據,代理端識別后,將管理設備提供的相關狀態或參數等數據轉換成MIB定義的格式,最后將該信息返回給管理站,完成一次管理操作。

5、SNMP的報文類型

SNMP中定義了五種消息類型:Get-Request、Get-Response、Get-Next-Request、Set-RequestTrap。

(1)Get-Request 、Get-Next-RequestGet-Response

SNMP 管理站用Get-Request消息從擁有SNMP代理的網絡設備中檢索信息,而SNMP代理則用Get-Response消息響應。Get-Next- Request用于和Get-Request組合起來查詢特定的表對象中的列元素。

(2)Set-Request SNMP管理站用Set-Request 可以對網絡設備進行遠程配置(包括設備名、設備屬性、刪除設備或使某一個設備屬性有效/無效等)。

(3)Trap SNMP代理使用TrapSNMP管理站發送非請求消息,一般用于描述某一事件的發生,如接口UP/DOWN,IP地址更改等。

上面五種消息中Get-Request、Get-Next-RequestSet-Request是由管理站發送到代理側的161端口的;后面兩種Get-ResponseTrap 是由代理進程發給管理進程的,其中Trap消息被發送到管理進程的162端口,所有數據都是走UDP封裝。

  SNMP工作流程如2

SNMP協議開發概念理解-1

6、SNMP的報文格式

SNMP代理和管理站通過SNMP協議中的標準消息進行通信,每個消息都是一個單獨的數據報。SNMP使用UDP(用戶數據報協議)作為第四層協議(傳輸協議),進行無連接操作。SNMP消息報文包含兩個部分:SNMP報頭和協議數據單元PDU。

SNMP協議開發概念理解-1

    在實際網絡傳輸環境下,SNMP報文的長度取決于其所采用的編碼方式。SNMP統一采用BER(Basic Encoding Rule)的編碼規則,同時在正式SNMP規范中使用的是ASN.1語法,Abastract Syntax Notation v1,即抽象語法描述語言。這兩個概念在后面實踐環節再做進一步介紹,這里只要稍微了解一下即可,不妨礙我們對協議本身的分析。這里我們簡單解釋一下BER編碼規則:

  BER作為ANS.1的基本編碼規則,描述具體的ANS.1對象如何編碼為比特流在網絡上進行傳輸。BER編碼規則由三部分組成:

SNMP協議開發概念理解-1

SNMP中定義了幾種基本的數據類型,其中v1v2版有些改動,具體參見相應的RFC文檔。這里我們只介紹幾種最常見的類型:

l  INTEGER:一個整數

l  OCTER STRING 0或多個8bit字節,每個字節在0~255之間取值

l  DisplayString0或多個8bit字節,每個字節必須是ASCII碼。在MIB-II中,所有該類型變量不能超過255個字符(0個字符可以)

l  NULL:代表相關的變量沒有值

l  IpAddress4字節長的OCTER STRING,以網絡字節序表示IP地址

l  PhyAddress6字節長的OCTER STRING,代表物理地址

l  Counter:非負整數,可以從0遞增到232-1()。達到最大值后歸0

l  TimeTicks:時間計數器,以0.01秒為單位遞增,不同的變量可以有不同的遞增幅度。所以在定義這種類型的變量時需要制定遞增幅度

l  SEQUENCE:與C語言中的結構體類似

l  SEQUENCE OF:一個向量,參見后面ANS.1語法詳細介紹章節

SNMP報文在傳輸層是封裝在UDP報文中的,而UDP又是基于IP網絡的,因此,我們可以得到完整的報文描述結構,如下圖所示:

SNMP協議開發概念理解-1

    PDU類型其實包含兩個字節,第一個字節表示真實的PDU的類型;第二個字節表示后面報文所占的字節總數。針對SNMPv1,這個字段取值如下:

    表1 PDU類型    

PDU類型

  

0

get-request

1

get-next-request

2

get-response

3

set-request

4

trap

   也就是說,trap的類型是4。但是在數據報文中,該字段一般表示為ax,其中x[0,4],即a0~a3表示相應的get、set等操作,a4表示trap報文。這里除了類型字段意外,其他字段均采用BER編碼方式:

SNMP協議開發概念理解-1

實戰演練之報文格式分析

    Trap報文格式和上述圖5所展示的結構有些差別,這里我們只分析SNMPv1SNMPv2Trap報文格式。trap報文前面的部分都一樣,區別在PDU協議數據單元部分。

 

  SNMPv1 Trap報文

   SNMPv1Trap報文格式如下所示:

SNMP協議開發概念理解-1

注意:除了PDU類型和PDU長度字段外,后面的每個字段都是BER編碼方式。

  trap類型”可以取以下值,其中0~6是已定義的特定trap,7及其以后的類型由供應商自定義


                表2 trap類型、名稱及描述信息


trap類型

名稱

描述信息

0

coldStart

代理進程對自己初始化

1

warmStart

代理進程對自己重新初始化

2

linkDown

一個接口已從工作狀態變為故障狀態(報文中的第一個變量標識此接口)

3

linkUp

一個接口已從故障狀態變為工作狀態(報文中的第一個變量標識此接口)

4

authenticationFailure

從SNMP管理進程收到無效共同體的報文

5

egpNeighborLoss

一個EGP鄰站已變為故障狀態(報文中的第一個變量包含鄰站IP地址)

6

enterpriseSpecific

在這個特定的代碼段中查找trap信息


    通過
wireshark抓包工具,捕獲一條如下的SNMP報文,接下來對其進行仔細分析。

SNMPv1原始報文內容:

00 23 5a 9e 58 b9 00 4c41 49 50 55 08 0045 00 00 48 00 00 40 00 40 11 a54e c0 a8 0a 01 c0 a8  0a 05 0c 00 00 a2 00 34 ff e0 30 2a 02 01 00 04 06 70 75 62 6c 69 63 a4 1d 06 0a 2b 06 01 04 01 bf 08 03 02 0a 40 04 c0 a8 0a 01 02 01 00 02 01 00 4301 0e 30 00

 

目的MAC00 23 5a 9e 58 b9

MAC00 4c 41 49 50 55

協議類型:08 00,為IP數據報

IP頭:45 00 00 48 00 00 40 00 40 11 a5 4e c0a8 0a 01 c0 a8 0a 05 0c

UDP頭:0c 00 00 a2 00 34 ff e0

其余部分都為SNMP報文,接下來我們對照前面的報文結構體來逐個分析一下。

n  30 表示SNMP消息是ASN.1SEQUENCE類型;

n  2a 表示該SNMP報文的總長度是42(0x2a)個字節,該字段所表示的報文長度起始于它后面的第一個字節直到報文結束;

n  02 01 00 表示版本號,可見其確實為BER編碼方式。02表示該字段是INTEGER類型;01表示該字段占1個字節;00表示版本號,該值為“版本號-1”;

n  04 06 70 75 62 6c 69 63表示團體名,04表示該字段為OCTET STRING類型;06表示該字段占6個字節;70 75 62 6c 69 63 表示團體名的ANSII碼的十六進制形式,這里是“public”;

n  a4 1d 其中a4中的“4”表示這是一個trap報文,a4又叫報文的標簽標記;1d表示后面還有29(0x1d)個字節的數據;

n  06 0a 2b 06 01 04 01 bf 08 03 02 0a企業OID標識。06表示該字段是個對象標識符,OBJECT IDENTIFIER;0a表示該字段占10(0x0a)個字節;關于SNMPOID的編碼方式有些奇特:例如1.3.6.1.2…. 取前兩個數字分別記為xy。編碼時40*x+y,這里x=1,y=3,因此結果為40*1+3=43,即表示十六進制的2b。因此,這里的企業OID編碼即為1.3.6.1.4.1.8072.3.2.10;

n  40 04 c0 a8 0a 01 同樣40表示該字段為OCTET STRING 類型;04表示IP地址占4個字節;IP地址為192.168.10.1;

n  02 01 00 其中00表示trap類型為coldStart;

n  02 01 00 其中00表示我們指定的trapspecific-trap也為coldStart類型;

n  43 01 0e 43表示為TimeTicks類型;01表示該字段占1個字節;0e即十進制的14表示時間標簽為0.14秒,這里時間計數器以0.01秒遞增;

n  30 00 30表示“鍵-值”值對的編碼類型為SEQUENCE;00表示該字段占0個字節,即沒有該字段。

SNMPv2 Trap報文

    

    SNMPv2Trap報文格式如圖8所示:

    SNMP協議開發概念理解-1    

    同樣的,這里除了trap類型和報文長度是標準網絡字節序之外,其余協議字段也均為BER編碼方式??梢钥吹?/span>v2版的trap報文正在向統一的報文格式發展,已經非常類似普通的SNMP請求、響應報文了。

    SNMPv2原始報文內容:

    00 23 5a 9e 58 b9 00 4c41 49 50 55 08 00 45 0000 7b 00 00 40 00 40 11 a5 1b c0 a8 0a 01 c0 a8 0a 05 0c 01 00 a2 00 67 04 bb 30 5d 02 0101 04 06 70 75 62 6c 69 63 a7 50 02 04 17 73 2c fb 02 01 00 02 01 00 3042 30 0d 06 08 2b 06 01 02 01 01 03 00 43 01 0e 30 17 06 0a2b 06 01 06 03 01 01 04 0100 06 09 2b 06 01 06 03 01 01 05 01 30 18 06 0a 2b 06 01 06 03 01 01 04 03 0006 0a 2b 06 01 04 01 bf 08 03 02 0a

     

    目的MAC00 23 5a 9e 58 b9

    MAC00 4c 41 49 50 55

    協議類型:08 00,IP報文

     IP頭:45 00 00 7b 00 00 40 00 40 11 a5 1b c0a8 0a 01 c0 a8 0a 05

    UDP頭:0c 01 00 a2 00 67 04 bb

    余下部分全為SNMP報文內容,這里我們做一下簡單的約定:

    xx標注類型;xx標注長度;xx標注真正的數據。

    這樣一來上面這串原始數據就好分析多了J

    n  30 5d 整個SNMP報文的編碼方式為30,即SEQUENCE類型,報文長度93(0x5d)字節;

    n  02 01 01 版本號01v2版本;

    n  04 06 70 75 62 6c 69 63 團體名70 75 62 6c 69 63  即英文的“public”;

    n  a7 50 a7表示trap類型為7,即廠商自定義trap;50表示PDU區段占80(0x50)字節;

    n  02 04 17 73 2c fb 請求ID17 73 2c fb十進制的393424123;

    n  02 01 00 錯誤狀態0;

    n  02 01 00 錯誤索引0;

    n  30 42 “變量名-值”對編碼類型30SEQUENCE類型;“變量名-值”所占總字節0x42,即66字節;       

    n  30 0d 06 08 2b 06 01 02 01 01 03 00 43 01 0e 第一個“名-值”對區段編碼方式30SEQUENCE類型;第一個“名-值”對總長度0x0d,13字節;第一個變量名的編碼類型0x06,時間標簽;第一個變量名占0x08個字節;第一個變量名2b 06 01 02 01 01 0300,為1.3.6.1.2.1.1.3.0;第一個變量值為0x0e,即14;

    n  30 17 06 0a 2b 06 01 06 03 01 01 04 01 0006 09 2b 06 01 06 03 01 01 05 01 第二個“名-值”對;變量名1.3.6.1.6.3.1.1.4.1.0;變量值1.3.6.1.6.3.1.1.5.1;

    n  30 18 06 0a 2b 06 01 06 03 01 01 04 03 0006 0a 2b 06 01 04 01 bf 08 03 02 0a第三個“名-值”對;變量名1.3.6.1.6.3.1.1.4.3.0;變量值1.3.6.1.4.1.8072.3.2.10;

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女