asn.1和基本編碼規(guī)則講解_第1頁(yè)
asn.1和基本編碼規(guī)則講解_第2頁(yè)
asn.1和基本編碼規(guī)則講解_第3頁(yè)
asn.1和基本編碼規(guī)則講解_第4頁(yè)
asn.1和基本編碼規(guī)則講解_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、ASN.1 和基本編碼規(guī)則作者:亢朝峰業(yè)務(wù)四室摘 要: 該文說(shuō)明了ASN.1 和基本編碼規(guī)則( BER) 的原理和應(yīng)用。文中, 首先描述了ASN.1 ,并給出了幾種常見(jiàn)類型的相應(yīng)的例子,來(lái)說(shuō)明ASN.1 的應(yīng)用;接著對(duì)基本編碼規(guī)則(BER) ,通過(guò)對(duì)MAP中的LocationRequest 的 請(qǐng) 求 操 作 消息的參數(shù)進(jìn)行編碼的具體實(shí)現(xiàn),來(lái)說(shuō)明基本編碼規(guī)則的工作原理。總之,ASN.1 和基本編碼規(guī)則實(shí)際中有非常廣泛的應(yīng)用。關(guān)鍵詞:ASN.1 基本編碼規(guī)則MAP消息LocationRequestASN.1 作為一種數(shù)據(jù)表示標(biāo)準(zhǔn)產(chǎn)生于20 世紀(jì) 80 年代早期的開放系統(tǒng)互聯(lián)Internet 網(wǎng)絡(luò)

2、模型,但 OSI 模型并沒(méi)有得到廣泛的應(yīng)用,而 ASN.1 標(biāo)準(zhǔn)繼續(xù)使之發(fā)展,今天在實(shí)際中已有大量應(yīng)用,這些應(yīng)用包括:3G移動(dòng)系統(tǒng):使用 ASN.1 標(biāo)準(zhǔn) 數(shù)據(jù)交換的第三代移動(dòng)通信網(wǎng)絡(luò)。這一系統(tǒng)基于UMT(通用S移動(dòng)通信系統(tǒng))標(biāo)準(zhǔn),其使用了ASN.1 和分組編碼標(biāo)準(zhǔn)(PER) 。IP 語(yǔ)音:在通信領(lǐng)域中的另一個(gè)重要應(yīng)用是通過(guò)包轉(zhuǎn)換網(wǎng)絡(luò)(如因特網(wǎng))傳遞語(yǔ)音數(shù)據(jù)。多媒體數(shù)據(jù)信號(hào)編解碼器(CODE)標(biāo)準(zhǔn)(CH.323 等等)基于ASN.1 并且使用于分組編碼標(biāo)準(zhǔn)來(lái)獲取理想的數(shù)據(jù)傳輸速率。安全應(yīng)用:因特網(wǎng)安全授權(quán)同樣也使用了ASN.1。高級(jí)編碼標(biāo)準(zhǔn)在數(shù)據(jù)表示方面形成了一個(gè)方便的、平臺(tái)無(wú)關(guān)的標(biāo)準(zhǔn),比加密

3、要優(yōu)越。PKIX、 PKCS和 X.509 也是我們所熟悉的標(biāo)準(zhǔn),它們也是基于ASN.1 的。傳統(tǒng)通信網(wǎng)絡(luò):ASN.1 和基本編碼規(guī)則(BER)已經(jīng)在主要通信領(lǐng)域流行了很長(zhǎng)一段時(shí)間,所有的 ss7 到 ISDN的一切都使用了ASN.1 BER信息在各種類型的設(shè)備和計(jì)算機(jī)之間傳遞信號(hào)。軍事和空間應(yīng)用:美國(guó)國(guó)家宇航局( NASA) 在其航空通信網(wǎng)規(guī)范中,也正在使用ASN.1 和分組編碼規(guī)則作為空對(duì)地或地對(duì)空協(xié)議。眾所周知,抽象是解決軟件開發(fā)問(wèn)題的有效手段。利用抽象,設(shè)計(jì)人員可以定義系統(tǒng)的一個(gè)部分而不用關(guān)注這個(gè)部門實(shí)際上是如何實(shí)現(xiàn)或者表達(dá)的。這一方法使得實(shí)現(xiàn)open,它簡(jiǎn)化了定義過(guò)程,使得在實(shí)現(xiàn)部件

