一種snmp的單片機(jī)實(shí)現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)管理技術(shù)領(lǐng)域,具體涉及一種snmp的單片機(jī)實(shí)現(xiàn)方法。
【背景技術(shù)】
[0002]簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議(SNMP)是基于TCP/IP協(xié)議族的網(wǎng)絡(luò)管理標(biāo)準(zhǔn),是一種在IP網(wǎng)絡(luò)中管理網(wǎng)絡(luò)節(jié)點(diǎn)的標(biāo)準(zhǔn)協(xié)議。SNMP能夠使網(wǎng)絡(luò)管理員提高網(wǎng)絡(luò)管理效能,及時(shí)發(fā)現(xiàn)并解決網(wǎng)絡(luò)問(wèn)題以及規(guī)劃網(wǎng)絡(luò)的增長(zhǎng)。網(wǎng)絡(luò)管理員還可以通過(guò)SNMP接收網(wǎng)絡(luò)節(jié)點(diǎn)的通知消息以及告警事件報(bào)告等來(lái)獲知網(wǎng)絡(luò)出現(xiàn)的問(wèn)題。
[0003]SNMP 通過(guò)定義 get-request、get-next-request、set-request、get-response 和trap五種操作來(lái)實(shí)現(xiàn)管理進(jìn)程和代理進(jìn)程之間的信息交互。在網(wǎng)絡(luò)正常工作的情況下,SNMP可實(shí)現(xiàn)統(tǒng)計(jì)、配置和測(cè)試等功能;而在網(wǎng)絡(luò)出現(xiàn)故障的情況下,可實(shí)現(xiàn)各種差錯(cuò)檢測(cè)和恢復(fù)功能。
【發(fā)明內(nèi)容】
[0004]本發(fā)明要解決的技術(shù)問(wèn)題是:本發(fā)明基于SNMP所定義的5種操作,利用單片機(jī)來(lái)實(shí)現(xiàn)數(shù)據(jù)的組包、發(fā)送、接收和解包功能。使用單片機(jī)做SNMP數(shù)據(jù)處理,通過(guò)擴(kuò)展外部RAM完成數(shù)據(jù)的組包、發(fā)送、接收和解包。
[0005]本發(fā)明所采用的技術(shù)方案為:
一種snmp的單片機(jī)實(shí)現(xiàn)方法,對(duì)象標(biāo)識(shí)符OID自頂部開(kāi)始以點(diǎn)分隔,所有的MIB變量都從1.3.6.1.2.1標(biāo)識(shí)開(kāi)始;組包算法將OID和要傳送的值value轉(zhuǎn)換成TLV形式進(jìn)行發(fā)送;組包從低地址到高地址,發(fā)送時(shí)從高地址向低地址進(jìn)行;其中,在TLV形式中,T為數(shù)據(jù)類型,L為數(shù)據(jù)V轉(zhuǎn)換后所占的字節(jié)數(shù),V為數(shù)據(jù)值;在數(shù)據(jù)接收端,解包算法將OID和值分離出來(lái),解包時(shí)先判斷同步位、地址和CRC校驗(yàn)是否正確,然后根據(jù)長(zhǎng)度從前向后按照SNMP數(shù)據(jù)格式進(jìn)行分析,并且給相應(yīng)的變量值賦值。
[0006]所述方法具體實(shí)現(xiàn)步驟如下:
1)在組包算法中首先進(jìn)行數(shù)據(jù)長(zhǎng)度轉(zhuǎn)換,長(zhǎng)度表示將數(shù)據(jù)轉(zhuǎn)化為TLV形式后V所占的字節(jié)數(shù),若該值小于128,則用一個(gè)字節(jié)來(lái)表示長(zhǎng)度,如果長(zhǎng)度大于等于128則需要用多個(gè)字節(jié)來(lái)表示長(zhǎng)度;其中第一個(gè)字節(jié)首位置1,后面7位表示數(shù)據(jù)所需字節(jié)數(shù),隨后的字節(jié)表示數(shù)據(jù)的實(shí)際長(zhǎng)度;
2)系統(tǒng)中所傳遞的值都以字符形式傳送,在響應(yīng)時(shí)直接發(fā)送04H字符類型,OlH長(zhǎng)度一個(gè)字節(jié),再將要發(fā)送的值直接發(fā)送;
3)對(duì)變量綁定部分加上公共SNMP首部和get/set首部,組成SNMP層,在沒(méi)有差錯(cuò)的情況下,只需一邊移動(dòng)指針,一邊將相應(yīng)的變量值賦給指針?biāo)傅牡刂分校缓髮NMP放入MAC層中,進(jìn)行CRC校驗(yàn)值的計(jì)算,向上位機(jī)發(fā)送;
4)解包算法將OID和值分離出來(lái),解包時(shí)先判斷同步位、地址和CRC校驗(yàn)是否正確,然后根據(jù)長(zhǎng)度從前向后按照SNMP數(shù)據(jù)格式進(jìn)行分析,并且給相應(yīng)的變量值賦值。
[0007]所述SNMP的報(bào)文格式包括:版本、共同體、PDU類型、請(qǐng)求標(biāo)識(shí)符、差錯(cuò)狀態(tài)、差錯(cuò)索引,其中:
版本字段寫入所用SNMP的版本-1 ;
共同體是管理進(jìn)程和代理進(jìn)程之間的明文口令;
PDU字段根據(jù)rou的類型,填入O?4中的一個(gè)數(shù)字;
請(qǐng)求標(biāo)識(shí)符是由管理進(jìn)程設(shè)置的一個(gè)整數(shù)值,代理進(jìn)程在發(fā)送get-response報(bào)文時(shí)也要返回此請(qǐng)求標(biāo)識(shí)符;
差錯(cuò)狀態(tài)是由代理進(jìn)程回答時(shí)填入對(duì)應(yīng)狀態(tài)O?5中的一個(gè)數(shù)字;
差錯(cuò)索引字段是一個(gè)整數(shù)偏移量,指明當(dāng)有差錯(cuò)發(fā)生時(shí),差錯(cuò)發(fā)生在哪個(gè)參數(shù)。
[0008]本發(fā)明的有益效果為:
本發(fā)明基于SNMP所定義的5種操作,利用單片機(jī)來(lái)實(shí)現(xiàn)數(shù)據(jù)的組包、發(fā)送、接收和解包功能,使網(wǎng)絡(luò)管理員提高網(wǎng)絡(luò)管理效能,及時(shí)發(fā)現(xiàn)并解決網(wǎng)絡(luò)問(wèn)題以及規(guī)劃網(wǎng)絡(luò)的增長(zhǎng),還可以通過(guò)SNMP接收網(wǎng)絡(luò)節(jié)點(diǎn)的通知消息以及告警事件報(bào)告等來(lái)獲知網(wǎng)絡(luò)出現(xiàn)的問(wèn)題。
【附圖說(shuō)明】
[0009]圖1為SNMP報(bào)文格式示意圖;
圖2為系統(tǒng)實(shí)現(xiàn)流程圖;
圖3為解包算法流程圖。
【具體實(shí)施方式】
[0010]下面參照附圖所示,通過(guò)【具體實(shí)施方式】對(duì)本發(fā)明進(jìn)一步說(shuō)明:
實(shí)施例1:
一種snmp的單片機(jī)實(shí)現(xiàn)方法,對(duì)象標(biāo)識(shí)符OID自頂部開(kāi)始以點(diǎn)分隔,所有的MIB變量都從1.3.6.1.2.1標(biāo)識(shí)開(kāi)始;組包算法將OID和要傳送的值value轉(zhuǎn)換成TLV形式進(jìn)行發(fā)送;組包從低地址到高地址,發(fā)送時(shí)從高地址向低地址進(jìn)行;其中,在TLV形式中,T為數(shù)據(jù)類型,L為數(shù)據(jù)V轉(zhuǎn)換后所占的字節(jié)數(shù),V為數(shù)據(jù)值;在數(shù)據(jù)接收端,解包算法將OID和值分離出來(lái),解包時(shí)先判斷同步位、地址和CRC校驗(yàn)是否正確,然后根據(jù)長(zhǎng)度從前向后按照SNMP數(shù)據(jù)格式進(jìn)行分析,并且給相應(yīng)的變量值賦值。
[0011]實(shí)施例2:
如圖2所示,在實(shí)施例1的基礎(chǔ)上,本實(shí)施例所述方法具體實(shí)現(xiàn)步驟如下:
1)在組包算法中首先進(jìn)行數(shù)據(jù)長(zhǎng)度轉(zhuǎn)換,長(zhǎng)度表示將數(shù)據(jù)轉(zhuǎn)化為TLV形式后V所占的字節(jié)數(shù),若該值小于128,則用一個(gè)字節(jié)來(lái)表示長(zhǎng)度,如果長(zhǎng)度大于等于128則需要用多個(gè)字節(jié)來(lái)表示長(zhǎng)度;其中第一個(gè)字節(jié)首位置1,后面7位表示數(shù)據(jù)所需字節(jié)數(shù),隨后的字節(jié)表示數(shù)據(jù)的實(shí)際長(zhǎng)度;
2)系統(tǒng)中所傳遞的值都以字符形式傳送,在響應(yīng)時(shí)直接發(fā)送04H字符類型,OlH長(zhǎng)度一個(gè)字節(jié),再將要發(fā)送的值直接發(fā)送;
3)對(duì)變量綁定部分加上公共SNMP首部和get/set首部,組成SNMP層,在沒(méi)有差錯(cuò)的情況下,只需一邊移動(dòng)指針,一邊將相應(yīng)的變量值賦給指針?biāo)傅牡刂分校缓髮NMP放入MAC層中,進(jìn)行CRC校驗(yàn)值的計(jì)算,向上位機(jī)發(fā)送; 4)解包算法將OID和值分離出來(lái),解包時(shí)先判斷同步位、地址和CRC校驗(yàn)是否正確,然后根據(jù)長(zhǎng)度從前向后按照SNMP數(shù)據(jù)格式進(jìn)行分析,并且給相應(yīng)的變量值賦值,解包的整個(gè)過(guò)程如圖3所示。
[0012]實(shí)施例3:
如圖1所示,在實(shí)施例1或2的基礎(chǔ)上,本實(shí)施例所述SNMP的報(bào)文格式包括:版本、共同體、PDU類型、請(qǐng)求標(biāo)識(shí)符、差錯(cuò)狀態(tài)、差錯(cuò)索引,其中:
版本字段寫入所用SNMP的版本-1,即對(duì)于SNMPvl,則需填入O值;
共同體是管理進(jìn)程和代理進(jìn)程之間的明文口令,通常寫入“public”;
PDU字段根據(jù)rou的類型,填入O?4中的一個(gè)數(shù)字;
請(qǐng)求標(biāo)識(shí)符是由管理進(jìn)程設(shè)置的一個(gè)整數(shù)值,代理進(jìn)程在發(fā)送get-response報(bào)文時(shí)也要返回此請(qǐng)求標(biāo)識(shí)符;
差錯(cuò)狀態(tài)是由代理進(jìn)程回答時(shí)填入對(duì)應(yīng)狀態(tài)O?5中的一個(gè)數(shù)字;
差錯(cuò)索引字段是一個(gè)整數(shù)偏移量,指明當(dāng)有差錯(cuò)發(fā)生時(shí),差錯(cuò)發(fā)生在哪個(gè)參數(shù)。
[0013]以上實(shí)施方式僅用于說(shuō)明本發(fā)明,而并非對(duì)本發(fā)明的限制,有關(guān)技術(shù)領(lǐng)域的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術(shù)方案也屬于本發(fā)明的范疇,本發(fā)明的專利保護(hù)范圍應(yīng)由權(quán)利要求限定。
【主權(quán)項(xiàng)】
1.一種snmp的單片機(jī)實(shí)現(xiàn)方法,其特征在于:對(duì)象標(biāo)識(shí)符OID自頂部開(kāi)始以點(diǎn)分隔,所有的MIB變量都從1.3.6.1.2.1標(biāo)識(shí)開(kāi)始;組包算法將OID和要傳送的值value轉(zhuǎn)換成TLV形式進(jìn)行發(fā)送;組包從低地址到高地址,發(fā)送時(shí)從高地址向低地址進(jìn)行;在數(shù)據(jù)接收端,解包算法將OID和值分離出來(lái),解包時(shí)先判斷同步位、地址和CRC校驗(yàn)是否正確,然后根據(jù)長(zhǎng)度從前向后按照SNMP數(shù)據(jù)格式進(jìn)行分析,并且給相應(yīng)的變量值賦值。2.根據(jù)權(quán)利要求1所述的一種snmp的單片機(jī)實(shí)現(xiàn)方法,其特征在于,所述方法具體實(shí)現(xiàn)步驟如下: 1)在組包算法中首先進(jìn)行數(shù)據(jù)長(zhǎng)度轉(zhuǎn)換,長(zhǎng)度若小于128,則用一個(gè)字節(jié)來(lái)表示長(zhǎng)度,如果長(zhǎng)度大于等于128則需要用多個(gè)字節(jié)來(lái)表示長(zhǎng)度;其中第一個(gè)字節(jié)首位置1,后面7位表示數(shù)據(jù)所需字節(jié)數(shù),隨后的字節(jié)表示數(shù)據(jù)的實(shí)際長(zhǎng)度; 2)系統(tǒng)中所傳遞的值都以字符形式傳送,在響應(yīng)時(shí)直接發(fā)送04H字符類型,OlH長(zhǎng)度一個(gè)字節(jié),再將要發(fā)送的值直接發(fā)送; 3)對(duì)變量綁定部分加上公共SNMP首部和get/set首部,組成SNMP層,在沒(méi)有差錯(cuò)的情況下,只需一邊移動(dòng)指針,一邊將相應(yīng)的變量值賦給指針?biāo)傅牡刂分校缓髮NMP放入MAC層中,進(jìn)行CRC校驗(yàn)值的計(jì)算,向上位機(jī)發(fā)送; 4)解包算法將OID和值分離出來(lái),解包時(shí)先判斷同步位、地址和CRC校驗(yàn)是否正確,然后根據(jù)長(zhǎng)度從前向后按照SNMP數(shù)據(jù)格式進(jìn)行分析,并且給相應(yīng)的變量值賦值。3.根據(jù)權(quán)利要求1或2所述的一種snmp的單片機(jī)實(shí)現(xiàn)方法,其特征在于:所述SNMP的報(bào)文格式包括:版本、共同體、PDU類型、請(qǐng)求標(biāo)識(shí)符、差錯(cuò)狀態(tài)、差錯(cuò)索引,其中: 版本字段寫入所用SNMP的版本-1 ; 共同體是管理進(jìn)程和代理進(jìn)程之間的明文口令; PDU字段根據(jù)rou的類型,填入O?4中的一個(gè)數(shù)字; 請(qǐng)求標(biāo)識(shí)符是由管理進(jìn)程設(shè)置的一個(gè)整數(shù)值,代理進(jìn)程在發(fā)送get-response報(bào)文時(shí)也要返回此請(qǐng)求標(biāo)識(shí)符; 差錯(cuò)狀態(tài)是由代理進(jìn)程回答時(shí)填入對(duì)應(yīng)狀態(tài)O?5中的一個(gè)數(shù)字; 差錯(cuò)索引字段是一個(gè)整數(shù)偏移量,指明當(dāng)有差錯(cuò)發(fā)生時(shí),差錯(cuò)發(fā)生在哪個(gè)參數(shù)。
【專利摘要】本發(fā)明公開(kāi)了一種snmp的單片機(jī)實(shí)現(xiàn)方法,對(duì)象標(biāo)識(shí)符OID自頂部開(kāi)始以點(diǎn)分隔,所有的MIB變量都從1.3.6.1.2.1標(biāo)識(shí)開(kāi)始;組包算法將OID和要傳送的值value轉(zhuǎn)換成TLV形式進(jìn)行發(fā)送;組包從低地址到高地址,發(fā)送時(shí)從高地址向低地址進(jìn)行;在數(shù)據(jù)接收端,解包算法將OID和值分離出來(lái),解包時(shí)先判斷同步位、地址和CRC校驗(yàn)是否正確,然后根據(jù)長(zhǎng)度從前向后按照SNMP數(shù)據(jù)格式進(jìn)行分析,并且給相應(yīng)的變量值賦值。本發(fā)明利用單片機(jī)來(lái)實(shí)現(xiàn)數(shù)據(jù)的組包、發(fā)送、接收和解包功能,使網(wǎng)絡(luò)管理員提高網(wǎng)絡(luò)管理效能,及時(shí)發(fā)現(xiàn)并解決網(wǎng)絡(luò)問(wèn)題以及規(guī)劃網(wǎng)絡(luò)的增長(zhǎng),還可以通過(guò)SNMP接收網(wǎng)絡(luò)節(jié)點(diǎn)的通知消息以及告警事件報(bào)告等來(lái)獲知網(wǎng)絡(luò)出現(xiàn)的問(wèn)題。
【IPC分類】H04L12/24
【公開(kāi)號(hào)】CN105162615
【申請(qǐng)?zhí)枴緾N201510426439
【發(fā)明人】馬曉光, 吳登勇, 陳乃闊
【申請(qǐng)人】山東超越數(shù)控電子有限公司
【公開(kāi)日】2015年12月16日
【申請(qǐng)日】2015年7月20日