SNMP協議詳解
一套完整的SNMP系統主要包括管理資訊庫(MIB)、管理資訊結構(SMI)及SNMP報文協議。
(1)管理資訊庫MIB:任何一個被管理的資源都表示成一個物件,稱為被管理的物件。MIB是被管理物件的集合。它定義了被管理物件的一系列屬性:物件的名稱、物件的訪問許可權和物件的資料型別等。每個SNMP裝置(Agent)都有自己的MIB。MIB也可以看作是NMS(網管系統)和Agent之間的溝通橋樑。它們之間的關係如圖1所示。
圖1 NMS Agent和MIB的關係
MIB檔案中的變數使用的名字取自ISO和ITU管理的物件識別符號(object identifier)名字空間。它是一種分級樹的結構。如圖2所示,第一級有三個節點:ccitt、iso、iso-ccitt。低階的物件ID分別由相關組織分配。一個特定物件的識別符號可通過由根到該物件的路徑獲得。一般網路裝置取iso節點下的物件內容。如名字空間ip結點下一個名字為ipInReceives的MIB變數被指派數字值3,因而該變數的名字為:
iso.org.dod.internet.mgmt.mib.ip.ipInReceives
相應的數字表示(物件識別符號OID,唯一標識一個MIB物件)為:
1.3.6.1.2.1.4.3
圖2 MIB樹結構
當網路管理協議在報文中使用MIB變數時,每個變數名後還要加一個字尾,以作為該變數的一個例項。如ipInReceives的例項數字表示為:1.3.6.1.2.1.4.3.0.
需要注意的是,MIB中的管理物件的OID有些需要動態確定,如IP路由表,為了指明地址202.120.86.71的下一站路由(next hop),我們可以引用這樣的例項:
iso.org.dod.internet.mgmt.mib.ip. ipRouteTable.ipRouteEntry.ipRouteNextHop.202.120.86.71, 相應的數字表示為:1.3.6.1.2.1.4.21.1.7.202.120.86.71
對於這種動態物件標識的例項,由於無法轉換為預先指定的Readkey名稱,與飛鄰的產品架構衝突(需要動態生成可變Readkey),暫不考慮支援。
(2)管理資訊結構(SMI)
SMI定義了SNMP框架所用資訊的組織、組成和標識,它還為描述MIB物件和描述協議怎樣交換資訊奠定了基礎。
SMI定義的資料型別:
◆ 簡單型別(simple)
Integer:整型是-2,147,483,648~2,147,483,647的有符號整數
octet string: 字串是0~65535個位元組的有序序列
OBJECT IDENTIFIER: 來自按照ASN.1規則分配的物件識別符號集
◆ 簡單結構型別(simple-constructed)
SEQUENCE 用於列表。這一資料型別與大多數程式設計語言中的“structure”類似。一個SEQUENCE包括0個或更多元素,每一個元素又是另一個ASN.1資料型別
SEQUENCE OF type 用於表格。這一資料型別與大多數程式設計語言中的“array”類似。一個表格包括0個或更多元素,每一個元素又是另一個ASN.1資料型別。
◆ 應用型別(application-wide)
IpAddress: 以網路序表示的IP地址。因為它是一個32位的值,所以定義為4個位元組;
counter:計數器是一個非負的整數,它遞增至最大值,而後回零。在SNMPv1中定義的計數器是32位的,即最大值為4,294,967,295;
Gauge :也是一個非負整數,它可以遞增或遞減,但達到最大值時保持在最大值,最大值為232-1;
time ticks:是一個時間單位,表示以0.01秒為單位計算的時間;
(3)SNMP報文協議
SNMP定義了以下五種操作:
1. get-request 從一個指明的變數讀取值
2. set-request 將一個值存到一個指明的變數中
3. get-next-request 遍歷表格變數的值
4. get-response 對一個讀取操作的回答
5. trap 由一個事件觸發的回答
本設計相關的操作包括1/3/4.
一個SNMP報文由三個主要部分組成:一個協議版本(version),一個SNMP共同體(community)識別符號,和一個資料區。資料區分成若干個協議資料單元PDU(Protocol Data Unit),每個PDU包括一個請求(由管理系統傳送)或一個響應(由管理代理髮送)。
· PDU Type:指明PDU型別(GetRequest、GetNextRequest、SetRequest、Trap);
· Request ID:SNMP請求標識;
· Error Status:表示錯誤和錯誤型別,只有響應操作才設定該欄位,其他操作將該欄位設為0;
· Error Index:錯誤索引號,與特定物件例項的錯誤相關,只有響應操作才設定該欄位,其他操作將該欄位設為0;
· Variable Bindings:SNMPv1 PDU的資料欄位,攜帶特定物件例項的當前值(Get and GetNext請求的該欄位被忽略,因為無須攜帶值)。
相關文章
- FTP協議詳解FTP協議
- raft協議詳解Raft協議
- TCP協議詳解TCP協議
- Kraft協議詳解Raft協議
- VxLAN協議詳解協議
- HTTPS協議詳解HTTP協議
- Gossip 協議詳解Go協議
- USB協議詳解協議
- SPI協議詳解協議
- HTTP協議詳解HTTP協議
- QUIC協議詳解UI協議
- WebSocket 協議詳解Web協議
- UDP協議詳解UDP協議
- 簡單網路管理協議SNMP(史上最全)協議
- http協議/cookie詳解/session詳解HTTP協議CookieSession
- 網路通訊協議-ICMP協議詳解!協議
- 網路通訊協議-TCP協議詳解!協議TCP
- 網路通訊協議-HTTP協議詳解!協議HTTP
- 網路通訊協議-SMTP協議詳解!協議
- 組播協議詳解協議
- HTTP 3協議詳解HTTP協議
- tcp/ip協議和opc協議對比詳解TCP協議
- TCP傳輸協議詳解TCP協議
- IMAP協議之BODYSTRUCTURE詳解協議Struct
- V-By-One協議詳解協議
- python 多型 協議詳解Python多型協議
- OSPF 路由協議詳解(一)路由協議
- MQTT 協議 Keep Alive 詳解MQQT協議
- 網路協議之:socket協議詳解之Datagram Socket協議
- 常見協議埠號對應 + 重要協議詳解協議
- 網路協議之:socket協議詳解之Unix domain Socket協議AI
- WiFi協議技術詳解概述WiFi協議
- 常見開源協議詳解協議
- 詳解Tomcat核心配置、http協議TomcatHTTP協議
- 一文詳解 ARP 協議協議
- 網路協議之:socket協議詳解之Socket和Stream Socket協議
- 詳解前端HTTP協議入門教程前端HTTP協議
- TCP協議粘包問題詳解TCP協議
- 詳解通訊資料協議ProtoBuf協議