两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種實現(xiàn)用戶業(yè)務(wù)遠(yuǎn)程驗證撥號協(xié)議的編碼和解碼方法

文檔序號:7923227閱讀:261來源:國知局
專利名稱:一種實現(xiàn)用戶業(yè)務(wù)遠(yuǎn)程驗證撥號協(xié)議的編碼和解碼方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種網(wǎng)絡(luò)通信協(xié)議的編解碼方法,具體而言,本發(fā)明涉及一種實現(xiàn)用戶業(yè)務(wù)遠(yuǎn)程驗證撥號(Remote Authentication Dial In User Service,以下簡稱為RADIUS)協(xié)議的編碼和解碼方法。
背景技術(shù)
當(dāng)一個網(wǎng)絡(luò)允許外部用戶通過公用網(wǎng)對其進行訪問時,用戶在地理上可以極為分散,大量分散用戶從不同的地方可以對這個網(wǎng)絡(luò)進行隨機的訪問。由于存在內(nèi)外的雙向數(shù)據(jù)流動,網(wǎng)絡(luò)安全成為很重要的問題。安全管理的內(nèi)容包括哪些用戶是否可以獲得訪問權(quán)(即驗證)?獲得訪問權(quán)的用戶可以允許使用哪些服務(wù)(即授權(quán))?如何對使用網(wǎng)絡(luò)資源的用戶進行記費(即記賬)?驗證、授權(quán)和記賬統(tǒng)稱為AAA(Authentication,Authorization and Accounting),其實現(xiàn)可采用RADIUS協(xié)議。
RADIUS業(yè)務(wù)符合圖1所示典型的客戶機/服務(wù)器(client/server)模型。如圖1所示,網(wǎng)絡(luò)接入服務(wù)器(NAS)或路由器上運行的AAA模塊對用戶來講為服務(wù)器端,而對實現(xiàn)RADIUS協(xié)議的RADIUS服務(wù)器來講是客戶端。RADIUS服務(wù)器通過建立一個唯一的用戶數(shù)據(jù)庫存儲用戶名、用戶密碼來進行驗證;存儲傳遞給用戶的服務(wù)類型以及相應(yīng)的配置信息來完成授權(quán)。
以下簡要描述RADIUS協(xié)議。圖2示出了RADIUS報文格式,其中,碼(Code)域為1個八位字節(jié),表示RADIUS報文類型,即服務(wù)類型;標(biāo)識符(Identifier)域亦為一個八位字節(jié),用于匹配請求和應(yīng)答;長度(Length)域為2個八位字節(jié),表示整個報文的長度;驗證符(Authenticator)域為16個八位字節(jié),用于驗證來自RADIUS服務(wù)器的應(yīng)答和密碼隱藏算法;而屬性(Attributes)域的長度是可變的并且包含該RADIUS報文對應(yīng)的服務(wù)類型所需以及任何需要的可選屬性的屬性列表。
在圖1所示RADIUS業(yè)務(wù)的客戶機/服務(wù)器模型中,客戶機和服務(wù)器上的AAA模塊都必須具有處理RADIUS報文的功能,其中包括生成和讀取RADIUS報文的功能。在計算機系統(tǒng)上實現(xiàn)RADIUS協(xié)議實際上就是由處理器執(zhí)行一系列完成RADIUS協(xié)議功能的指令代碼,而構(gòu)造完成生成和讀取RADIUS報文功能的指令代碼的過程在這里分別被稱為RADIUS協(xié)議的編碼和解碼。由上可見,每種類型RADIUS報文中的代碼域、標(biāo)識符域、長度域和驗證符域都具有固定的長度,占據(jù)的存儲空間是不變的,但是屬性域卻因每種RADIUS報文中屬性個數(shù)、種類等的不同而各異。因此,在現(xiàn)有技術(shù)中,由于屬性域差異的存在,不得不為每種類型RADIUS報文的生成和讀取都專門進行編碼和解碼,即生成相應(yīng)的指令代碼段(或函數(shù))。由于每個這樣的函數(shù)都針對特定RADIUS報文的生成或讀取功能,代碼內(nèi)容與所處理報文、屬性種類、屬性個數(shù)以及屬性長度等密切相關(guān),因此報文結(jié)構(gòu)上的任何一點修改都將牽涉到代碼的修改。
RADIUS協(xié)議實際上是一個包含多個RADIUS協(xié)議棧的協(xié)議棧類,其中的每個RADIUS協(xié)議棧除了具備基本的協(xié)議配置以外還可以在實際應(yīng)用中作各種擴展。由上可見,在現(xiàn)有技術(shù)中,編解碼過程與RADIUS協(xié)議結(jié)構(gòu)內(nèi)容沒有分離,報文或者屬性在結(jié)構(gòu)上的任何修改都需要更新編解碼部分的代碼,因此RADIUS協(xié)議棧的實現(xiàn)很不靈活,而且不同RADIUS協(xié)議棧之間兼容困難,經(jīng)常為了支持一個不同擴展的協(xié)議而必須重新編碼和解碼。另外,當(dāng)同時實現(xiàn)服務(wù)器端和客戶機端(此時AAA服務(wù)器作為代理服務(wù)器)時,需要采用兩套不相關(guān)的代碼來實現(xiàn)一套協(xié)議的編解碼。最后,實現(xiàn)具體協(xié)議棧的代碼長度與報文個數(shù)正相關(guān),隨著報文個數(shù)的增多,實現(xiàn)協(xié)議棧的代碼量也將線性增加。

發(fā)明內(nèi)容
本發(fā)明的目的是提供一種實現(xiàn)用戶業(yè)務(wù)遠(yuǎn)程驗證撥號(RADIUS)協(xié)議的編解碼方法,它可以靈活地實現(xiàn)各種RADIUS協(xié)議棧的編碼和解碼。
按照本發(fā)明的實現(xiàn)用戶業(yè)務(wù)遠(yuǎn)程驗證撥號(RADIUS)協(xié)議的編碼和解碼方法,RADIUS協(xié)議棧類包含多個RADIUS協(xié)議棧,其特征在于,當(dāng)對任一RADIUS協(xié)議棧進行編碼和解碼處理時,執(zhí)行以下步驟(1)將該RADIUS協(xié)議棧下定義的結(jié)構(gòu)信息寫入存儲器內(nèi),所述結(jié)構(gòu)信息包括每一屬性的各種特征信息和每種類型RADIUS報文中所使用屬性的各種使用狀態(tài)信息,并且不同RADIUS協(xié)議棧下定義的所述結(jié)構(gòu)信息都具有預(yù)先確定的統(tǒng)一格式;以及(2)從存儲器內(nèi)讀取具有所述預(yù)先確定的統(tǒng)一格式的結(jié)構(gòu)信息;以及(3)對于每一種具有所述預(yù)先確定的統(tǒng)一格式的結(jié)構(gòu)信息,都以不同RADIUS協(xié)議棧之間都相同的編碼和解碼方式進行處理以獲得實現(xiàn)該RADIUS協(xié)議棧的指令代碼。
由上可見,由于每種結(jié)構(gòu)信息,包括屬性使用狀態(tài)信息和特征信息都以統(tǒng)一格式表示和存儲,由此可以針對每一種格式的結(jié)構(gòu)信息定義相應(yīng)的統(tǒng)一編碼和解碼處理方式,因此當(dāng)RADIUS協(xié)議棧有改動時,只要改動后的結(jié)構(gòu)信息仍然以原先的統(tǒng)一格式表示,就無需修改編碼和解碼方式。這樣,開發(fā)RADIUS協(xié)議棧代碼的周期將大大縮短并且減少了維護的工作量和成本。


