SNMP規定了5種協議數據單元PDU(也就是SNMP報文),用來在治理進程和代理之間的交換。get-request操作:從代理進程處提取一個或多個參數值get-next-request操作:從代理進程處提取緊跟當前參數值的下一個參數值set-request操作:設置代理進程的一個或多個參數值get-response操作:返回的一個或多個參數值。這個操作是由代理進程發出的,它是前面三種操作的響應操作。trap操作:代理進程主動發出的報文,通知治理進程有某些事情發生。
前面的3種操作是由治理進程向代理進程發出的,后面的2個操作是代理進程發給治理進程的,為了簡化起見,前面3個操作今后叫做get、get-next和set操作。圖4描述了SNMP的這5種報文操作。請注重,在代理進程端是用熟知端口161倆接收get或set報文,而在治理進程端是用熟知端口162來接收trap報文。

圖5是封裝成UDP數據報的5種操作的SNMP報文格式。可見一個SNMP報文共有三個部分組成,即公共SNMP首部、get/set首部trap首部、變量綁定。

(1)公共SNMP首部
共三個字段:
版本
寫入版本字段的是版本號減1,對于SNMP(即SNMPV1)則應寫入0。
共同體(community)
共同體就是一個字符串,作為治理進程和代理進程之間的明文口令,常用的是6個字符“public”。
PDU類型
根據PDU的類型,填入0~4中的一個數字,其對應關系如表2所示意圖。
PDU類型
名稱
0
get-request
1
get-next-request
2
get-response
3
set-request
4
trap
差錯狀態
名字
說明
0
noError
一切正常
1
tooBig
代理無法將回答裝入到一個SNMP報文之中
2
noSUChName
操作指明了一個不存在的變量
3
badValue
一個set操作指明了一個無效值或無效語法
4
readOnly
治理進程試圖修改一個只讀變量
5
genErr
某些其他的差錯
trap類型
名字
說明
0
coldStart
代理進行了初始化
1
warmStart
代理進行了重新初始化
2
linkDown
一個接口從工作狀態變為故障狀態
3
linkUp
一個接口從故障狀態變為工作狀態
4
authenticationFailure
從SNMP治理進程接收到具有一個無效共同體的報文
5
egpNeighborLoss
一個EGP相鄰路由器變為故障狀態
6
enterpriseSpecific
代理自定義的事件,需要用后面的“特定代碼”來指明
當使用上述類型2、3、5時,在報文后面變量部分的第一個變量應標識響應的接口。
特定代碼(specific-code)
指明代理自定義的時間(若trap類型為6),否則為0。
時間戳(timestamp)
指明自代理進程初始化到trap報告的事件發生所經歷的時間,單位為10ms。例如時間戳為1908表明在代理初始化后1908ms發生了該時間。
(4)變量綁定(variable-bindings)
指明一個或多個變量的名和對應的值。在get或get-next報文中,變量的值應忽略。
新聞熱點
疑難解答