4、之前可以聲明某些“公理”、并且在設(shè)計(jì)高層部件時(shí)假定下層部件是可以實(shí)現(xiàn)的。抽象是現(xiàn)代多數(shù)軟件規(guī)范的特點(diǎn)。作為當(dāng)今最復(fù)雜的系統(tǒng)之一,開放系統(tǒng)互聯(lián)(OSI) 是一個(gè)包含了大量抽象的例子。OSI是一個(gè)國(guó)際通用的標(biāo)準(zhǔn)體系,從物理層一直到用戶層,規(guī)劃了計(jì)算機(jī)之間的互聯(lián)。高層次的對(duì)象被抽象定義,并將由底層的對(duì)象來(lái)實(shí)現(xiàn)。比如, 某層的一個(gè)服務(wù)可能需要在計(jì)算機(jī)之間傳遞某個(gè)抽象對(duì)象;某一底層則可能提供關(guān)于0、 1 字符串的實(shí)現(xiàn),利用一些編碼規(guī)則把高層的抽象對(duì)象轉(zhuǎn)換成這些字符串。OSI 的說(shuō)明抽象對(duì)象的方法叫做抽象語(yǔ)法標(biāo)記(ASN.1,在X.208 中定義) ,而用0、 1字符來(lái)表示這樣的對(duì)象的規(guī)則集合叫做基本編碼

5、規(guī)則( BER) 。 ASN.1 是一個(gè)很靈活的標(biāo)記法,它允許定義眾多的數(shù)據(jù)類型從整數(shù)和位串等簡(jiǎn)單類型到如集合、 序列等的結(jié)構(gòu),還可以是其它復(fù)雜定義的類型。BER描述了如何將ASN.1 類型表示和編碼成八位字節(jié)串。通常不止一種編碼給定數(shù)據(jù)的方法,另一種叫做DER( Distinguished Encoding Rules )的編碼集合,它是BER的子集,其特點(diǎn)是給每一個(gè)ASN.1 值一個(gè)唯一的編碼。圖 1.1 說(shuō)明了抽象語(yǔ)法、編碼規(guī)則之間的關(guān)系。從圖中可以看出,抽象語(yǔ)法利用一些正式的規(guī)則來(lái)描述各種用戶數(shù)據(jù);而編碼規(guī)則采用適當(dāng)?shù)姆椒▽⒂贸橄笳Z(yǔ)法描述的用戶對(duì)象定義為適合物理傳輸信道傳輸?shù)母袷健?.

6、1 抽象語(yǔ)法、編碼規(guī)則之間的關(guān)系二、抽象語(yǔ)法標(biāo)記(ASN.1 )ASN.1(Abstract Syntax Notation One)是一種用于描述結(jié)構(gòu)化客體結(jié)構(gòu)和內(nèi)容的語(yǔ)言。它定義在ISO 8824 或 ITU-T X.208 中。 ASN.1 類似于高級(jí)程序設(shè)計(jì)語(yǔ)言的數(shù)據(jù)描述部分。它提供若干語(yǔ)言構(gòu)件用以定義類型和值,類型對(duì)應(yīng)結(jié)構(gòu),值對(duì)應(yīng)內(nèi)容。但和其他程序設(shè)計(jì)語(yǔ)言不同的是,ASN.1 的類型不需要機(jī)器實(shí)現(xiàn)。一個(gè) ASN.1 的值可以用不同的方法表示:打印值是用打印的形式表示的ASN.1 的值, 對(duì)人而言,它是一種嚴(yán)格的表示法,因?yàn)樗槐匾蕾嚾魏螜C(jī)器的體系結(jié)構(gòu);本地值是由程序設(shè)計(jì)語(yǔ)言或系統(tǒng)用來(lái)

7、表示ASN.1 的值; 傳送值表示傳送中的ASN.1 的值, 它是 ASN.1 值的比特流形式,是根據(jù)一組稱之為傳送文法(Transfer Syntax) 的規(guī)則而得到的。ASN.1 值的表示 法決定了它的開發(fā)性和互操作性,并成為一種通用的信息交換的表示法。ASN.1 可以定義各種各樣的簡(jiǎn)單類型數(shù)據(jù),也可以定義十分復(fù)雜的數(shù)據(jù)結(jié)構(gòu)類型。2 1 ASN.1 的模塊ASN.1 的基本單位是模塊( module) 。 ASN.1 模塊實(shí)際上是由一組類型定義和值定義組成的。 類型定義就是說(shuō)明類型的名稱和類型的格式,值定義則是規(guī)定將什么樣的具體值賦給某一類型的變量。ASN.1 模塊的一般格式如下:Modu

