專利名稱:報(bào)文生成方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)通信技術(shù)領(lǐng)域,更具體的說,本發(fā)明涉及一種報(bào)文生成方法。
背景技術(shù):
隨著互聯(lián)網(wǎng)在全世界的普及,數(shù)據(jù)通信設(shè)備的功能、穩(wěn)定性和健壯性越來越重要,而要達(dá)到這些標(biāo)準(zhǔn),對數(shù)據(jù)通信設(shè)備進(jìn)行嚴(yán)格的測試是必不可少的。通常,數(shù)據(jù)通信設(shè)備之間的通信是通過各種協(xié)議報(bào)文的交互實(shí)現(xiàn)的,數(shù)據(jù)通信設(shè)備的主要功能就是要正確地處理各種協(xié)議報(bào)文,對數(shù)據(jù)通信設(shè)備的測試一般也是通過向被測設(shè)備發(fā)送各種協(xié)議報(bào)文進(jìn)行測試來實(shí)現(xiàn)的。例如,數(shù)據(jù)通信的協(xié)議一致性測試、異常測試、攻擊測試等,因此,如何構(gòu)成并生成各種協(xié)議報(bào)文已成為數(shù)據(jù)通信領(lǐng)域測試技術(shù)的一個(gè)關(guān)鍵。
現(xiàn)有技術(shù)中數(shù)據(jù)通信領(lǐng)域生成協(xié)議報(bào)文一般采用兩種方式,第一種方式是利用現(xiàn)有測試工具的協(xié)議報(bào)文構(gòu)造功能,具體生成報(bào)文主要包括下面的步驟首先,捕獲網(wǎng)上傳輸?shù)膮f(xié)議報(bào)文;然后,對捕獲的報(bào)文的某些字節(jié)進(jìn)行修改以構(gòu)成所需的協(xié)議報(bào)文;若修改某些字節(jié)而引起其它報(bào)文域的變化(如校驗(yàn)和),則重新計(jì)算需要變化的報(bào)文域的值;將所述修改后的協(xié)議報(bào)文輸出作為生成的協(xié)議報(bào)文。
該種方式實(shí)現(xiàn)較簡單,但存在如下的缺點(diǎn)首先,協(xié)議報(bào)文的構(gòu)造往往取決于網(wǎng)上傳輸?shù)膱?bào)文,不可預(yù)知;
其次,對捕獲報(bào)文的字節(jié)流里的字節(jié)進(jìn)行修改比較困難。由于要在一長串字節(jié)流里找到要修改的字節(jié);并且,有時(shí)修改某個(gè)字節(jié)會(huì)引起其它報(bào)文域的變化,如校驗(yàn)和域,這樣就要重新計(jì)算要發(fā)生變化的報(bào)文域,比較費(fèi)時(shí)費(fèi)力;再次,一些新出現(xiàn)的數(shù)據(jù)通信協(xié)議,往往在網(wǎng)上捕獲不到這些協(xié)議的報(bào)文,這樣就無法構(gòu)造這些協(xié)議的報(bào)文了,另外,也不容易構(gòu)造一些特殊報(bào)文,因?yàn)樘厥鈭?bào)文很難在網(wǎng)上捕獲。
第二種方式主要是利用TCL語言技術(shù),用TCL擴(kuò)展命令來封裝生成協(xié)議報(bào)文,某種協(xié)議的一種報(bào)文往往對應(yīng)一個(gè)TCL擴(kuò)展命令。對于某種具體的協(xié)議報(bào)文,該方法要求輸入該協(xié)議報(bào)文的具體參數(shù)。如構(gòu)造一個(gè)ARP報(bào)文,則需要類似如下方式的描述MakeArpPacket-seth mac-sip ip_addr-deth mac-dip ip_addr-oper oper注-seth mac表示源MAC地址;-sip ip_addr表示源IPv4地址;-deth mac表示目的MAC地址;-dip ip_addr表示目的IPv4地址;-oper oper表示表示操作類型,1表示ARP請求,2表示ARP應(yīng)答。
該種方法存在如下缺點(diǎn)首先,一種協(xié)議中的一種報(bào)文往往需要對應(yīng)一個(gè)TCL擴(kuò)展命令,如要構(gòu)造多個(gè)協(xié)議的多種報(bào)文時(shí),則需要開發(fā)的TCL擴(kuò)展命令數(shù)目巨大;其次,開發(fā)相應(yīng)的TCL擴(kuò)展命令比較復(fù)雜,需要用C語言編寫代碼,這對測試人員要求比較高;再次,對于新出現(xiàn)的數(shù)據(jù)通信協(xié)議,沒有現(xiàn)成的TCL擴(kuò)展命令來構(gòu)造這些協(xié)議的報(bào)文,只能繼續(xù)投入人力來開發(fā)構(gòu)造這些協(xié)議報(bào)文的TCL擴(kuò)展命令。
再次,也不容易構(gòu)造一些特殊報(bào)文,因?yàn)樘厥鈭?bào)文往往具有不確定性,很難預(yù)先用TCL命令實(shí)現(xiàn)。
發(fā)明內(nèi)容
本發(fā)明解決的技術(shù)問題是提供一種通用的報(bào)文生成方法,以實(shí)現(xiàn)構(gòu)造任意的數(shù)據(jù)通信協(xié)議報(bào)文。
為解決上述問題,本發(fā)明的報(bào)文生成方法,用于生成各種數(shù)據(jù)通信協(xié)議報(bào)文,該方法包括如下步驟a、將各個(gè)數(shù)據(jù)通信協(xié)議具體報(bào)文格式的各種報(bào)文域抽象分類劃分為比特報(bào)文域、字節(jié)報(bào)文域、字符串報(bào)文域、長度報(bào)文域以及檢驗(yàn)和報(bào)文域;b、將待生成的數(shù)據(jù)通信協(xié)議具體報(bào)文格式的各個(gè)報(bào)文域歸類到所述的比特報(bào)文域、字節(jié)報(bào)文域、字符串報(bào)文域、長度報(bào)文域以及檢驗(yàn)和報(bào)文域;c、根據(jù)待生成的數(shù)據(jù)通信協(xié)議具體報(bào)文格式的各個(gè)報(bào)文域在其歸屬的所述比特報(bào)文域、字節(jié)報(bào)文域、字符串報(bào)文域、長度報(bào)文域或檢驗(yàn)和報(bào)文域的輸入?yún)?shù)值,整理輸出該數(shù)據(jù)通信協(xié)議報(bào)文的完整字節(jié)流。
其中,步驟b包括b1、按照數(shù)據(jù)通信協(xié)議報(bào)文具體格式中的報(bào)文域順序依次對歸類的報(bào)文域進(jìn)行編號;b2、確定歸類到所述的比特報(bào)文域、字節(jié)報(bào)文域、字符串報(bào)文域中的各個(gè)報(bào)文域在待生成數(shù)據(jù)通信協(xié)議具體報(bào)文格式里所占長度及值,以及所述的長度報(bào)文域所占長度、所代表的長度單位、所代表長度范圍的起始報(bào)文域序號和結(jié)束報(bào)文域序號,所述的檢驗(yàn)和報(bào)文域所占長度、所檢驗(yàn)范圍的起始報(bào)文域序號和結(jié)束報(bào)文域序號以及所采用的檢驗(yàn)和算法;b3、按照報(bào)文域的編號順序,依次輸入該報(bào)文的所有報(bào)文域參數(shù)值,若是長度報(bào)文域或檢驗(yàn)和報(bào)文域,則輸入報(bào)文域的值置為0;步驟c包括
c1、根據(jù)輸入報(bào)文域的參數(shù)值,依次生成各個(gè)報(bào)文域的比特流,并把該比特流附加到該報(bào)文已生成比特流的尾部;c2、把該報(bào)文的完整比特流轉(zhuǎn)換為字節(jié)流;c3、根據(jù)所述長度報(bào)文域所代表長度范圍的起始報(bào)文域序號和結(jié)束報(bào)文域序號確定所述長度報(bào)文域的值,然后把得到的值填入該長度報(bào)文域在上述報(bào)文字節(jié)流的相應(yīng)位置;c4、按照從最后一個(gè)檢驗(yàn)和報(bào)文域到最前一個(gè)檢驗(yàn)和報(bào)文域的順序,依次根據(jù)所述檢驗(yàn)和報(bào)文域所檢驗(yàn)范圍的起始報(bào)文域序號和結(jié)束報(bào)文域序號,以及所采用的檢驗(yàn)和算法確定所述檢驗(yàn)和報(bào)文域的值,然后把得到的值填入該檢驗(yàn)和報(bào)文域在上述報(bào)文字節(jié)流的相應(yīng)位置;c5、輸出該報(bào)文的完整字節(jié)流。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下有益效果本發(fā)明通過將各個(gè)數(shù)據(jù)通信協(xié)議具體報(bào)文格式的各種報(bào)文域抽象分類劃分為比特報(bào)文域、字節(jié)報(bào)文域、字符串報(bào)文域、長度報(bào)文域以及檢驗(yàn)和報(bào)文域;然后將待生成的數(shù)據(jù)通信協(xié)議具體報(bào)文格式的各個(gè)報(bào)文域歸類到所述的比特報(bào)文域、字節(jié)報(bào)文域、字符串報(bào)文域、長度報(bào)文域以及檢驗(yàn)和報(bào)文域;根據(jù)待生成的數(shù)據(jù)通信協(xié)議具體報(bào)文格式的各個(gè)報(bào)文域在其歸屬的所述比特報(bào)文域、字節(jié)報(bào)文域、字符串報(bào)文域、長度報(bào)文域或檢驗(yàn)和報(bào)文域的參數(shù)值,整理輸出該數(shù)據(jù)通信協(xié)議報(bào)文的完整字節(jié)流。基于上述的報(bào)文生成方法可實(shí)現(xiàn)任意數(shù)據(jù)通信協(xié)議報(bào)文,數(shù)據(jù)通信測試人員不需要再花費(fèi)大量的時(shí)間去開發(fā)其它的報(bào)文構(gòu)造工具或相應(yīng)的TCL擴(kuò)展命令,可大大節(jié)省人力物力,加快對數(shù)據(jù)通信現(xiàn)有協(xié)議和新增協(xié)議的測試進(jìn)度。
圖1是是RFC791中關(guān)于IPv4首部格式的描述;圖2是本發(fā)明報(bào)文生成方法的具體實(shí)現(xiàn)示意圖。
具體實(shí)施例方式
數(shù)據(jù)通信的一個(gè)協(xié)議通常與一篇或多篇RFC文檔相對應(yīng),在所述的RFC文檔里有該協(xié)議所有報(bào)文的格式描述。報(bào)文格式描述是以報(bào)文域?yàn)閱挝坏?,?bào)文域的內(nèi)容可以是多個(gè)字節(jié)、多個(gè)比特、甚至是一個(gè)比特,數(shù)據(jù)通信報(bào)文最終在網(wǎng)絡(luò)線路上傳輸?shù)氖?或1的比特流。例如,參考圖1,該圖是RFC791中關(guān)于IPv4首部格式的描述,圖中的一個(gè)單詞或詞組表示一個(gè)報(bào)文域。該數(shù)據(jù)通信協(xié)議的報(bào)文由11個(gè)報(bào)文域組成。
本發(fā)明根據(jù)數(shù)據(jù)通信協(xié)議報(bào)文是由多個(gè)報(bào)文域構(gòu)成的事實(shí),對各種報(bào)文域進(jìn)行抽象分類和定義。對于與協(xié)議一致的報(bào)文,測試人員可以按照相應(yīng)RFC文檔里的報(bào)文格式,把一個(gè)報(bào)文分成多個(gè)報(bào)文域,給出每個(gè)報(bào)文域的輸入?yún)?shù),將其歸屬到其分類的抽象報(bào)文域中,根據(jù)各個(gè)報(bào)文域的輸入?yún)?shù)便可以輸出所要的報(bào)文;同樣地,對于異常報(bào)文,測試人員只要給出組成該報(bào)文的所有報(bào)文域的輸入?yún)?shù),將其歸屬到其分類的抽象報(bào)文域中,根據(jù)各個(gè)報(bào)文域的輸入?yún)?shù)便可以輸出所要的異常報(bào)文。
本發(fā)明對數(shù)據(jù)通信協(xié)議報(bào)文的報(bào)文域進(jìn)行了抽象分類,定義了如下五種報(bào)文域類型,數(shù)據(jù)通信協(xié)議報(bào)文的報(bào)文域可以被這五種報(bào)文域類型所涵蓋●比特報(bào)文域該種報(bào)文域里包含一個(gè)或多個(gè)比特,歸屬該種類型的報(bào)文域輸入的參數(shù)有■比特?cái)?shù)目;■該報(bào)文域的值;●字節(jié)報(bào)文域該種報(bào)文域里包含一個(gè)或多個(gè)字節(jié),歸屬該種類型的報(bào)文域輸入的參數(shù)有■字節(jié)數(shù)目;■該報(bào)文域的值;●字符串報(bào)文域該種報(bào)文域的內(nèi)容是一個(gè)字符串,歸屬該種類型的報(bào)文域輸入的參數(shù)有■一個(gè)字符串,如“hello world”;●長度報(bào)文域該種報(bào)文域的填充內(nèi)容是該報(bào)文某段內(nèi)容的長度,歸屬該種類型的報(bào)文域輸入的參數(shù)有■該報(bào)文域所表示的長度的單位以1字節(jié)為單位(如IPv6首部中的靜荷長度報(bào)文域);以4字節(jié)為單位(如IPv4首部中的首部長度報(bào)文域);以8字節(jié)為單位,且該報(bào)文域所表示的長度(字節(jié)數(shù))=(該報(bào)文域的值+1)*8,(如IPv6報(bào)文中路由擴(kuò)展首部中的長度報(bào)文域);■該報(bào)文域本身所占位置的寬度,如IPv4首部中的首部長度報(bào)文域占4個(gè)比特寬度,IPv6首部中的靜荷長度報(bào)文域占2個(gè)字節(jié)寬度;■該報(bào)文域所表示的長度的起始報(bào)文域序號;■該報(bào)文域所表示的長度的結(jié)束報(bào)文域序號;●檢驗(yàn)和報(bào)文域該種報(bào)文域的填充內(nèi)容是該報(bào)文某段內(nèi)容的檢驗(yàn)和的值,歸屬該種類型的報(bào)文域輸入的參數(shù)有■該報(bào)文域本身所占字節(jié)數(shù),如IPv4首部中的首部檢驗(yàn)和報(bào)文域占2個(gè)字節(jié);■該檢驗(yàn)和所采用的算法名稱,如反碼求和檢驗(yàn)和、ISO檢驗(yàn)和、CRC檢驗(yàn)和等;■該檢驗(yàn)和要計(jì)算的報(bào)文內(nèi)容的起始報(bào)文域序號;
■該檢驗(yàn)和要計(jì)算的報(bào)文內(nèi)容的結(jié)束報(bào)文域序號;以上幾種類型報(bào)文域的組合所能構(gòu)造的報(bào)文幾乎可以涵蓋數(shù)據(jù)通信領(lǐng)域的所有協(xié)議報(bào)文,也可以構(gòu)造出其它任意的異常報(bào)文。
參考圖2,該圖是本發(fā)明基于上述定義的報(bào)文域類型的報(bào)文生成方法的具體實(shí)現(xiàn)流程圖,主要包括如下步驟步驟11,將待生成的數(shù)據(jù)通信協(xié)議具體報(bào)文格式的各個(gè)報(bào)文域歸類到上述的比特報(bào)文域、字節(jié)報(bào)文域、字符串報(bào)文域、長度報(bào)文域以及檢驗(yàn)和報(bào)文域;步驟12,按照數(shù)據(jù)通信協(xié)議報(bào)文具體格式中的報(bào)文域順序依次對歸類的報(bào)文域進(jìn)行編號;步驟13,確定歸類到所述的比特報(bào)文域、字節(jié)報(bào)文域、字符串報(bào)文域中的各個(gè)報(bào)文域在待生成數(shù)據(jù)通信協(xié)議具體報(bào)文格式里所占長度及值,以及所述的長度報(bào)文域所占長度、所代表的長度單位、所代表長度范圍的起始報(bào)文域序號和結(jié)束報(bào)文域序號,所述的檢驗(yàn)和報(bào)文域所占長度、所檢驗(yàn)范圍的起始報(bào)文域序號和結(jié)束報(bào)文域序號以及所采用的檢驗(yàn)和算法;步驟14,按照報(bào)文域的編號順序,依次輸入該報(bào)文的所有報(bào)文域參數(shù)值,若是長度報(bào)文域或檢驗(yàn)和報(bào)文域,則輸入報(bào)文域的值置為0;步驟15,根據(jù)輸入報(bào)文域的參數(shù)值,依次生成各個(gè)報(bào)文域的比特流,并把該比特流附加到該報(bào)文已生成比特流的尾部;步驟16,把該報(bào)文的完整比特流轉(zhuǎn)換為字節(jié)流;步驟17,根據(jù)所述長度報(bào)文域所代表長度范圍的起始報(bào)文域序號和結(jié)束報(bào)文域序號確定所述長度報(bào)文域的值,然后把得到的值填入該長度報(bào)文域在上述報(bào)文字節(jié)流的相應(yīng)位置;步驟18,按照從最后一個(gè)檢驗(yàn)和報(bào)文域到最前一個(gè)檢驗(yàn)和報(bào)文域的順序,
表二在圖3中,文件頭對象(Header Object)是一個(gè)容器,包含若干個(gè)子對象,分別是文件描述對象(HMFD)、媒體描述對象(HMMD)、流描述對象(HMSD)、流索引表對象(STTB)和擴(kuò)展信息對象(INFO)。根據(jù)實(shí)際設(shè)置,HMF文件頭對象可能包含一個(gè)或多個(gè)HMMD、一個(gè)或多個(gè)HMSD,而STTB和INFO則是可選的。在存儲(chǔ)HMF文件頭時(shí),可以按圖4所示將結(jié)構(gòu)樹中的每個(gè)節(jié)點(diǎn)獨(dú)立存儲(chǔ),所有子對象在文件頭中的存儲(chǔ)位置是任意的,并在解析HMF文件頭時(shí)再行恢復(fù)上述子對象之間的樹狀結(jié)構(gòu),下面將逐一對樹狀結(jié)構(gòu)中的每類節(jié)點(diǎn)詳加說明。
1、文件頭對象(HMHD),用于對HMF文件頭進(jìn)行標(biāo)識。如表三所示,所有的子對象將作為HMHD的數(shù)據(jù)內(nèi)容存放在其Object data域中,HMHD的Object Size域記錄的是整個(gè)HMF文件頭的總長度。
表三2、文件描述對象(HMFD),用于描述HMF文件的全局信息,包括該<p>1.字節(jié)報(bào)文域,占6個(gè)字節(jié),值為e0000af0c661;2.字節(jié)報(bào)文域,占6個(gè)字節(jié),值為000c76dd94e6;3.字節(jié)報(bào)文域,占2個(gè)字節(jié),值為0800;4.比特報(bào)文域,占4個(gè)比特,值為4;5.長度報(bào)文域,以4字節(jié)為單位,占4個(gè)比特,起始報(bào)文域序號為4,結(jié)束報(bào)文域序號為15;6.字節(jié)報(bào)文域,占1個(gè)字節(jié),值為00;7.長度報(bào)文域,以1字節(jié)為單位,占2個(gè)字節(jié),起始報(bào)文域序號為4,結(jié)束報(bào)文域序號為21;8.字節(jié)報(bào)文域,占2個(gè)字節(jié),值為1739;9.比特報(bào)文域,占3個(gè)比特,值為0;10.比特報(bào)文域,占13個(gè)比特,值為00;11.字節(jié)報(bào)文域,占1個(gè)字節(jié),值為80;12.字節(jié)報(bào)文域,占1個(gè)字節(jié)字節(jié),值為01;13.檢驗(yàn)和報(bào)文域,占2個(gè)字節(jié),采用反碼求和算法,起始報(bào)文域序號為4,結(jié)束報(bào)文域序號為15;14.字節(jié)報(bào)文域,占4個(gè)字節(jié),值為0a6eb50c;15.字節(jié)報(bào)文域,占4個(gè)字節(jié),值為0a6eb55e;16.字節(jié)報(bào)文域,占1個(gè)字節(jié),值為08;17.字節(jié)報(bào)文域,占1個(gè)字節(jié),值為00;18.檢驗(yàn)和報(bào)文域,占2個(gè)字節(jié),采用反碼求和算法,起始報(bào)文域序號為16,結(jié)束報(bào)文域序號為21;19.字節(jié)報(bào)文域,占2個(gè)字節(jié),值為0400;20.字節(jié)報(bào)文域,占2個(gè)字節(jié),值為0900;21.字節(jié)報(bào)文域,占32個(gè)字節(jié),值為
6162636465666768696a6b6c6d6e6f7071727374757677616263646566676869按照圖2所示本發(fā)明的實(shí)現(xiàn)流程,可輸出該報(bào)文完整的字節(jié)流為e0000af0c661000c76dd94e608004500003c173900008001a4410a6eb50c0a6eb55e0800405c040009006162636465666768696a6b6c6d6e6f7071727374757677616263646566676869。
第二個(gè)例子為構(gòu)造IGMPv2 Membership Query報(bào)文,該報(bào)文的具體內(nèi)容如表2所示,報(bào)文域的值為16進(jìn)制
按順序輸入如下數(shù)據(jù)1.字節(jié)報(bào)文域,占6個(gè)字節(jié),值為01005e000009;2.字節(jié)報(bào)文域,占6個(gè)字節(jié),值為00c0dfb279af;3.字節(jié)報(bào)文域,占2個(gè)字節(jié),值為0800;4.比特報(bào)文域,占4個(gè)比特,值為4;5.長度報(bào)文域,以4字節(jié)為單位,占4個(gè)比特,起始報(bào)文域序號為4,結(jié)束報(bào)文域序號為16;6.字節(jié)報(bào)文域,占1個(gè)字節(jié),值為00;7.長度報(bào)文域,以1字節(jié)為單位,占2個(gè)字節(jié),起始報(bào)文域序號為4,結(jié)束報(bào)文域序號為20;8.字節(jié)報(bào)文域,占2個(gè)字節(jié),值為7c19;9.比特報(bào)文域,占3個(gè)比特,值為0;10.比特報(bào)文域,占13個(gè)比特,值為00;11.字節(jié)報(bào)文域,占1個(gè)字節(jié),值為01;12.字節(jié)報(bào)文域,占1個(gè)字節(jié)字節(jié),值為02;13.檢驗(yàn)和報(bào)文域,占2個(gè)字節(jié),采用反碼求和算法,起始報(bào)文域序號為4,結(jié)束報(bào)文域序號為16;14.字節(jié)報(bào)文域,占4個(gè)字節(jié),值為0a6e8a41;15.字節(jié)報(bào)文域,占4個(gè)字節(jié),值為e0000009;16.字節(jié)報(bào)文域,占4個(gè)字節(jié),值為94040000;17.字節(jié)報(bào)文域,占1個(gè)字節(jié),值為16;18.字節(jié)報(bào)文域,占1個(gè)字節(jié),值為00;19.檢驗(yàn)和報(bào)文域,占2個(gè)字節(jié),采用反碼求和算法,起始報(bào)文域序號為17,結(jié)束報(bào)文域序號為20;20.字節(jié)報(bào)文域,占4個(gè)字節(jié),值為e0000009;
21.字節(jié)報(bào)文域,占14個(gè)字節(jié),值為0000000000000000000000000000;按照圖2所示本發(fā)明的實(shí)現(xiàn)流程,可輸出該報(bào)文完整的字節(jié)流為01005e00000900c0dfb279af0800460000207c190000010234060a6e8a41e000000994040000160009f6e00000090000000000000000000000000000。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以作出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種報(bào)文生成方法,用于生成各種數(shù)據(jù)通信協(xié)議報(bào)文,其特征在于,包括如下步驟a、將各個(gè)數(shù)據(jù)通信協(xié)議具體報(bào)文格式的各種報(bào)文域抽象分類劃分為比特報(bào)文域、字節(jié)報(bào)文域、字符串報(bào)文域、長度報(bào)文域以及檢驗(yàn)和報(bào)文域;b、將待生成的數(shù)據(jù)通信協(xié)議具體報(bào)文格式的各個(gè)報(bào)文域歸類到所述的比特報(bào)文域、字節(jié)報(bào)文域、字符串報(bào)文域、長度報(bào)文域以及檢驗(yàn)和報(bào)文域;c、根據(jù)待生成的數(shù)據(jù)通信協(xié)議具體報(bào)文格式的各個(gè)報(bào)文域在其歸屬的所述比特報(bào)文域、字節(jié)報(bào)文域、字符串報(bào)文域、長度報(bào)文域或檢驗(yàn)和報(bào)文域的輸入?yún)?shù)值,整理輸出該數(shù)據(jù)通信協(xié)議報(bào)文的完整字節(jié)流。
2.根據(jù)權(quán)利要求1所述的報(bào)文生成方法,其特征在于,步驟b包括b1、按照數(shù)據(jù)通信協(xié)議報(bào)文具體格式中的報(bào)文域順序依次對歸類的報(bào)文域進(jìn)行編號;b2、確定歸類到所述的比特報(bào)文域、字節(jié)報(bào)文域、字符串報(bào)文域中的各個(gè)報(bào)文域在待生成數(shù)據(jù)通信協(xié)議具體報(bào)文格式里所占長度及值,以及所述的長度報(bào)文域所占長度、所代表的長度單位、所代表長度范圍的起始報(bào)文域序號和結(jié)束報(bào)文域序號,所述的檢驗(yàn)和報(bào)文域所占長度、所檢驗(yàn)范圍的起始報(bào)文域序號和結(jié)束報(bào)文域序號以及所采用的檢驗(yàn)和算法;b3、按照報(bào)文域的編號順序,依次輸入該報(bào)文的所有報(bào)文域參數(shù)值,若是長度報(bào)文域或檢驗(yàn)和報(bào)文域,則輸入報(bào)文域的值置為0;步驟c包括c1、根據(jù)輸入報(bào)文域的參數(shù)值,依次生成各個(gè)報(bào)文域的比特流,并把該比特流附加到該報(bào)文已生成比特流的尾部;c2、把該報(bào)文的完整比特流轉(zhuǎn)換為字節(jié)流;c3、根據(jù)所述長度報(bào)文域所代表長度范圍的起始報(bào)文域序號和結(jié)束報(bào)文域序號確定所述長度報(bào)文域的值,然后把得到的值填入該長度報(bào)文域在上述報(bào)文字節(jié)流的相應(yīng)位置;c4、按照從最后一個(gè)檢驗(yàn)和報(bào)文域到最前一個(gè)檢驗(yàn)和報(bào)文域的順序,依次根據(jù)所述檢驗(yàn)和報(bào)文域所檢驗(yàn)范圍的起始報(bào)文域序號和結(jié)束報(bào)文域序號,以及所采用的檢驗(yàn)和算法確定所述檢驗(yàn)和報(bào)文域的值,然后把得到的值填入該檢驗(yàn)和報(bào)文域在上述報(bào)文字節(jié)流的相應(yīng)位置;c5、輸出該報(bào)文的完整字節(jié)流。
全文摘要
本發(fā)明涉及一種報(bào)文生成方法,用于生成各種數(shù)據(jù)通信協(xié)議報(bào)文,該方法包括如下步驟將各個(gè)數(shù)據(jù)通信協(xié)議具體報(bào)文格式的各種報(bào)文域抽象分類劃分為比特報(bào)文域、字節(jié)報(bào)文域、字符串報(bào)文域、長度報(bào)文域以及檢驗(yàn)和報(bào)文域;將待生成的數(shù)據(jù)通信協(xié)議具體報(bào)文格式的各個(gè)報(bào)文域歸類到所述的比特報(bào)文域、字節(jié)報(bào)文域、字符串報(bào)文域、長度報(bào)文域以及檢驗(yàn)和報(bào)文域;根據(jù)待生成的數(shù)據(jù)通信協(xié)議具體報(bào)文格式的各個(gè)報(bào)文域在其歸屬的所述比特報(bào)文域、字節(jié)報(bào)文域、字符串報(bào)文域、長度報(bào)文域或檢驗(yàn)和報(bào)文域的輸入?yún)?shù)值,整理輸出該數(shù)據(jù)通信協(xié)議報(bào)文的完整字節(jié)流。本發(fā)明可實(shí)現(xiàn)生成任意數(shù)據(jù)通信協(xié)議的報(bào)文。
文檔編號H04L29/06GK1859222SQ20051003640
公開日2006年11月8日 申請日期2005年8月9日 優(yōu)先權(quán)日2005年8月9日
發(fā)明者吳哲 申請人:華為技術(shù)有限公司