Board logo

標題: SNMP 程式分析 [打印本頁]

作者: admin    時間: 2010-8-21 00:15     標題: SNMP 程式分析

對有心研究 SNMP 及開發 SNMP 軟件的工程師,以下文章將對你有所啟發,如果你是準 IT 大學生,採用以下資料編寫一個像樣的SNMP軟件作為畢業論文及項目,也是一個不錯的選擇。

本人對 OID 的了解仍有所不足,在這裡拋磚引玉,希望同行能多指教及在這論壇補充。

要編寫程式,可採用 Borland 的 C++ builder,裡面有 UDP 工具包,讓你專心把 OID 實際內容填入發放及分析收到的 OID 數據。

現在開始進入話題~~~~

Orinoco 的 AP Manager (已是十年前的產品),它是我第一個遇到以 SNMP 為基礎開發的AP管理軟件,也是令我對SNMP 程式感到興趣的軟件,我大約花了數個月時間對 MIB 中的 OID 進行研究,當時Ethereal 軟件還未推出(也有可能我未有注意此軟件存在),亦無錢購買昂貴的數據包分析軟件,只是利用 Window NT 的 Network Monitor 去分析數據包,最後我可以獨力去編寫一個與 Orinoco AP Manager 一樣的軟件,由於現時筆者己沒有時間去編寫這類軟件,故把心得與大家分享,這總比這些資料永遠收藏於硬盤的某堆sectors 更有意義。

AP Manager 對 AP 的管理
(1) 每當 AP 啟動時,它個連續發三個 IP broadcast (參考下圖之1),當AP收到 IP broadcast,它會向發出 IP broadcast 的電腦以UDP 型式回傳有關資料,包括 (參考下圖之2的內容)
a. MAC address = 00 60 ID F4 B5 10
b. IP address = C0 A8 00 4D (192.168.0.77)
c. wave network name = WavePOINT-II_00UT01206364 (在AP 上顯示的內容)
d. AP property = WavePOINT-II V3.64 SN-00UT28201 (在 Access Point -> Access Point Properties)




(2) 在 capture 的資料中發現 NT 利用已知的 IPaddress 去發出 ARP-RARP 信令(參考SNMP1.bmp之3及4)去找到所有AP的 MAC address,我相信這是 NT自己的動作,AP Manager 本身並沒有進行這個動作,要証實這一點,只要把 capture 資料清除,關掉AP Manager 再啟動,在 capture 的資料並沒有再發現 ARP-RARP,跟著把 NT關掉,重新啟動,再執行AP Manager ,你便會發現ARP-RARP又再出現。

(3) AP Manager 會利用己知AP 的 IP Address 去不斷 ping 各 AP (你會見到AP的LED黃橙不斷閃動),如失敗,AP Manager 會在該 AP 的Status 一欄顯示 Offline ,要證明這點,你只要把連到AP 的網絡線暫時離開,你會發現 AP Manager 發出 ICMP request 後並沒有收到 ICMP echo。

(4) 當你執行 Access Point -> Refresh Access Point List ,AP Manager 會再發出三個 IP broadcast,從這一點,表示若網絡上突然加入一個新的AP,如AP Manager 沒有執行Access Point -> Refresh Access Point List ,此新加入的AP並不會顯示在AP Manager 上。

SNMP 編碼方法
定義
(1) SNMP agent (SNMP 代理者)- 這是放在終端機的一個小程式,它能讀取及改變終端機的參數,而 SNMP Manager管理者 (如 AP Manager 是經過這agnet 去讀取及改變終端機的參數
(2) MIB - 這是對不同設備參數的定義方法
(3) ASN.1 - 這是對SMNP 內容的編碼方法,(這個是最難理解的一部份,我經過對實際數據分析才明白其編碼方法)
(4) RFC - 這是對SNMP 的定義的建議文獻,有很多,主要的有 RFC1255, RFC1157, RFC1089, RFC 1906, RFC1212, RFC1213 等,(很悶!但非常重要)


SNMP 管理者與SNMP 代理者的協定
共有四種不同動作
(1) SNMP 管理者 --> SNMP 代理者:  get-request 要求資料
    SNMP 代理者 --> SNMP 管理者:  get-response 提供資料
(2) SNMP 管理者 --> SNMP 代理者:  get-next-request 要求下一個資料
    SNMP 代理者 --> SNMP 管理者:  get-response 提供資料
(3) SNMP 管理者 --> SNMP 代理者:  set-request 改變資料
    SNMP 代理者 --> SNMP 管理者:  get-response 提供改變資料(以作肯定)
(4) SNMP 代理者 --> SNMP 管理者:  trap (一些錯誤的資料顯示)


更多隱藏內容.........
本帖隱藏的內容需要回復才可以瀏覽

作者: tempnm    時間: 2011-10-27 20:17

很有參考價值
研究研究




歡迎光臨 How2Do (http://forum.how2do.com.hk/) Powered by Discuz! 7.2