SNMP協(xié)議數(shù)據(jù)的報文結(jié)構(gòu)
SNMP協(xié)議數(shù)據(jù)在協(xié)議的***個版本中就規(guī)定了5中,以及它的報文格式和一些管理進程等,都有明確的規(guī)定。那么我們接下來就對這部分內(nèi)容詳細闡述一下。首先還是來具體了解一下這5種單元有哪些。
SNMP 1.0規(guī)定了5種SNMP協(xié)議數(shù)據(jù)單元PDU(也就是SNMP報文),用來在管理進程和代理之間的交換。
get-request操作:從代理進程處提取一個或多個參數(shù)值
get-next-request操作:從代理進程處提取緊跟當前參數(shù)值的下一個參數(shù)值
set-request操作:設(shè)置代理進程的一個或多個參數(shù)值
get-response操作:返回的一個或多個參數(shù)值。這個操作是由代理進程發(fā)出的,它是前面三種操作的響應(yīng)操作。
trap操作:代理進程主動發(fā)出的報文,通知管理進程有某些事情發(fā)生。
前面的3種操作是由管理進程向代理進程發(fā)出的,后面的2個操作是代理進程發(fā)給管理進程的,為了簡化起見,前面3個操作今后叫做get、get-next和set操作。圖1描述了SNMP的這5種圖2 SNMP報文格式報文操作。請注意,在代理進程端是用熟知端口161來接收get或set報文,而在管理進程端是用熟知端口162來接收trap報文。
公共SNMP協(xié)議數(shù)據(jù)的報文首部
◆版本
寫入版本字段的是版本號減1,對于SNMP(即SNMPV1)則應(yīng)寫入0。
◆共同體(community)
共同體就是一個字符串,作為管理進程和代理進程之間的明文口令,常用的是6個字符“public"。表1 PDU類型
PDU類型
表1
根據(jù)PDU的類型,填入0~4中的一個數(shù)字,其對應(yīng)關(guān)系如表1所示意圖。#p#
get/set首部
◆請求標識符(request ID)
這是SNMP協(xié)議數(shù)據(jù)由管理進程設(shè)置的一個整數(shù)值。代理進程在發(fā)送get-response報文時也要返回此請求標識符。管理進程可同時向許多代理發(fā)出get報文,這些報文都使用UDP傳送,先發(fā)送的有可能后到達。設(shè)置了請求標識符可使管理進程能夠識別返回的響應(yīng)報文對于哪一個請求報文
表2
◆差錯狀態(tài)(error status)
由代理進程回答時填入0~5中的一個數(shù)字,見表2的描述。
◆差錯索引(error index)
當出現(xiàn)noSuchName、badValue或readOnly的差錯時,由代理進程在回答時設(shè)置的一個整數(shù),它指明有差錯的變量在變量列表中的偏移。#p#
trap首部
◆企業(yè)(enterprise)
填入trap報文的網(wǎng)絡(luò)設(shè)備的對象標識符。此對象標識符肯定是在圖3的對象命名樹上的enterprise結(jié)點{1.3.6.1.4.1}下面的一棵子表3 trap類型樹上。
trap類型
表3
此字段正式的名稱是generic-trap,共分為表3中的7種。
類型2、3、5時,在報文后面變量部分的***個變量應(yīng)標識響應(yīng)的接口。
◆特定代碼(specific-code)
SNMP協(xié)議數(shù)據(jù)指明代理自定義的時間(若trap類型為6),否則為0。
◆時間戳(timestamp)
SNMP協(xié)議數(shù)據(jù)指明自代理進程初始化到trap報告的事件發(fā)生所經(jīng)歷的時間,單位為ms。例如時間戳為1908表明在代理初始化后1908ms發(fā)生了該事件。
◆變量綁定(variable-bindings)指明一個或多個變量的名和對應(yīng)的值。在get或get-next報文中,變量的值應(yīng)忽略。