通過以下結(jié)合附圖對本發(fā)明較佳實施例的描述,可以進一步理解本發(fā)明的目的、特征和優(yōu)點圖1為RADIUS協(xié)議下典型的客戶機/服務(wù)器模型示意圖;圖2示出了RADIUS報文格式;圖3為按照本發(fā)明方法的解碼主流程示意圖;圖4為按照本發(fā)明方法的主屬性解碼流程示意圖;圖5為按照本發(fā)明方法的基本屬性解碼流程示意圖;圖6為按照本發(fā)明方法的編碼主流程示意圖;圖7為按照本發(fā)明方法的主屬性編碼流程示意圖;以及圖8為按照本發(fā)明方法的基本屬性編碼流程示意圖。
具體實施例方式
在本文中,RADIUS報文中的代碼域、標(biāo)識符域、長度域和驗證符域被統(tǒng)稱為報文頭部。如上所述,不同RADIUS協(xié)議棧下每種類型RADIUS報文中的代碼域、標(biāo)識符域、長度域和驗證符域都具有固定的長度和排列順序,因此報文頭部的編碼和解碼在不同RADIUS協(xié)議棧和報文之間以統(tǒng)一方式處理是顯而易見的。但是屬性域比較復(fù)雜,其結(jié)構(gòu)信息因?qū)傩詡€數(shù)、種類等的不同而變化,在本文中,結(jié)構(gòu)信息包含但不局限于RADIUS報文頭部結(jié)構(gòu)、每一屬性的各種特征信息和每種類型RADIUS報文中所使用屬性的各種使用狀態(tài)信息。本發(fā)明方法的著眼點即在于以統(tǒng)一的編碼和解碼方式處理隨RADIUS協(xié)議棧以及報文類型不同而變化的屬性域。為此,必須以統(tǒng)一格式表示屬性域的各種結(jié)構(gòu)信息,在此基礎(chǔ)上才可對每種統(tǒng)一格式的結(jié)構(gòu)信息定義相應(yīng)的統(tǒng)一的編碼和解碼方式。
值得指出的是,按照本發(fā)明方法的以統(tǒng)一格式表示結(jié)構(gòu)信息并以統(tǒng)一方式進行編碼和解碼的過程最終都可歸結(jié)為由硬件裝置實現(xiàn),這些硬件裝置包括但不局限于用于存儲結(jié)構(gòu)信息的各種存儲設(shè)備和以統(tǒng)一方式編碼和解碼結(jié)構(gòu)信息的處理器,這里的處理器可以是物理上實際對應(yīng)的一個專用中央處理器(CPU),也可以是具有信息或數(shù)據(jù)處理能力的多個邏輯處理單元的組合。在本發(fā)明中,上述硬件裝置被統(tǒng)稱為RADIUS協(xié)議處理器并且用于實現(xiàn)按照本發(fā)明的RADIUS協(xié)議編碼和解碼方法。
以下首先描述按照本發(fā)明方法的以統(tǒng)一格式表示屬性域各種結(jié)構(gòu)信息的較佳方式。為方便起見,這些統(tǒng)一格式表示的信息結(jié)構(gòu)可以寫入一個協(xié)議棧配置文件中,不同的協(xié)議棧具有不同的協(xié)議棧配置文件,但是每個配置文件表示結(jié)構(gòu)信息的格式都是相同的。
附錄A和B分別示出了符合標(biāo)準(zhǔn)RADIUS協(xié)議和RADIUS+1.0協(xié)議的配置文件,如附錄A和B所示,兩個配置文件都由頭部、消息、屬性三部分組成。其中,頭部中的字段MINMSGLENGTH和MAXMSGLENGTH描述本RADIUS協(xié)議棧下報文的最小和最大長度,F(xiàn)ILETERUNKNOWATT描述編解碼時是否過濾未知屬性,MINPRIMITIVELEN描述基本屬性的最小長度,MINCONSTRUCTORLEN描述結(jié)構(gòu)型屬性的最小長度;報文部分以RADIUS報文為單位,描述了每種RADIUS報文中所使用屬性的使用狀態(tài)信息,其中,字段MSGTYPE表示報文類型,用于標(biāo)識當(dāng)前描述的使用狀態(tài)信息的屬性所屬的RADIUS報文,MATTRIBUTE表示報文部分內(nèi)每個屬性的首部,用于標(biāo)識每個屬性使用狀態(tài)信息描述的開始,隨后的參數(shù)字段type描述屬性的編號,mtag描述屬性的性質(zhì)是可選屬性、必備屬性還是出現(xiàn)次數(shù)為0或更多的屬性,times描述在目標(biāo)報文結(jié)構(gòu)中出現(xiàn)的次數(shù);屬性部分分為LEVEL1和LEVEL2兩層,分別描述主屬性和子屬性的特征信息,在每一層的屬性特征信息描述中,字段ATTRIBUTE表示屬性部分內(nèi)每個屬性的首部,用于標(biāo)識每個屬性特征信息描述的開始,隨后的參數(shù)字段name描述屬性的名稱,type描述屬性的編號,這與報文部分內(nèi)的type字段是一致的,kind描述屬性的數(shù)據(jù)類型,min描述屬性的最小長度或最小值,max描述屬性的最大長度或最大值,len描述屬性在報文結(jié)構(gòu)中的長度,form描述屬性是否為結(jié)構(gòu)型屬性。
由上可見,在不同的RADIUS協(xié)議棧配置文件中,每個屬性在任一RADIUS報文中的使用狀態(tài)信息以及自身特征信息在每個配置文件中都以相應(yīng)的統(tǒng)一格式表示,例如,每個屬性的使用狀態(tài)信息以MSGTYPE標(biāo)識其所處的報文,并以MATTRIBUTE標(biāo)識使用狀態(tài)信息描述的開始,隨后依次出現(xiàn)屬性編號、屬性性質(zhì)、屬性在目標(biāo)報文結(jié)構(gòu)中出現(xiàn)次數(shù)等參數(shù)字段。又如,每個屬性的特征信息以ATTRIBUTE標(biāo)識每個屬性特征信息描述的開始,隨后依次出現(xiàn)屬性名稱、屬性編號、屬性數(shù)據(jù)類型、屬性最小長度或最小值、屬性最大長度或最大值、屬性在報文結(jié)構(gòu)中的長度和結(jié)構(gòu)型屬性標(biāo)志等參數(shù)字段。這種將不同RADIUS協(xié)議棧下定義的每個屬性的使用狀態(tài)信息和特征信息都以統(tǒng)一格式表示在不同的配置文件中的方式使得以統(tǒng)一的編碼和解碼規(guī)則或方式處理每一種格式的結(jié)構(gòu)信息成為可能。具體而言,在編碼和解碼過程中,可以將上述配置文件的結(jié)構(gòu)定義視為是對RADIUS協(xié)議棧類的定義,而將這種配置文件結(jié)構(gòu)下具體的配置文件視為是對每個RADIUS協(xié)議棧的定義。如果借助面向?qū)ο蠓椒ǖ某绦蛟O(shè)計思想描述,這里的RADIUS協(xié)議棧類相當(dāng)于“類”,而每個RADIUS協(xié)議棧是該類的一個“實例”,因此本發(fā)明的方法很容易用面向?qū)ο蟮木幊陶Z言來實現(xiàn)。例如可以編寫一個協(xié)議棧類程序,當(dāng)啟動時初始化部分可以根據(jù)需要動態(tài)生成協(xié)議棧實例,對不同的協(xié)議接口調(diào)用不同的實例進行編碼和解碼。
值得指出的是,配置文件是一個邏輯概念,代表了信息或數(shù)據(jù)的存儲結(jié)構(gòu),在物理上實際對應(yīng)的是存儲器的一個存儲區(qū)域。而且更為重要的是,上述附錄A和B示出的結(jié)構(gòu)信息表示方式只是示意性質(zhì)的,不應(yīng)理解為是對本發(fā)明范圍的限定。實際上,諸如每一屬性的各種特征信息和每種類型RADIUS報文中所使用屬性的各種使用狀態(tài)信息之類的結(jié)構(gòu)信息可以有無數(shù)種具體的統(tǒng)一格式表示方式,本發(fā)明的著眼點是通過利用統(tǒng)一格式表示或存儲結(jié)構(gòu)信息使得RADIUS協(xié)議的編碼和解碼方式或規(guī)則與協(xié)議棧內(nèi)容能夠分離開來,其中編碼和解碼規(guī)則由代碼體現(xiàn),而協(xié)議棧內(nèi)容由配置文件體現(xiàn)。
以下借助圖3~8描述本發(fā)明編碼和解碼RADIUS協(xié)議棧的方式。在本發(fā)明的方法中,借用面向?qū)ο蟮某绦蛟O(shè)計思想,將RADIUS報文和屬性視為不同的對象,不同類型的RADIUS報文或?qū)傩灾皇歉髯运鶎賹ο髢?nèi)的不同實例,因此可以對所有RADIUS報文和屬性實行統(tǒng)一的處理方式。
圖3為按照本發(fā)明方法的解碼主流程示意圖。如圖3所示,首先對RADIUS報文頭部進行解碼處理,如上所述,由于報文頭部的結(jié)構(gòu)是固定不變的,因此可以統(tǒng)一的解碼規(guī)則進行處理。報文頭部解碼完成后,讀取配置文件以確定是否有需要解碼的屬性。如果通過讀取配置文件確定有需要解碼的屬性,則讀取屬性類型,并隨后對主屬性按照統(tǒng)一的解碼規(guī)則進行處理。接著,判斷屬性處理是否成功,如果屬性處理不成功,則返回解碼出錯指示并結(jié)束解碼主流程,如果屬性處理成功,則返回讀取配置文件以確定是否有需要解碼的屬性的步驟。相反,如果通過讀取配置文件確定沒有需要解碼的屬性,則確定已解碼的屬性個數(shù)是否合法,即判斷解碼過程中記錄下來的解碼屬性個數(shù)與配置文件中mtag的取值是否一致。如果確定屬性個數(shù)合法,即,報文中屬性個數(shù)與配置文件規(guī)定的相等時,則將參數(shù)字段內(nèi)容解碼到結(jié)果報文中,即,將配置文件中參數(shù)字段的內(nèi)容復(fù)制至緩沖區(qū)的特定位置上,特定位置根據(jù)配置文件中解碼后參數(shù)長度定義和參數(shù)出現(xiàn)順序計算確定,隨后返回解碼成功指示。
圖4為圖3中主屬性解碼步驟的流程示意圖。如圖4所示,首先根據(jù)配置文件中參數(shù)字段form確定屬性是否為包含子屬性的結(jié)構(gòu)屬性。如果判斷不是結(jié)構(gòu)屬性,則進行基本屬性解碼處理。然后根據(jù)配置文件中屬性的結(jié)構(gòu)信息判斷該基本屬性是否合法,如果不合法,則返回屬性不合法指示并結(jié)束主屬性解碼流程,否則增加對應(yīng)類型已解碼屬性個數(shù)以用于圖3中確定已解碼屬性個數(shù)是否合法的步驟。最后,返回屬性合法指示并結(jié)束主屬性解碼流程。相反,如果判斷是結(jié)構(gòu)屬性,則判斷該結(jié)構(gòu)屬性中是否還包含未解碼的子屬性。如果不包含未解碼的子屬性,則增加對應(yīng)類型已解碼屬性個數(shù),返回屬性合法指示并結(jié)束主屬性解碼流程,否則對子屬性按照基本屬性解碼規(guī)則處理。對子屬性按照基本屬性解碼規(guī)則處理后,判斷解碼后的該子屬性是否合法。如果合法,則增加對應(yīng)類型已解碼子屬性的個數(shù)并返回至判斷是否還有子屬性的步驟,否則返回屬性不合法指示并結(jié)束主屬性解碼流程。
圖5為圖4中判斷基本屬性是否合法步驟的流程示意圖。如圖5所示,首先讀取解碼后屬性的長度。然后判斷讀取的屬性長度是否合法,即,將讀取的長度與配置文件中的參數(shù)字段king進行比較以確定是否匹配。如果不合法或不一致,則返回屬性錯誤指示并結(jié)束基本屬性解碼流程。如果合法或一致,則讀取屬性的內(nèi)容并進一步判斷屬性的內(nèi)容是否合法,即,將讀取的內(nèi)容與配置文件中的min和max等參數(shù)字段進行比較以確定是否匹配。如果合法或一致,則返回屬性正確指示并結(jié)束基本屬性解碼流程,否則,返回屬性錯誤指示并結(jié)束基本屬性是否合法步驟的流程。
圖6為按照本發(fā)明方法的編碼主流程示意圖。如圖6所示,首先對RADIUS報文頭部進行編碼處理,如上所述,由于報文頭部的結(jié)構(gòu)是固定不變的,因此可以統(tǒng)一的編碼規(guī)則進行處理。報文頭部編碼完成后,讀取配置文件以確定是否有需要編碼的屬性。如果通過讀取配置文件確定有需要編碼的屬性,則讀取屬性類型,并隨后對主屬性按照統(tǒng)一的編碼規(guī)則進行處理。接著,判斷屬性處理是否成功,如果屬性處理不成功,則返回編碼出錯指示并結(jié)束解碼主流程,如果屬性處理成功,則返回讀取配置文件以確定是否有需要編碼的屬性的步驟。相反,如果通過讀取配置文件確定沒有需要編碼的屬性,則返回編碼成功指示。
圖7為圖6中主屬性編碼步驟的流程示意圖。如圖6所示,首先根據(jù)配置文件中參數(shù)字段form確定屬性是否為包含子屬性的結(jié)構(gòu)屬性。如果判斷不是結(jié)構(gòu)屬性,則進行基本屬性編碼處理。然后返回編碼成功指示并結(jié)束主屬性編碼流程。相反,如果判斷是結(jié)構(gòu)屬性,則進一步判斷該結(jié)構(gòu)屬性中是否還包含未編碼的子屬性。如果不包含未編碼的子屬性,則計算出主屬性編碼后的長度,然后對該結(jié)構(gòu)屬性進行打包處理,即,將參數(shù)對應(yīng)的屬性類型、長度和內(nèi)容依次寫入編碼結(jié)果的緩沖區(qū)內(nèi),接著返回編碼成功指示并結(jié)束主屬性編碼流程。如果包含未編碼的子屬性,則對子屬性按照基本屬性編碼規(guī)則處理。對子屬性按照基本屬性編碼規(guī)則處理后,判斷編碼是否成功,如果成功,則返回至判斷是否還有子屬性的步驟,否則返回編碼失敗指示并結(jié)束主屬性編碼流程。
圖8為圖7中基本屬性編碼步驟的流程示意圖。如圖8所示,首先判斷讀取編碼后屬性的參數(shù)是否合法,即參數(shù)的取值范圍是否與配置文件中的一致。如果不合法或不一致,則返回編碼失敗指示并結(jié)束基本屬性編碼流程。如果合法或一致,則計算屬性編碼后的長度并將該參數(shù)打包,即,將參數(shù)對應(yīng)的屬性類型、長度和內(nèi)容依次寫入編碼結(jié)果的緩沖區(qū)內(nèi),然后返回編碼成功指示并結(jié)束基本屬性編碼流程。
附錄A 標(biāo)準(zhǔn)RADIUS協(xié)議編碼和解碼配置文件<pre listing-type="program-listing">MINMSGLENGTH 20MAXMSGLENGTH 1024FILETERUNKNOWATT 1MINPRIMITIVELEN3MINCONSTRUCTORLEN3# Access-RequestMSGTYPE 1# head show the head of attribute# type attribute type(0..255)# mtag 0=a optinal attribute# 1=a mandatory attribute# 2=0 or more times appearing# times 0=attribute not decode for message struct,or constructor# others,times appearing in message struct.   mandatory attribute must be only once.   optional attribute must be less then once(0 or 1).# conf_flagflag for configured,if true,configured value is to be used always.# conf_valueconfigured value for encoding primitive attribute,less then 64 bytes;#for constructor attribute,it′s the number of all child attributes.# head type mtagtimes conf_fiag conf_value#USER-NAME 0MATTRIBUTE 1010#USER-PASSWDMATTRIBUTE 2010#CHAP-PASSWDMATTRIBUTE 3010#FRAMED-PROTOCOLMATTRIBUTE 7010 8#VENDOR-SPECIFYMATTRIBUTE 26 011 2#ISP-IDMATTRIBUTE 17 010 163#CONNECT-ID,optional for v10MATTRIBUTE 26 010#NAS-PORT-IDMATTRIBUTE 87 010 abcdefg#NAS-PORT-TYPEMATTRIBUTE 61 010#CHAP-CHALLENGEMATTRIBUTE 60 010#FRAME-IP-ADDRESSMATTRIBUTE 8010#CLASSMATTRIBUTE 25 210#SeviceTypeMATTRIBUTE 6011#NAS-PortMATTRIBUTE 5010#StateMATTRIBUTE 24 010ENDMSG#Access-AcceptMSGTYPE 2#USER-NAMEMATTRIBUTE 1 0 10#FRAMED-PROTOCOLMATTRIBUTE 7 0 10#FRAMED-IP-ADDRESSMATTRIBUTE 8 0 10#FRAMED-IP-NETMASKMATTRIBUTE 9 0 10#FILTER-IDMATTRIBUTE 11 2 30#CLASSMATTRIBUTE 25 2 30&lt;dp n="d9"/&gt;#IDLE-TIMEOUTMATTRIBUTE 28 010#FRAMED-IP-POOL-IDMATTRIBUTE 88 010#ACCT-INTERIM-INTERVALMATTRIBUTE 85 010#Session-TimeoutMATTRIBUTE 27 010ENDMSG#Access-RejectMSGTYPE 3#REPLY-MESSAGEMATTRIBUTE 18 010ENDMSG#Accounting-RequestMSGTYPE 4#USER-NAMEMATTRIBUTE 1010#ACCT-STATUS-TYPEMATTRIBUTE 40 110#ACCT-DELAY-TIMEMATTRIBUTE 41 010#ACCT-SESSION-IDMATTRIBUTE 44 110#TERMINATE-CAUSEMATTRIBUTE 49 010#CLASSMATTRIBUTE 25 230#FRAMED-IP-ADDRESSMATTRIBUTE 8010#Event_TimestampMATTRIBUTE 55 010#AcctInputGigawordsMATTRIBUTE 52 010#AcctOutputGigawordsMATTRIBUTE 53 010#AcctInputOctetsMATTRIBUTE 42 010#AcctOutputOctetsMATTRIBUTE 43 010#AcctInputPacketsMATTRIBUTE 47 010#AcctOutputPacketsMATTRIBUTE 48 010ENDMSG#Accounting-ResponseMSGTYPE 5#SESSION-TIMEOUTMATTRIBUTE 27 010ENDMSG################################################################ headshow the head of attribute# namethe name of attribute# kind2=the attribute is octet type# 3=the attribute is integer# 4=the attribute is address type# minthe attribute′s min length or min value# maxthe attribute′s max length or max value# lenthe attribute′s length in message struct,INTEGER/ADDRESS is 4# form0=primitive,1=constructorLEVEL 0#head name type kind min maxwidth formATTRIBUTERad_UserName1 2 1 63 32 0ATTRIBUTERad_UserPassword 22 16128 16 0ATTRIBUTERad_CHAPPassword3 2 1717 20 0ATTRIBUTERad_NASIPAddress 4 3 0 4294967295 4 0ATTRIBUTERad_NASPort 53 065535 40ATTRIBUTERad_ServiceType6 3111 40ATTRIBUTERad FramedProtocol 7 3 110040&lt;dp n="d10"/&gt;ATTRIBUTE Rad_FramedIPAddress 8 4 0 4294967295 40ATTRIBUTE Rad_FramedIPNetmask 9 4 0 4294967295 4 0ATTRIBUTE Rad_FramedRouting 10 3 034 0ATTRIBUTE Rad_FilterId 11 2 08 12 0ATTRIBUTE Rad_FramedMTU 12 3 01 4294967295 4 0ATTRIBUTE Rad_FramedCompression 13 3 01 4294967295 4 0ATTRIBUTE Rad_LoginIPHost 14 3 0 4294967295 40ATTRIBUTE Rad_LoginService 15 3 1255 40ATTRIBUTE Rad_LoginTCPPort 16 3 0100 40ATTRIBUTE e 17 0 000 0ATTRIBUTE Rad_ReplyMessage 18 2 120048 0ATTRIBUTE Rad_CallbackNumber 19 0 0 0 00ATTRIBUTE Rad_CallbackId 200 0 00 0ATTRIBUTE e 2100 0 0 0ATTRIBUTE Rad_FramedRoute 220 0 0 00ATTRIBUTE Rad_FramedIPXNetwork23 0 00 00ATTRIBUTE Rad_State 24 2 1429496 32 0ATTRIBUTE Rad_Class 25 2 1200 360ATTRIBUTE Rad_VendorSpecific 26 0 00 01ATTRIBUTE Rad_SessionTimeout 27 3 0 4294967295 40ATTRIBUTE Rad_IdleTimeout 28 3 0 4294967295 4 0ATTRIBUTE Rad_TerminationAction 29 3 0 4294967295 4 0ATTRIBUTE Rad_CalledStationId 30 2 120024 0ATTRIBUTE Rad_CallingStationId 31 2 1 200 240ATTRIBUTE Rad_NASIdentifier 32 00 0 0 0ATTRIBUTE Rad_ProxyState 33 0 00 00ATTRIBUTE Rad_LoginLATService 34 0 0 000ATTRIBUTE Rad_LoginLATNode 35 0 0 000ATTRIBUTE Rad_LoginLATGroup 36 0 0 000ATTRIBUTE Rad_FramedAppleTalkLink37 0 0000ATTRIBUTE Rad_FramedAppleTalkNetwork 38 00 0 0 0ATTRIBUTE Rad_FramedAppleTalkZone 39 0 0 0 00ATTRIBUTE Rad_AcctStatusType 40 3 0 4294967295 40ATTRIBUTE Rad_AcctDelayTime 41 3 0 4294967295 40ATTRIBUTE Rad_AcctInputOctets 42 3 0 4294967295 40ATTRIBUTE Rad_AcctOutputOctets 43 3 0 4294967295 4 0ATTRIBUTE Rad_AcctSessionId 44 21 200 56 0ATTRIBUTE Rad_AcctAuthentic 45 000 00ATTRIBUTE Rad_AcctSessionTime 46 000 00ATTRIBUTE Rad_AcctInputPackets 47 3 0 4294967295 40ATTRIBUTE Rad_AcctOutputPackets 48 3 0 4294967295 4 0ATTRIBUTE Rad_AcctTerminateCause49 3 0 4294967295 4 0ATTRIBUTE Rad_AcctMultiSessionId 50 0 0 0 0 0ATTRIBUTE Rad_AcctLinkCount51 0 0 0 0 0ATTRIBUTE Rad_AcctInputGigawords 52 3 0 4000 4 0ATTRIBUTE Rad_AcctInputGigawords 53 3 0 4000 4 0ATTRIBUTE Rad_EventTimestamp 55 3 0 4294967295 40ATTRIBUTE Rad_CHAPChallenge 60 2 5 32 24 0ATTRIBUTE Rad_NASPortType61 3 0 4294967295 4 0ATTRIBUTE Rad_PortLimit 62000 0 0ATTRIBUTE Rad_LoginLATPort 63000 0 0ATTRIBUTE Rad_AcctInterimInterval 85 3 0 4294967295 4 0ATTRIBUTE Rad_NASPortId8721 200 32 0ATTRIBUTE Rad_FramedPool 8830 4294967295 40ENDLEVELLEVEL 1# headnametype kind minmax width formATTRIBUTE Rad_InputPeakRate13 0 4294967295 4 0ATTRIBUTE Rad_InputAverageRate2 3 0 4294967295 4 0ATTRIBUTE Rad_InputBasicRate3 3 0 4294967295 40ATTRIBUTE Rad_OutputPeakRate 4 304294967295 4 0ATTRIBUTE Rad_OutputAverageRate5 3 0 4294967295 4 0ATTRIBUTE Rad_OutputBasicRate 6 3 0 4294967295 4 0ATTRIBUTE Rad_InputKilobytesBeforeTariffSwitch 7 3 0 4294967295 4 0ATTRIBUTE Rad_OutputKilobytesBeforeTariffSwitch 8 304294967295 4 0ATTRIBUTE Rad_InputPacketsBeforeTariffSwitch 9 3 0 4294967295 4 0ATTRIBUTE Rad_OutputPacketsBeforeTariffSwitch 10 3 0 4294967295 4 0ATTRIBUTE Rad_InputKilobytesAfterTariffSwitch 11 3 0 4294967295 4 0&lt;dp n="d11"/&gt;ATTRIBUTE Rad_OutputKilobytesAfterTariffSwitch 12 3 04294967295 4 0ATTRIBUTE Rad_InputPacketsAfterTariffSwitch133 04294967295 4 0ATTRIBUTE Rad_OutputPacketsAfterTariffSwitch 143 04294967295 4 0ATTRIBUTE Rad_RemanentVolume 153 04294967295 4 0ATTRIBUTE Rad_TariffSwitchInterval 163 04294967295 4 0ATTRIBUTE Rad_ISPID17 2 064 320ATTRIBUTE Rad_MaxUsersPerLogicPort 19 3 0 4294967295 4 0ATTRIBUTE Rad_Command 20 3 0 42949672954 0ATTRIBUTE Rad_Priority 22 30 4294967295 4 0ATTRIBUTE Rad_ControlIdentifier 24 3 04294967295 4 0ATTRIBUTE Rad_ResultCode 25 3 0 4294967295 40ATTRIBUTE Rad_ConnectId 26304294967295 4 0ENDLEVEL</pre>
附錄B RADIUS協(xié)議+1.1編碼和解碼配置文件<pre listing-type="program-listing">MINMSGLENGTH 20MAXMSGLENGTH 1024FILETERUNKNOWATT 1MINPRIMITIVELEN 3MINCONSTRUCTORLEN 3# Access-RequestMSGTYPE 1# head show the head of attribute# type attribute type(0..255)# mtag0=a optinal attribute#1=a mandatory attribute#2=0 or more times appearing# times 0=attribute not decode for message struct,or constructor#others,times appearing in message struct.   mandatory attribute must be only once.   optional attribute must be less then once(0 or 1).# conf_flag flag for configured,if true,configured value is to be used always.# conf_valueconfigured value for encoding primitive attribute,less then 64 bytes;#for constructor attribute,it′s the number of all child attributes.# headtypemtag times conf_flag conf_value#USER-NAME 0MATTRIBUTE 10 1 0 555555555551#USER-PASSWDMATTRIBUTE 20 1 0#CHAP-PASSWDMATTRIBUTE 30 1 0#FRAMED-PROTOCOLMATTRIBUTE 70 1 0 8#VENDOR-SPECIFYMATTRIBUTE 26 0 0 1 2#ISP-IDMATTRIBUTE 17 0 1 0 163#CONNECT-ID,optional for v10MATTRIBUTE 26 0 1 0 3#NAS-PORT-IDMATTRIBUTE 87 0 1 0 abcdefg#NAS-PORT-TYPEMATTRIBUTE 61 0 1 0#CHAP-CHALLENGEMATTRIBUTE 60 0 1 0#FRAME-IP-ADDRESSMATTRIBUTE 80 1 0#CLASSMATTRIBUTE 25 2 3 0ENDMSG#Access-AcceptMSGTYPE 2#USER-NAMEMATTRIBUTE 10 1 0#FRAMED-PROTOCOLMATTRIBUTE 70 1 0#FRAMED-IP-ADDRESSMATTRIBUTE 80 1 0#FRAMED-IP-NETMASKMATTRIBUTE 90 1 0#FILTER-IDMATTRIBUTE 11 2 3 0#CLASSMATTRIBUTE 25 2 3 0#IDLE-TIMEOUTMATTRIBUTE 28 0 1 0#FRAMED-IP-POOL-IDMATTRIBUTE 88 0 1 0#ACCT-INTERIM-INTERVAL&lt;dp n="d13"/&gt;MATTRIBUTE 85 0 1 0#VENDOR-SPECIFYMATTRIBUTE 26 0 0 110#RATE 6MATTRIBUTE 10 1 0MATTRIBUTE 20 1 0MATTRIBUTE 30 1 0MATTRIBUTE 40 1 0MATTRIBUTE 50 1 0MATTRIBUTE 60 1 0#MAX-USERS-PER-LOGICPORTMATTRIBUTE 19 0 1 011#ISP-IDMATTRIBUTE 17 0 1 0#CONNECT-IDMATTRIBUTE 26 1 1 0#PRIORTYMATTRIBUTE 22 0 1 0ENDMSG#Access-RejectMSGTYPE 3#REPLY-MESSAGEMATTRIBUTE 18 0 1 0#VENDOR-SPECIFYMATTRIBUTE 26 0 0 1#CONNECT-IDMATTRIBUTE 26 1 1 0ENDMSG#Accounting-RequestMSGTYPE 4#USER-NAMEMATTRIBUTE 10 1 0#ACCT-STATUS-TYPEMATTRIBUTE 40 1 1 0#ACCT-DELAY-TIMEMATTRIBUTE 41 0 1 0#ACCT-SESSION-IDMATTRIBUTE 44 1 1 0#TERMINATE-CAUSEMATTRIBUTE 49 0 1 0#VENDOR-SPECIFYMATTRIBUTE 26 0 0 110#VOLUME-infoMATTRIBUTE 70 1 0MATTRIBUTE 80 1 0MATTRIBUTE 90 1 0MATTRIBUTE 10 0 1 0MATTRIBUTE l1 0 1 0MATTRIBUTE 12 0 1 0MATTRIBUTE 13 0 1 0MATTRIBUTE 14 0 1 0#CONNECT-IDMATTRIBUTE 26 1 1 0#CONTROL-IDENTIFIERMATTRIBUTE 24 0 1 0#CLASSMATTRIBUTE 25 2 1 0#FRAMED-IP-ADDRESSMATTRIBUTE 80 1 0ENDMSG#Accounting-ResponseMSGTYPE5#USER-NAMEMATTRIBUTE 10 1 0#SESSION-TIMEOUTMATTRIBUTE 27 0 1 0#VENDOR-SPECIFYMATTRIBUTE 26 0 0 13&lt;dp n="d14"/&gt;#REMANENT-VOLUMEMATTRIB UTE 15 010#TARIFF-SWITCH-INTERVALMATTRIBUTE 16 010#CONNECT-IDMATTRIBUTE 26 110#CLASSMATTRIBUTE 25 230#ACCT-SESSION-IDMATTRIBUTE 44 010ENDMSG#Trigger-RequestMSGTYPE 201#USER-NAMEMATTRIBUTE 1 110#FRAMED-IP-ADDRESSMATTRIBUTE 8 110#FILTER-IDMATTRIBUTE 11 230#NAS-PORT-IDMATTRIBUTE 87 010#VENDOR-SPECIFYMATTRIBUTE 26 001#COMMANDMATTRIBUTE 20 110#CONTROL-IDENTIFIERMATTRIBUTE 24 110ENDMSG#Terminate-RequestMSGTYPE 202#USER-NAMEMATTRIBUTE 1 110#CLASSMATTRIBUTE 25 230#ACCT-SESSION-IDMATTRIBUTE 44 110#VENDOR-SPECIFYMATTRIBUTE 26 001#CONNECT-IDMATTRIBUTE 26 1 10#COMMANDMATTRIBUTE 20 1 10#CONTROL-IDENTIFIERMATTRIBUTE 24 1 10ENDMSG#SetpolicyMSGTYPE 203#USER-NAMEMATTRIBUTE 1 1 10#ACCT-SESSION-IDMATTRIBUTE 44 1 10#FILTER-IDMATTRIBUTE 11 2 30#VENDOR-SPECIFYMATTRIBUTE 26 0 01 11#RATE6MATTRIBUTE 1 0 10MATTRIBUTE 2 0 10MATTRIBUTE 3 0 10MATTRIBUTE 4 0 10MATTRIBUTE 5 0 10MATTRIBUTE 6 0 10#CONNECT-IDMATTRIBUTE 26 1 10#COMMANDMATTRIBUTE 20 1 10#CONTROL-IDENTIFIERMATTRIBUTE 24 1 10#ISP-ID&lt;dp n="d15"/&gt;MATTRIBUTE 17 010#PRIORTYMATTRIBUTE 22 010ENDMSG#Control-ResultMSGTYPE 20#FRAMED-IP-ADDRESSMATTRIBUTE 8 010#VENDOR-SPECIFYMATTRIBUTE 26 001#CONNECT-IDMATTRIBUTE 26 010#COMMANDMATTRIBUTE 20 110#CONTROL-IDENTIFIERMATTRIBUTE 24 110#RESULT-CODEMATTRIBUTE 25 010ENDMSG######################################################################## headshow the head of attribute# namethe name of attribute# kind2=the attribute is octet type# 3=the attribute is integer# 4=the attribute is address type# minthe attribute′s min length or min value# maxthe attribute′s max length or max value# lenthe attribute′s length in message struct,INTEGER/ADDRESS is 4# form0=primitive,1=constructorLEVEL 0#head name type kind min max width formATTRIBUTE Rad_UserName 12 1 63 32 0ATTRIBUTE Rad_UserPassword 22 16 128 16 0ATTRIBUTE Rad_CHAPPassword 3 2 1717 20 0ATTRIBUTE Rad NASIPAddress4 3 0 4294967295 40ATTRIBUTE Rad NASPort 5 3 0 65535 4 0ATTRIBUTE Rad_ServiceType 6 31 11 4 0ATTRIBUTE Rad FramedProtocol 73 1 100 4 0ATTRIBUTE Rad_FramedIPAddress8 4 0 4294967295 40ATTRIBUTE Rad FramedIPNetmask9 4 0 4294967295 40ATTRIBUTE Rad_FramedRouting 10 3 0 3 40ATTRIBUTE Rad_FilterId112 0812 0ATTRIBUTE Rad FramedMTU 123 01 4294967295 40ATTRIBUTE Rad_FramedCompression 13 3 01 4294967295 40ATTRIBUTE Rad_LoginIPHost 14 3 04294967295 40ATTRIBUTE Rad_LoginService 15 3 1255 40ATTRIBUTE Rad_LoginTCPPort 16 3 0100 40ATTRIBUTE e 17 000 0 0ATTRIBUTE Rad_ReplyMessage 18 2 1 200 480ATTRIBUTE Rad CallbackNumber19 000 00ATTRIBUTE Rad CallbackId 20 0 0 0 00ATTRIBUTE e21 0 0000ATTRIBUTE Rad_FramedRoute22 0 00 00ATTRIBUTE Rad FramedIPXNetwork23 0 00 00ATTRIBUTE Rad State24 0 0000ATTRIBUTE Rad_Class 25 21 200 360ATTRIBUTE Rad_VendorSpecific 26 0 00 01ATTRIBUTE Rad SessionTimeout 27 3 04294967295 40ATTRIBUTE Rad_IdleTimeout 28 3 04294967295 40ATTRIBUTE Rad_TerminationAction29 3 0 4294967295 40ATTRIBUTE Rad CalledStationId 30 2 1200 24 0ATTRIBUTE Rad_CallingStationId 31 21200 240ATTRIBUTE Rad NASIdentifier32 000 00ATTRIBUTE Rad_ProxyState33 00000ATTRIBUTE Rad_LoginLATService34 000 0 0ATTRIBUTE Rad_LoginLATNode 35 000 0 0ATTRIBUTE Rad_LoginLATGroup 36 000 0 0ATTRIBUTE Rad_FramedAppleTalkLink 37 0 0 0 00&lt;dp n="d16"/&gt;ATTRIBUTE Rad_FramedAppleTalkNetwork 38 00 0 00ATTRIBUTE Rad_FramedAppleTalkZone 39 0 0 0 00ATTRIBUTE Rad_AcctStatusType 403 0 4294967295 40ATTRIBUTE Rad_AectDelayTime413 0 4294967295 40ATTRIBUTE Rad_AcctInputOctets42 0 0 0 00ATTRIBUTE Rad_AcctOutputOctets 43 0 0 0 00ATTRIBUTE Rad_AcctSessionId 44 2 1 20056 0ATTRIBUTE Rad_AectAuthentie 45 00 0 0 0ATTRIBUTE Rad_AcctSessionTime 46 0 0 0 0 0ATTRIBUTE Rad_AcctInputPackets 47 3 0 4294967295 4 0ATTRIBUTE Rad_AcctOutputPackets 48 3 0 4294967295 4 0ATTRIBUTE Rad_AcctTerminateCause49 3 0 4294967295 4 0ATTRIBUTE Rad_AcctMultiSessionId50 0 00 0 0ATTRIBUTE Rad_AcctLinkCount51 00 0 0 0ATTRIBUTE Rad_CHAPChallenge 60 2 5 32 24 0ATTRIBUTE Rad_NASPortType 6130 42949672954 0ATTRIBUTE Rad_PortLimit 62000 0 0ATTRIBUTE Rad_LoginLATPort 63000 00ATTRIBUTE Rad_AcctInterimInterval 85 3 0 4294967295 4ATTRIBUTE Rad_NASPortId 8721 200 320ATTRIBUTE Rad FramedPool88 30 4294967295 4 0ENDLEVELLEVEL 1# headname type kindminmax width formATTRIBUTE Rad_InputPeakRate1 3 04294967295 4 0ATTRIBUTE Rad_InputAverageRate 2 3 04294967295 4 0ATTRIBUTE Rad_InputBasicRate 3 3 04294967295 4 0ATTRIBUTE Rad_OutputPeakRate43 04294967295 4 0ATTRIBUTE Rad_OutputAverageRate 5 3 04294967295 4 0ATTRIBUTE Rad_OutputBasicRate 6 3 0 4294967295 4 0ATTRIBUTE Rad_InputKilobytesBeforeTariffSwitch 7 3 0 4294967295 40ATTRIBUTE Rad_OutputKilobytesBeforeTariffSwitch 8 3 04294967295 4 0ATTRIBUTE Rad_InputPacketsBeforeTariffSwitch9 3 04294967295 4 0ATTRIBUTE Rad_OutputPacketsBeforeTariffSwitch 10 3 04294967295 4 0ATTRIBUTE Rad_InputKilobytesAfterTariffSwitch 11 3 04294967295 4 0ATTRIBUTE Rad_OutputKilobytesAfterTariffSwitch 12 3 04294967295 4 0ATTRIBUTE Rad_InputPacketsAfterTariffSwitch 13 3 04294967295 4 0ATTRIBUTE Rad_OutputPacketsAfierTariffSwitch14 3 04294967295 4 0ATTRIBUTE Rad_RemanentVolume 153 0 4294967295 4 0ATTRIBUTE Rad_TariffSwitchInterva116 3 0 4294967295 4 0ATTRIBUTE Rad_ISPID 17 2 0 64 32 0ATTRIBUTE Rad_MaxUsersPerLogicPort 19 3 0 4294967295 4 0ATTRIBUTE Rad_Command 20 304294967295 4 0ATTRIBUTE Rad_Priority 22 304294967295 4 0ATTRIBUTE Rad_ControlIdentifier 24 3 0 4294967295 4 0ATTRIBUTE Rad_ResultCode 25 30 4294967295 40ATTRIBUTE Rad_ConnectId 26 30 4294967295 4 0ENDLEVEL</pre>
權(quán)利要求
1.一種實現(xiàn)用戶業(yè)務(wù)遠(yuǎn)程驗證撥號(RADIUS)協(xié)議的編碼和解碼方法,RADIUS協(xié)議棧類包含多個RADIUS協(xié)議棧,其特征在于,當(dāng)RADIUS協(xié)議處理器對任一RADIUS協(xié)議棧進行編碼和解碼處理時,執(zhí)行以下步驟(1)將該RADIUS協(xié)議棧下定義的結(jié)構(gòu)信息寫入存儲器內(nèi),所述結(jié)構(gòu)信息包括每一屬性的各種特征信息和每種類型RADIUS報文中所使用屬性的各種使用狀態(tài)信息,并且不同RADIUS協(xié)議棧下定義的所述結(jié)構(gòu)信息都具有預(yù)先確定的統(tǒng)一格式;以及(2)從存儲器內(nèi)讀取具有所述預(yù)先確定的統(tǒng)一格式的結(jié)構(gòu)信息;以及(3)對于每一種具有所述預(yù)先確定的統(tǒng)一格式的結(jié)構(gòu)信息,都以不同RADIUS協(xié)議棧之間都相同的編碼和解碼方式進行處理以獲得實現(xiàn)該RADIUS協(xié)議棧的指令代碼。
2.如權(quán)利要求1所述的實現(xiàn)RADIUS協(xié)議的編碼和解碼方法,其特征在于,每個RADIUS協(xié)議棧下定義的結(jié)構(gòu)信息按照以下統(tǒng)一格式寫入一個可存儲在存儲器內(nèi)的配置文件中所述配置文件由頭部、報文和屬性三部分組成,每一部分由字段組成,其中,頭部部分包含分別描述每個RADIUS協(xié)議棧內(nèi)最大和最小報文長度、是否過濾未知屬性、基本屬性的最小長度、結(jié)構(gòu)型屬性的最小長度的字段;報文部分用于描述每個RADIUS協(xié)議棧下每個RADIUS報文所使用屬性的使用狀態(tài)信息,包含分別描述每種RADIUS報文內(nèi)所使用屬性的屬性編號、屬性性質(zhì)、屬性在目標(biāo)報文結(jié)構(gòu)中出現(xiàn)次數(shù)的字段;屬性部分用于描述每個RADIUS協(xié)議棧下每一屬性的特征信息,包含分別描述每個屬性的屬性名稱、屬性編號、屬性數(shù)據(jù)類型、屬性最小長度或最小值、屬性最大長度或最大值、屬性在報文結(jié)構(gòu)中的長度和結(jié)構(gòu)型屬性標(biāo)志的字段。
3.如權(quán)利要求2所述的實現(xiàn)RADIUS協(xié)議的編碼和解碼方法,其特征在于,屬性部分由基本屬性和子屬性兩部分組成,其中基本屬性部分包含分別描述每個基本屬性的屬性名稱、屬性編號、屬性數(shù)據(jù)類型、屬性最小長度或最小值、屬性最大長度或最大值、屬性在報文結(jié)構(gòu)中的長度和結(jié)構(gòu)型屬性標(biāo)志的字段,子屬性部分包含分別描述每個子屬性的屬性名稱、屬性編號、屬性數(shù)據(jù)類型、屬性最小長度或最小值、屬性最大長度或最大值、屬性在報文結(jié)構(gòu)中的長度和結(jié)構(gòu)型屬性標(biāo)志的字段。
4.如權(quán)利要求2或3所述的實現(xiàn)RADIUS協(xié)議的編碼和解碼方法,其特征在于,在對屬性的結(jié)構(gòu)信息進行編碼和解碼時,對編碼和解碼后RADIUS報文中的屬性長度和屬性取值范圍與配置文件進行比較以確定編碼和解碼處理是否正確。
5.如權(quán)利要求2或3所述的實現(xiàn)RADIUS協(xié)議的編碼和解碼方法,其特征在于,在對屬性的結(jié)構(gòu)信息進行編碼和解碼時,對編碼和解碼后RADIUS報文中屬性可能出現(xiàn)個數(shù)與配置文件進行比較以確定編碼和解碼處理是否正確。
全文摘要
本發(fā)明提供一種實現(xiàn)用戶業(yè)務(wù)遠(yuǎn)程驗證撥號(RADIUS)協(xié)議的編解碼方法,它將RADIUS協(xié)議棧下定義的結(jié)構(gòu)信息寫入一個配置文件中,不同RADIUS協(xié)議棧下定義的所述結(jié)構(gòu)信息在配置文件中都具有預(yù)先確定的統(tǒng)一格式。因此對于每一種具有預(yù)先確定的統(tǒng)一格式的結(jié)構(gòu)信息,可以都以不同RADIUS協(xié)議棧之間都相同的編碼和解碼方式進行處理以獲得實現(xiàn)該RADIUS協(xié)議棧的指令代碼。因此當(dāng)RADIUS協(xié)議棧有改動時,只要改動后的結(jié)構(gòu)信息仍然以原先的統(tǒng)一格式表示,就無需修改編碼和解碼方式。這樣,開發(fā)RADIUS協(xié)議棧代碼的周期將大大縮短并且減少了維護的工作量和成本。
文檔編號H04L12/00GK1471260SQ02136148
公開日2004年1月28日 申請日期2002年7月22日 優(yōu)先權(quán)日2002年7月22日
發(fā)明者鄭志鵬 申請人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
黑河市| 柘城县| 龙泉市| 上高县| 红安县| 邵阳县| 利津县| 南宁市| 惠安县| 南澳县| 云浮市| 赤峰市| 星子县| 阳东县| 永泰县| 黄石市| 翼城县| 遂昌县| 永顺县| 孝义市| 漯河市| 米泉市| 青岛市| 夏津县| 三明市| 巴马| 清流县| 沛县| 凉山| 吴江市| 新巴尔虎左旗| 通许县| 太和县| 玉田县| 九龙坡区| 泸西县| 江源县| 天门市| 德兴市| 图木舒克市| 乡宁县|