SNMP:简单网络管理协议(一)
1.引言
基于TCP/IP的網(wǎng)絡(luò)管理包含兩個部分:網(wǎng)絡(luò)管理站(也叫管理進程,manager)和被管的網(wǎng)絡(luò)單元(也叫被管設(shè)備)。被管的設(shè)備種類繁多,例如:路由器、X終端、終端服務(wù)器和打印機等。這些被管設(shè)備的共同點就是都運行TCP/IP協(xié)議。被管設(shè)備端和關(guān)聯(lián)相關(guān)的軟件叫做代理程序(agent)或代理進程。管理站一般都是帶有色彩監(jiān)視器的工作站,可以顯示所有被管理設(shè)備的狀態(tài)(例如連接是否掉線、各種連接上的流量狀況等)。
管理進程和代理進程之間的通信可以有兩種方式。一種是管理進程向代理進程發(fā)出請求,詢問一個具體的參數(shù)值(例如:你產(chǎn)生了多少個不可達的ICMP端口?)。另外一種方式是代理進程主動向管理進程報告有某些重要的事件發(fā)生(例如:一個連接口掉線了)。當(dāng)然,管理進程除了可以向代理進程詢問某些參數(shù)值以外,它還可以按要求改變代理進程的參數(shù)值(例如:把默認的IP TTL值改為64)。
基于TCP/IP的網(wǎng)絡(luò)管理包含3個組成部分:
1)一個管理信息庫MIB(Management Information Base)。管理信息庫包含所有代理進程的所有可被查詢和修改的參數(shù)。RFC 1213 [McCloghrie and Rose 1991]定義了第二版的MIB,叫做MIB-II。
2)關(guān)于MIB的一套共用的結(jié)構(gòu)和表示符號。叫做管理信息結(jié)構(gòu)SMI(Structure of Management Information)。這個在RFC 1155[Rose and McCloghrie]中定義。例如:SMI定義計數(shù)器是一個非負整數(shù),它的計數(shù)范圍是0~4 294 967 295,當(dāng)達到最大值時,又從0開始計數(shù)。
3)管理進程和代理進程之間的通信協(xié)議,叫做簡單網(wǎng)絡(luò)管理協(xié)議SNMP(Simple Network Management Protocol)。在RFC 1157[Case et a1. 1990]中定義。SNMP包括數(shù)據(jù)報交換的格式等。盡管可以在運輸層采用各種各樣的協(xié)議,但是在SNMP中,用的最多的協(xié)議還是UDP。
上面提到的RFC所定義的SNMP叫做SNMP v1,或者就叫做SNMP。到1993年為止,又有一些新的關(guān)于SNMP的RFC發(fā)表。在這些RFC中定義的SNMP叫做第二版SNMP(SNMP v2)。
2.協(xié)議
關(guān)于管理進程和代理進程之間的交互信息,SNMP定義了5種報文:
1)get-request操作:從代理進程處提取一個或多個參數(shù)值。
2)get-next-request操作:從代理進程處提取一個或多個參數(shù)的下一個參數(shù)值 (關(guān)于"下一個(next)"的含義將在后面介紹)。
3)set-request操作:設(shè)置代理進程的一個或多個參數(shù)值。
4)get-response操作:返回的一個或多個參數(shù)值。這個操作是由代理進程發(fā)出的。它是前面3中操作的響應(yīng)操作。
5)trap操作:代理進程主動發(fā)出的報文,通知管理進程有某些事情發(fā)生。
前面的3個操作是由管理進程向代理進程發(fā)出的。后面兩個是代理進程發(fā)給管理進程的(為簡化起見,前面3個操作今后叫做get、get-next和set操作)。圖1描述了這5種操作。
圖1
這些操作中的前4種操作是簡單的請求應(yīng)答方式,而且在SNMP中往往使用UDP協(xié)議,所以可能發(fā)生管理進程和代理進程之間數(shù)據(jù)包丟失的情況。因此一定要有超時和重傳機制。
管理進程發(fā)出的前面3種操作采用UDP的161端口。代理進程發(fā)出Trap操作采用UDP的162端口。由于收發(fā)采用了不同的端口號,所以一個系統(tǒng)可以同時為管理進程和代理進程
圖2是封裝成UDP數(shù)據(jù)報的5種操作的SNMP報文格式。
圖2 SNMP報文的格式
在圖中,我們僅僅對IP和UDP的首部長度進行了標注。這是由于:SNMP報文的編碼采用了ASN.1和BER,這就使得報文的長度取決于變量的類型和值。關(guān)于ASN.1和BER的內(nèi)容將在后面介紹。在這里介紹各個字段的內(nèi)容和作用。
圖3顯示各種PDU對應(yīng)的值(PDU即協(xié)議數(shù)據(jù)單元,也就是分組)。
圖3 SNMP報文中的PDU類型
共同體字段是一個字符串。這是管理進程和代理進程之間的口令,是明文格式。默認的值是public。
對于get、get-next和set操作,請求標識由管理進程設(shè)置,然后由代理進程在get-response中返回。這種類型的字段我們在其他UDP應(yīng)用中曾經(jīng)見過。這個字段的作用是使客戶進程(在目前情況下是管理進程)能夠?qū)⒎?wù)器進程(即代理進程)發(fā)出的響應(yīng)和客戶進程發(fā)出的查詢進行匹配。這個字段允許管理進程對一個或多個代理進程發(fā)出多個請求,并且從返回的眾多應(yīng)答中進行分類。
差錯狀態(tài)字段是一個整數(shù),它是由代理進程標注的,指明有差錯發(fā)生。圖4是參數(shù)值、名稱和描述之間的對應(yīng)關(guān)系。
圖4 SNMP差錯狀態(tài)的值
差錯索引字段是一個整數(shù)偏移量,指明當(dāng)有差錯發(fā)生時,差錯發(fā)生在哪個參數(shù)。它是由代理進程標注的,并且只有在發(fā)生noSuchName、readOnly和badValue差錯時才進行標注。
在get、get-next和set的請求數(shù)據(jù)報中,包含變量名稱和變量值的一張表。對于get和get-next操作,變量值部分被忽略,也就是不需要填寫。
對于trap操作符(PDU類型是4),SNMP報文格式有所變化。
3.管理信息結(jié)構(gòu)
?SNMP中,數(shù)據(jù)類型并不多。在本節(jié),我們就討論這些數(shù)據(jù)類型,而不關(guān)心這些數(shù)據(jù)類型在實際中是如何編碼的。
- INTEGER。一個變量雖然定義為整型,但也有多種形式。有些整型變量沒有范圍限制,有些整型變量定義為特定的值(例如,IP的轉(zhuǎn)發(fā)標志就只有允許轉(zhuǎn)發(fā)時的1或者不允許轉(zhuǎn)發(fā)時的2這兩種),有些整型變量定義為一個特定的范圍(例如,UDP和TCP的端口號就從0到65535)。
- OCTER STRING 0或多個8 bit字節(jié),每個字節(jié)值在0~255之間。對于這種數(shù)據(jù)類型和下一種數(shù)據(jù)類型的BER編碼,字符串的字節(jié)個數(shù)要超過字符串本身的長度。這些字符串不是以NULL結(jié)尾的字符串。
- OBJECT IDENTIFIER 將在下一節(jié)中介紹。
- NULL。代表相關(guān)的變量沒有值。例如,在get和get-next操作中,變量的值就是NULL,因為這些值還有待到代理進程處去取。
- IpAddress。4字節(jié)長度的OCTER STRING,以網(wǎng)絡(luò)序表示的IP地址。每個字節(jié)代表IP地址的一個字段。
- PhysAddress。OCTER STRING類型,代表物理地址(例如以太網(wǎng)物理地址為6字節(jié)長度)。
- Counter。非負的整數(shù),可從0遞增到232-1(4 294 976 295)。達到最大值后歸0。
- Gauge。非負的整數(shù),取之范圍為從0到4 294 976 295(或增或減)。達到最大值后鎖定,直到復(fù)位。例如,MIB中的tcpCurrEstab就是類型的變量的一個例子,它代表目前在ESTABLISHED或CLOSE_WAIT狀態(tài)的TCP連接數(shù)。
- TimeTicks。時間計數(shù)器,以0.01秒為單位遞增,但是不同的變量可以有不同的遞增幅度。所以在定義這種類型的變量的時候,必須指定遞增幅度。例如,MIB中的sysUpTime變量就是這種類型的變量,代表代理進程從啟動開始的時間長度,以多少個百分之一秒的數(shù)目來表示。
- SEQUENCE。這一數(shù)據(jù)類型與C程序設(shè)計語言中的"structure"類似。一個SEQUENCE包括0個或多個元素,每一個元素又是另一個ASN.1數(shù)據(jù)類型。例如,MIB中的UdpEntry就是這種類型的變量。它代表在代理進程側(cè)目前"激活"的UDP數(shù)量("激活"表示目前被應(yīng)用程序所用)。在這個變量中包含兩個元素:
- SEQUENDE OF。這是一個向量的定義,其所有元素具有相同的類型。如果每一個元素都具有簡單的數(shù)據(jù)類型,例如是整數(shù)類型,那么我們就得到一個簡單的向量(一個一維向量)。但是我們將看到,SNMP在使用這個數(shù)據(jù)類型時,其向量中的每一個元素是一個SEQUENCE(結(jié)構(gòu))。因而可以將它看成為一個二維數(shù)組或表。
總結(jié)
以上是生活随笔為你收集整理的SNMP:简单网络管理协议(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu五笔输入法安装_打造最强Wi
- 下一篇: HMM,MEMM,CRF模型的比较