8、leDefinition :=ModuleIdentifierDEFINITIONS TagDefault “:= ” BEGIN EXPORTS IMPORTS AssignmentList END 其中,ModuleIdentifier 是模塊標(biāo)識(shí)符,也就是模塊的名稱( 模塊名的第一個(gè)字母必須大寫 ) ; IMPORTS結(jié)構(gòu)規(guī)定了模塊中某些定義是從其他模塊中移植過(guò)來(lái)的; EXPORTS結(jié)構(gòu)用于定義其他模塊可以移植的類型或值。類型定義和值定義是通過(guò)類型分配(type assignment )和值分配(value assignment )來(lái)完成的。類型分配和值分配包含于模塊的Assignmen

9、tList 中。類型分配和值分配的格式如下:類型定義語(yǔ)法: <type name> := type 類型的賦值:<value name> <type> := <value>2 2 簡(jiǎn)單類型1 INTEGERASN.1 中沒(méi)有限制整型的位數(shù)。也就是說(shuō),整數(shù)類型。與一般程序設(shè)計(jì)語(yǔ)言不同的是,INTEGER可以是任意大小的整數(shù)。定義一個(gè)整型類型CounterCouter := INTEGERIpAddress := Octetstring 變量的賦值:例子:ipInReceives Counter := 24502 BOOLEAN布爾型。取值為TURE

10、或 FALSE.3 REAL實(shí)數(shù)類型。和整型一樣,ASN.1中對(duì)實(shí)數(shù)的精度沒(méi)有限制。每個(gè)實(shí)數(shù)都可以表示為M*BE,即三元組M,B,E 的形式,其中M是尾數(shù),B是級(jí)數(shù),E是指數(shù)。4 ENUMERATED枚舉類型。枚舉類型實(shí)際上是一組個(gè)數(shù)有限的整型值。可一個(gè)每個(gè)整型值賦以不同的意義。5 BIT STRING位串類型,由零個(gè)或多個(gè)比特組成的有序位串。位串的值可以由對(duì)應(yīng)的二進(jìn)制或者十六進(jìn)制串表示。其中左邊的位由較高的權(quán)重。6 OCTET STRING八位位組串。由零個(gè)或多個(gè)八位位組組成的有序串。八位位串可以用十進(jìn)制、二進(jìn)制或者十六進(jìn)制表示。7 OBJECT IDENTIFIER對(duì)象標(biāo)識(shí)符。從對(duì)象樹派生

11、出的一系列點(diǎn)分?jǐn)?shù)字串的形式,用來(lái)標(biāo)識(shí)對(duì)象。8 NULL空值類型。這是最簡(jiǎn)單的一種類型,它僅包含一個(gè)值NULL。主要由于位置的填充。如果某時(shí)刻無(wú)法得知數(shù)據(jù)的準(zhǔn)確值,那么最簡(jiǎn)單的方法就是將這一數(shù)據(jù)定義為NULL類型。9 CHARACTER STRING字符串類型。ASN.1中定義了一些字符集不完全相同的CHARACTER STRIN類型。不同類 G型包含的字符集不同。字符串由雙引號(hào)擴(kuò)起。字符串類型包括:NumericString :包含數(shù)字0到 9以及空格;PrintableSting :包含所有大小寫字母、數(shù)字、標(biāo)點(diǎn)和空格;IA5String :由取自IA5( 5號(hào)國(guó)際字符表)的字符組成,它和A

12、SCII 碼基本相同;VisibleString :由取自IA5的圖形字符組成;GeneralString :包含所有的標(biāo)準(zhǔn)字符。2 2 構(gòu)造類型1 SEQUENCE序列類型,是包含零個(gè)或者多個(gè)組成元素的有序列表。列表的不同元素可以屬于不同的數(shù)據(jù)類型。結(jié)構(gòu)類型定義SequenceType :=SEQUENCEElementTypeList |SEQUENCE ElementTypeList :=ElementType |ElementTypeList,ElementTypeElementType :=NamedType |NamedType OPTIONAL |NamedType DEFAUL

