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