第25章 SNMP: 簡單網絡管理協定
25.10 Trap
本章我們看到的例子都是從管理程序到代理程序的。當然代理程序也可以主動發送 t r a p到管理程序,以告訴管理程序在代理程序側有某些管理程序所關心的事件發生,如圖 2 5 - 1所示。t r a p發送到管理程序的1 6 2号端口。
在圖2 5 - 2中,我們已經描述了 trap PDU的格式。在下面關于 t c p d u m p輸出内容中我們将再一次用到這些字段。
現在已經定義了 6種特定的t r a p類型,第7種t r a p類型是由供應商自己定義的特定類型。圖2 5 - 3 0給出了t r a p封包中t r a p類型字段的内容。
用t c p d u m p指令來看看t r a p的情況。我們在系統s u n上啟動S N M P代理程序,然後讓它産生c o l d S t a r t類型的t r a p(我們告訴代理程序把t r a p資訊發送到b s d i主機。雖然在該主機上并沒有運作處理t r a p的管理程序,但是可以用t c p d u m p來檢視産生了什麼樣的分組。回憶一下在圖2 5 - 1中,t r a p是從代理程序發送到管理程序的,而管理程序不需要給代理程序發送确認。是以我們不需要t r a p的處理程式)。然後我們用s n m p i程式發送一個請求,但該請求的共同體名稱是無效的。
這将産生一個a u t h e n t i c a t i o n F a i l u r e類型的t r a p。圖2 5 - 3 1顯示了指令的輸出結果。
首先注意一下兩個 U D P資料報都是從 S N M P代理程序(端口是 1 6 1,圖中顯示的名稱是s n m p)發送到目的端口号是1 6 2的伺服器程序上的(圖中顯示的名稱是 s n m p - t r a p)。
再注意一下C = t r a p s是t r a p封包的共同體名稱。這是ISODE SNMP代理程序的配置選項。下一個要注意的是:第1行中的Tr a p(2 8)和第2行中的Tr a p(2 9)是P D U類型和長度。
兩個輸出行的第一項内容都是相同的 E : u n i x . 1 . 2 . 5。這代表企業名字段和代理程序的s y s O b j i e c t I D。它是圖 2 5 - 6中1 . 3 . 6 . 1 . 4 . 1(i s o . o r g . d o d . i n t e r n e t . p r i v a t e .e n t e r p a r s e s)結點下面的某個結點,是以代理程序的對象辨別是1 . 3 . 6 . 1 . 4 . 1 . 4 . 1 . 2 . 5。它的簡稱是:u n i x . a g e n t s . f o u r B S D - i s o d e . 5。最後一個數字“5”代表I S O D E代理程序軟體的版本号。
這些企業名的值代表了産生t r a p的代理程序軟體資訊。輸出的下一項是代理程序的 I P位址(1 4 0 . 2 5 2 . 1 3 . 3 3)。在第1行中,t r a p的類型顯示的是c o l d S t a r t,第2行中,顯示的是a u t h e n t i c a t i o n F a i l u r e。與之相對應的t r a p類型值是0和4(如圖2 5 - 3 0所示)。由于這些都不是廠家自定義的t r a p,是以特定代碼必須是0,在圖中沒有顯示。
輸出的最後分别是2 0和1 9 0 7,這是時間戳字段。它是 T i m e T i c k s類型的值,表示從代理程序初始化開始到 t r a p發生所經曆了多少個百分之一秒。在冷啟動 t r a p的情況下,在代理程序初始化後到t r a p的産生共經曆了200 ms。同樣,t c p d u m p的輸出表明第2個t r a p在第1個t r a p産生的1 8 . 8 6 s後出現,這對應于列印出的 1 9 0 7個百分之一秒減去200 ms所得到的值。
圖2 5 - 2表明t r a p封包還包含很多代理程序發送給管理程序的變量,但在這些在例子中沒有再讨論。