13、T Value |COMPONENTS OF Type有序列表的每個(gè)元素是由元素名稱和元素類型組成。元素類型可以是簡(jiǎn)單類型,也可以是定義的其他構(gòu)造類型。元素類型標(biāo)識(shí)符后可以跟OPTIONAL或 DEFAULT關(guān)鍵字。OPTIONAL關(guān)鍵字表示在序列類型的實(shí)例中該元素可以出現(xiàn),也可以不出現(xiàn)。DEFAULT關(guān)鍵字表示序列類型的實(shí)例中該元素具有事先指定的缺省值。COMPONENOTSF 關(guān)鍵字表示它包含了給定序列中的所有組成元素。例子:UserAccount := SEQUENCE username VisibleString, password VisibleString, accountNr I

14、NTEGER 結(jié)構(gòu)賦值:SequenceValue :=ElementValueList | ElementValueList :=NamedValue |ElementValueList,NamedValue例子:myAccount UserAccount := username "steffen", password "jane51", accountNr 4711 2 SEQUENCE OF單純序列(數(shù)組)類型。即序列中的各項(xiàng)屬于同一類型的ASN.1類型。SequenceOfType := SEQUENCE OF Type |SEQUENCE例子:

15、MemberCountries := SEQUENCE OF VisibleString賦值:SequenceOfValue := ValueList | ValueList :=Value |ValueList,ValueeuMembers MemberCountries := "Austria", "Belgium", "Denmark","Finland", "France", "Germany","Greece", "Ireland&qu

16、ot;, "Italy","Luxembourg", "The Netherlands","Portugal", "Spain", "Sweden", "United Kingdom" 3 SET集合類型,是包含零個(gè)或者多個(gè)組成元素的無(wú)序集合。這些元素的順序無(wú)任何意義,但是他們之間必須是不相同的,組成元素的類型可以為不同的ASN.1 類型。SetType :=SETElementTypeList |SET 例子:UserAccount := SET use

17、rname VisibleString,password VisibleString, accountNr INTEGER 賦值:SetValue := ElementValueList | 例子:myAccount UserAccount := username "steffen",password "jane51", accountNr 4711 4 SET OF單純集合類型,是包含零個(gè)或者多個(gè)組成元素的無(wú)序集合。這些組成元素必須為相同的ASN.1 類型。SetOfType := SET OF Type |SET例子:Keywords := SET

18、OF VisibleString賦值:SetOfValue := ValueList | 例子:someASN1Keywords Keywords :="INTEGER", "BOOLEAN", "REAL"5 CHOINCE選擇類型,包含一個(gè)可供選擇的數(shù)據(jù)類型列表。CHOICE類型的每一個(gè)值都是其中某一數(shù)據(jù)類型的值。數(shù)據(jù)可以在不同情況下取不同的值。6 ANY如果在定義數(shù)據(jù)時(shí)還不能確定數(shù)據(jù)的類型,可以使用ANY型。ANY型可以被任何ASN.1類型置換。7 Tagged標(biāo)簽類型。標(biāo)簽時(shí)一個(gè)標(biāo)簽類(class )和一個(gè)標(biāo)簽號(hào)(class

19、number )組成。標(biāo)簽號(hào)是十進(jìn)制非負(fù)整數(shù)。共有四種不同的標(biāo)簽類型。通用類標(biāo)簽是ASN.1 標(biāo)準(zhǔn)定義的,除了CHOICE和 ANY類型之外,所有的簡(jiǎn)單類型和結(jié)構(gòu)類型都具有統(tǒng)一分配的唯一標(biāo)簽。應(yīng)用類是為具體應(yīng)用協(xié)議標(biāo)準(zhǔn)定義的,在ASN.1 模塊中必須是唯一的。私有類僅對(duì)某個(gè)企業(yè)有效,它必須在該企業(yè)內(nèi)是唯一的。上下文有關(guān)類主要由于消除歧義性,它在結(jié)構(gòu)的上下文必須是唯一的。2 3 子類型通過(guò)對(duì)某些類型加以限制,可以定義他們的子類型( subtype ) 。 子類型的值集合是其父類型值集合的子集。定義子類型的過(guò)程可以嵌套。2 4 其他類型1 GeneralizedTime表示時(shí)間的類型,它有三種不同

