SNMP協(xié)議是軟考中的常見(jiàn)知識(shí)點(diǎn),本文并沒(méi)有對(duì)該協(xié)議進(jìn)行更加深入的剖析,只是希望通過(guò)本文能夠幫助大家理解以上三道題。
題1:Windows中標(biāo)準(zhǔn)的SNMP Service和SNMP Trap分別使用的默認(rèn)UDP端口是 ( ) 。
A.25和26
B.160和161
C.161和162
D.161和160
題2:SNMP是一種異步請(qǐng)求/響應(yīng)協(xié)議,采用( )進(jìn)行封裝。
A.IP
B.ICMP
C.TCP
D.UDP
題3:在TCP/IP協(xié)議分層結(jié)構(gòu)中,SNMP是在UDP協(xié)議之上的 ( ) 請(qǐng)求/響應(yīng)協(xié)議
A.異步
B.同步
C.主從
D.面向連接
一、SNMP協(xié)議來(lái)歷
對(duì)于園區(qū)網(wǎng)絡(luò)來(lái)說(shuō),穩(wěn)定性與可靠性最為重要。然而,隨著信息化的發(fā)展,網(wǎng)絡(luò)規(guī)模及系統(tǒng)結(jié)構(gòu)越發(fā)復(fù)雜,各類故障隨之而來(lái)。為了提升網(wǎng)絡(luò)自診斷能力,實(shí)現(xiàn)故障快速診斷與恢復(fù),IETF于1990年提出了SNMP協(xié)議(簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議),并獲得了眾多網(wǎng)絡(luò)設(shè)備廠家的大力支持,因此發(fā)展為了因特網(wǎng)正式標(biāo)準(zhǔn)。目前,支持SNMP協(xié)議已經(jīng)成為網(wǎng)絡(luò)硬件設(shè)備的標(biāo)準(zhǔn)配置,市面上大部分網(wǎng)絡(luò)監(jiān)測(cè)系統(tǒng),均以SNMP協(xié)議為基礎(chǔ),采集各類數(shù)據(jù)信息,進(jìn)行協(xié)調(diào)梳理、整理美化,形成了對(duì)網(wǎng)絡(luò)的管理。
二、SNMP協(xié)議概述
1. SNMP協(xié)議組成
SNMP協(xié)議由管理端(manager)和被管理端(Agent)組成。
- 管理端通過(guò)UDP 161端口向被管理端發(fā)送SNMP報(bào)文,等待被管理端的應(yīng)答,并對(duì)收集的各類報(bào)文信息進(jìn)行處理。
- 被管理端運(yùn)行在各個(gè)網(wǎng)絡(luò)硬件設(shè)備上,接收并執(zhí)行收到的SNMP報(bào)文,統(tǒng)計(jì)相關(guān)信息,并與管理端進(jìn)行交互。同時(shí),被管理端還能夠主動(dòng)通過(guò)UDP 162端口向管理端發(fā)送Trap警告命令。
相關(guān)協(xié)議結(jié)構(gòu)如圖所示。

2. SNMP報(bào)文
一條SNMP報(bào)文由“Version Identifier”、“Community”和“Protocol Data Unit”構(gòu)成。
(1)Version Identifier用于校驗(yàn)SNMP協(xié)議的版本。SNMP協(xié)議目前有v1、v2、v3三個(gè)版本,交互信息必須確保版本相同。
(2)Community又叫團(tuán)體字,是基本的安全機(jī)制,用于身份驗(yàn)證。在SNMP協(xié)議中,為保證協(xié)議通暢,大多數(shù)時(shí)候采用默認(rèn)的團(tuán)體字,即“public”。
(3)PDU是SNMP協(xié)議消息的數(shù)據(jù)區(qū),主要是SNMP協(xié)議的命令與相關(guān)參數(shù)。
3. SNMP命令
SNMP協(xié)議有兩種基本操作命令,分別是SNMP基本命令和Trap命令。
基本命令包括Get-Request、Get-Response、Get-Next-Request、Set-Request等,其功能如下:
- Get-Request:SNMP管理端為了獲取相關(guān)信息向被管理端發(fā)送的命令,使用UDP 161作為目的端口。
- Get-Response:管理端接收到Get-Request信息后,向管理端返回Get-Response應(yīng)答信息,使用UDP 161作為源端口。
- Get-Next-Request:管理端收到Get-Response應(yīng)答,想要得到下一個(gè)項(xiàng)目時(shí),繼續(xù)向被管理端發(fā)送Get-Next-Request命令,使用UDP 161作為目的端口。被管理端同樣通過(guò)Get-Response回復(fù)信息。
- Set-Request:當(dāng)管理端想要更改通信設(shè)備的設(shè)置時(shí),會(huì)向SNMP被管理者發(fā)送Set-Request命令,使用UDP 161作為目的端口。被管理端同樣通過(guò)Get-Response回復(fù)信息。
Trap報(bào)文是警示報(bào)文,當(dāng)發(fā)生網(wǎng)絡(luò)或設(shè)備異常時(shí),由被管理端主動(dòng)向管理端發(fā)送的UDP 162作為目的端口的Trap命令。具體如圖所示。

這里進(jìn)一步解釋為什么SNMP會(huì)選用UDP協(xié)議。這是因?yàn)門CP協(xié)議需要建立連接才能完成通信,如果SNMP使用TCP協(xié)議,那么一方面網(wǎng)絡(luò)中大量的設(shè)備將形成海量的數(shù)據(jù)連接,另一方面也不適合即時(shí)發(fā)送Trap警示命令下的緊急通信情況。而UDP無(wú)需建立連接,可以隨時(shí)發(fā)送數(shù)據(jù),非常符合SNMP的應(yīng)用需求。這也導(dǎo)致SNMP沒(méi)有進(jìn)行時(shí)間同步,屬于異步請(qǐng)求/響應(yīng)協(xié)議。
4. MIB管理信息庫(kù)
那么SNMP管理端和被管理端之間通過(guò)命令進(jìn)行交互的數(shù)據(jù)信息到底是什么呢?它們就是MIB管理信息庫(kù)。網(wǎng)絡(luò)硬件中使用很多類型的配置參數(shù)來(lái)完成對(duì)設(shè)備的管理,如接口和協(xié)議的設(shè)置信息等,在SNMP中,這類信息通過(guò)MIB這個(gè)數(shù)據(jù)庫(kù)進(jìn)行管理。MIB采用樹(shù)形結(jié)構(gòu),其中的信息來(lái)自設(shè)備制造廠商的相關(guān)文件。示意圖如下。

三、SNMP管理端
有很多SNMP管理端相關(guān)的軟件,比如華為的esight、UNIX的SNMP的snmpd、思科公司的Ciscoworks等,這些都可以收集、整理、分析各類被管理端的SNMP數(shù)據(jù)。管理端和被管理端無(wú)需在廠商、品牌、版本等方面相同,只需要都支持SNMP協(xié)議即可,因此并不是主從關(guān)系。