20、的表示方法:表示本地時(shí)間通用時(shí)間標(biāo)準(zhǔn)(UTC)通過(guò)計(jì)算本地時(shí)間和UTC時(shí)間的差值來(lái)表示時(shí)間2 UTCTimeUTCTime也是表示時(shí)間的,只是精度不同,它只能精確到分或者秒。3 External外部類型,其可區(qū)分值不能從其外部特征導(dǎo)出,但能夠從一個(gè)值的編碼中導(dǎo)出,這些值可以,但不必用ASN.1 描述,因而其編碼也可以不必使用ASN.1 編碼規(guī)則。4 Object descriptor對(duì)象描述符,點(diǎn)分?jǐn)?shù)字串形式的對(duì)象標(biāo)識(shí)符不具備可讀性,為了更好的描述對(duì)象,可以使用對(duì)象描述符。對(duì)象描述符以可讀文本的形式簡(jiǎn)單地介紹對(duì)象。但是對(duì)象描述符不具有唯一標(biāo)識(shí)性,因此不能取代對(duì)象標(biāo)識(shí)符作為對(duì)象的標(biāo)識(shí)。三、基本編

21、碼規(guī)則ASN.1 數(shù) 據(jù) 值 的 編 碼 由 按 下 列 順 序 排 列 的 四 部 分 組 成 : 標(biāo) 識(shí) 符 八 比 特 組 、標(biāo)識(shí)符八比特組長(zhǎng) 度八比特組內(nèi)容八比特組內(nèi)容結(jié)束八比特組3.1 ASN.1 編碼的結(jié)構(gòu)長(zhǎng) 度 八 比 特 組 、 內(nèi) 容 八 比 特 組 以 及 內(nèi) 容 結(jié) 束 八 比 特 組 。 如 圖 3.1 所 示 。 其 中 內(nèi)容八比特組只有當(dāng)長(zhǎng)度八位組的值要求內(nèi)容八比特組出現(xiàn)時(shí)才出現(xiàn)。3.1 標(biāo)識(shí)符八比特組標(biāo) 識(shí) 符 八 比 特 組 對(duì) 數(shù) 據(jù) 值 類 型 的 ASN.1 標(biāo) 記 進(jìn) 行 編 碼 。 ASN.1 標(biāo) 記 由 標(biāo) 記 類 和 序 號(hào) 組 成 。標(biāo) 記 類

22、占 據(jù) 高 三 位 比 特 位 。第 8、 7比 特 的 內(nèi) 容 由 表 3.1 所 決 定 。 第6比特置“1”表示 編 碼 方式 為構(gòu)造編碼方式,置“0”表示編碼方式為元編碼方式 ,其 余 第 5 至 第 1 比 特 表 示 序 號(hào) ( 二 進(jìn) 制 整 數(shù) ,第 5 比 特 為 最 高 比 特 ) ,如 圖 3.2 所示。若 序號(hào)大于 或 等 于31 , 則此5比特置“1”,表示后隨一個(gè)或多個(gè)后繼八比特組,后繼八 比 特 組 除最 后一個(gè)八比特組之外的每個(gè) 八比特 組的第8比特置“1”,最后一個(gè) 八 比 特 組的 第8比特置“ 0”,以第一個(gè)后 繼八比 特組的第7比特為最高比特,最 后 一

23、個(gè) 八 比特 組 的 第 1 比特為 最 后 一 個(gè) 比 特 ,表 示 標(biāo) 記 序 號(hào) 的無(wú)符號(hào)二進(jìn)制整 數(shù) 的編 碼 ,如 圖 3.3所 示。表 3.1 標(biāo)記種類的編碼標(biāo)記類第 8 比 特第 7 比 特普通00應(yīng)用01上下文指定10私用11后繼八比特組引導(dǎo)八比特組第二個(gè)八比特組標(biāo)記類P/C11111最后一個(gè)八比特組+ + +標(biāo)記序號(hào)3.3 ASN.1 標(biāo)識(shí)符八比特組標(biāo)識(shí)符八比特組BITS 87 6 5 4 3 2 1標(biāo)記類P/C標(biāo)記序號(hào)0 =元編碼1 =構(gòu)造編碼3.2 ASN.1 標(biāo)識(shí)符八比特組(低標(biāo)記序號(hào))3.2 長(zhǎng)度八比特組用 長(zhǎng) 度 八 比 特 組 表 示 內(nèi) 容 八 比 特 組 中

24、的 八 比 特 組 數(shù) 。長(zhǎng) 度 八 比 特 組 分 為 確 定形和非確定形兩種。其劃分依據(jù)是:若編碼為元編碼則用確定形;若編碼 是構(gòu)造的且都是立即可用的,則可用確定形或非確定形,由發(fā)送端選擇;若 編碼是構(gòu)造的且不都是立即可用的,則用非確定形。對(duì) 于 確 定 型 ,長(zhǎng) 度 八 比 特 組 又 分 為 長(zhǎng) 形 式 和 短 形 式 兩 種 。只 有 當(dāng) 內(nèi) 容 八 比 特 組 的 組 數(shù) 小 于 或 等 于 127 時(shí) ,才 使 用 短 形 式 。在 短 形 式 中 ,長(zhǎng) 度 八 比 特 組 由 單 個(gè) 比 特 組 組 成 ,其 中 第 8比 特 為“ 0”,第 七 比 特 至 第 1 比 特 是

25、 內(nèi) 容 八 比 特 組 中的八比特組組數(shù)的編碼。在長(zhǎng)形式中,長(zhǎng)度八比特組由一個(gè)初始八比特組 和 一 個(gè) 或 幾 個(gè) 后 繼 八 比 特 組 組 成 。初 始 八 比 特 組 的 第8比特 置“ 1”,第 七 至 1比特為長(zhǎng)度八比特組為后繼八比特組的組數(shù)的編碼;后繼八比特組的編碼等 于內(nèi)容八比特組中的八比特組數(shù)的無(wú)符號(hào)二進(jìn)制整數(shù)編碼。確定形的編碼如 圖 3.4 所 示 。對(duì) 于 非 確 定 型 , 長(zhǎng) 度 八 比 特 組 由 單 個(gè) 八 比 特 組 80h 組 成 , 表 示 由 內(nèi) 容 結(jié) 束八 比 特 組 結(jié) 束 內(nèi) 容 八 比 特 組 。 非 確 定 形 編 碼 如 圖 3.5 所 示

26、。3.4 ASN.1 確 定 型 編 碼 結(jié) 構(gòu)標(biāo)識(shí)符八比特組長(zhǎng)度八比特組內(nèi)容八比特組內(nèi)容結(jié)束八比特組表明內(nèi)容八比特組由內(nèi)容結(jié)束表明內(nèi)容八比特組八比特組結(jié)束=1000 0000中不再有編碼圖 3.5 ASN.1 非 確 定型 編 碼 結(jié)構(gòu)3.3 內(nèi)容八比特組由 零 、一 個(gè) 或 多 個(gè) 八 比 特 組 組 成 的 數(shù) 據(jù) 值 編 碼 。內(nèi) 容 八 比 特 組 的 編 碼 依 賴 于數(shù)據(jù)值的類型。3.4 內(nèi)容結(jié)束八比特在 非 確 定 型 編 碼 時(shí) 出 現(xiàn) , 由 兩 個(gè) 零 八 比 特 組 組 成 , 如 圖 3.5 所 示 。四、 MAP 中基本編碼規(guī)則的應(yīng)用由 協(xié) 議 ANSI TIA/E

27、IA41D第六章,所 有 的MAP消息(包括操作請(qǐng)求和操作 響 應(yīng) ) 都 是 SET類 型 。消息 可 能為空 (一 般 是操 作響應(yīng)) ,如InterSystemAnswer 操 作的響 應(yīng) 為 空。若消息 不為 空 ,則帶有一個(gè)或多個(gè)參數(shù),這些參數(shù)或?yàn)楸剡x項(xiàng),或?yàn)榭蛇x項(xiàng)。4 1 參數(shù)結(jié)構(gòu)定義以 LocationRequest 的 請(qǐng) 求 操 作 為 例 , 其 在 協(xié) 議 IA/EIA/IS-771中 數(shù) 據(jù) 結(jié)構(gòu)描述如下:由上表可知:該消息共有13 個(gè)參數(shù),其中4 個(gè)必選參數(shù),9 個(gè)可選參數(shù),因此在編碼時(shí)它的參數(shù)個(gè)數(shù)為:4 13。相應(yīng)的根據(jù)協(xié)議ANSI TIA/EIA 41D 和 AS

28、N.1 規(guī)則, 在程序中的數(shù)據(jù)結(jié)構(gòu)定義如下:/* 6.4.2.27 Locationrequest */typedef struct cmBillID_TtBillID;cmBCDDigitsL_TtDigits;cmMSCID_TtMscid;BYTEbSysTypeCode;BITSbtCPNFlag :1;BITSbtCPN1Flag:1;BITSbtCPN2Flag:1;BITSbtCPSFlag: 1;BITSbtMscinFlag: 1;BITSbtPcssnFlag: 1;BITSbtRNDFlag: 1;BITSbtRPNFlag: 1; /*added in 771 */BI

29、TSbtRSFlag: 1;BITSbtTATFlag: 1;BITSbtTCFlag: 1;BITSbtTTFlag :1; /*added in 771 */BITSbtWCFlag: 1; /*added in 771 */BITSbtRsv: 3;cmCallPartName_TtCallPartName;cmCPNumDig1_TtCPNumDig1;cmCPNumDig2_TtCPNumDig2;cmCPSubaddr_TtCPSubaddr;cmMSCIN_TtMscin;cmPCSSN_TtPcssn;cmRedirNumDig_TtRedirNumDig;cmRedirPar

30、tName_T tRedirPartName; /*added in 771 */cmRedirSubaddrTtRedirSubaddr;BYTEbTermAccType;cmTranCapa_TtTranCapa;cmTrigType_TtTrigType; /*added in 771 */cmWINCapa_TtWINCapa;/*added in 771 */ cmLocReqReq_T;4 2 參數(shù)結(jié)構(gòu)編碼利用基本編碼規(guī)則將這個(gè)結(jié)構(gòu)進(jìn)行編碼,結(jié)果如下(改數(shù)據(jù)來(lái)自實(shí)驗(yàn)局的真實(shí)碼流):81 07 00 0D 01 00 04 24 00 84 0A 01 00 210B 31 33 3

31、9 09 00 03 95 03 00 0D 01 96 01 279F 50 0A 02 30 21 0B 31 33 39 09 00 F1 9F 5E0C 00 01 61 0F 64 00 03 39 39 19 00 F0 9F 2005 09 27 27 27 08 9F 77 01 FC 9F 7B 02 FF 3E9F 82 17 01 20 BF 82 18 0C 9F 82 15 03 FF FF1F 9F 82 19 01 03下面對(duì)各個(gè)參數(shù)的編碼(長(zhǎng)生碼流)過(guò)程進(jìn)行具體說(shuō)明:I 參數(shù) tBillID第一部分:在協(xié)議 TIA/EIA-41 的表 Table 112 TIA

32、/EIA-41 MAP Parameter Identifiers中可以查到Parameter Identifier Code 為 1 0 0 0 0 0 0 1B (二進(jìn)制),也就是0x81 (十六進(jìn)制),可以得到81:計(jì)費(fèi)ID第二部分由基本編碼規(guī)則可知,第二部分是長(zhǎng)度 八 比 特 組 , 同 樣 在協(xié)議 TIA/EIA-41 的 6.5.2.16節(jié) Figure 23 BillingID parameter 可知,其長(zhǎng)度為7,可以得到長(zhǎng) 度 八 比 特 組 為 0X0707:參數(shù)長(zhǎng)度第三部分由基本編碼規(guī)則可知,第三部分是內(nèi)容八比特組,其長(zhǎng)度為7:00 0D 01 00 04 24 00同理,可以對(duì)其他參數(shù)進(jìn)行編碼。2參數(shù)tDigits84:數(shù)字(撥號(hào) )0A:參數(shù)長(zhǎng)度01 00 21 0B 31 33 39 09 00 033參數(shù)tMscid95: MSCID(始發(fā)系統(tǒng))03:參數(shù)長(zhǎng)度00 0D 014參數(shù)bSysTypeCode96:系統(tǒng)類型碼01:參數(shù)長(zhǎng)度275參數(shù)tCPNumDig19F 50 :主叫號(hào)碼數(shù)字10A:參數(shù)長(zhǎng)度02 30 21 0B 31 33 39 09 00 F16參數(shù)tMscin9F 5E : MSC識(shí)別數(shù)字0C:參數(shù)長(zhǎng)度00 01 61 0F 64 00 03 39 39 19 00 F07參數(shù)tPcssn9F 20

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論