16、在類型定義和信息對(duì)象集中使用擴(kuò)展標(biāo)記有什么區(qū)別?擴(kuò)展標(biāo)記是否不可見?
擴(kuò)展標(biāo)記就類型定義而言是不可見的,但就簡(jiǎn)單表約束和組件關(guān)系約束而言并非不可見。
類型本身是可擴(kuò)展的,與限制它是可擴(kuò)展的對(duì)象集之間是有區(qū)別的。在類型是可擴(kuò)展的情況下,它天生可以采用可擴(kuò)展約束允許的任何值。例如,
INTEGER(1..8, ...)
可以隨時(shí)假設(shè)任何有效值。將此與使用簡(jiǎn)單表約束進(jìn)行約束的 INTEGER類型進(jìn)行對(duì)比,在這種類型中,此類類型只能假定在該類型被編碼/解碼時(shí)恰好包含在信息對(duì)象集中的那些值。隨著程序的運(yùn)行,這可能會(huì)隨著時(shí)間的推移而變化,因?yàn)榭蓴U(kuò)展信息對(duì)象集中的對(duì)象集可能會(huì)在運(yùn)行時(shí)發(fā)生變化。
在BER、DER和 CER的情況下,這種區(qū)別不太重要,其中類型的可擴(kuò)展性在其編碼方式中不發(fā)揮作用,但在PER 中起主要作用。在 PER 中,使用擴(kuò)展標(biāo)記“...”定義的類型的值使用1 位前綴進(jìn)行編碼,當(dāng)設(shè)置為0 時(shí),意味著后面的值在擴(kuò)展根中,因此以優(yōu)化的形式編碼。(例如,上面示例中的值 1-8 將被編碼為3 位)。但是,當(dāng)設(shè)置為 1 時(shí),意味著后面的值以更通用的形式編碼。(例如,上例中不在 1-8 范圍內(nèi)的值占用16 位或更多位)。
17、你能解釋一下類型可擴(kuò)展性在PER 中是如何工作的嗎?
考慮以下兩個(gè)ASN.1 語(yǔ)法定義:
A::= SEQUENCE { --defined in v1
f1BOOLEAN,
f2BOOLEAN,
...,
}
A::= SEQUENCE { --defined in v2
f1BOOLEAN,
f2BOOLEAN,
...,
e1BOOLEAN OPTIONAL,
e2BOOLEAN
}
類型可擴(kuò)展性背后的目的是允許不理解新字段的V1 應(yīng)用程序接收具有它無法識(shí)別的字段的V2 消息,并將它們視為由V1 應(yīng)用程序發(fā)送,同樣,對(duì)于V2 應(yīng)用程序來說接收缺少字段的 V1 消息。如果 V2 應(yīng)用程序收到缺少?gòu)?qiáng)制擴(kuò)展添加的消息,它可以安全地假定該消息是由V1 應(yīng)用程序發(fā)起的。
只有在擴(kuò)展附加位圖中有一個(gè)位表示存在/不存在哪些擴(kuò)展附加值時(shí),才必須對(duì)擴(kuò)展標(biāo)記之后的強(qiáng)制字段進(jìn)行編碼。因此,在強(qiáng)制擴(kuò)展附加 y 之后定義了擴(kuò)展附加x,并且 x的值存在于編碼中,那么y 的值必須存在。此外,如果強(qiáng)制擴(kuò)展附加 y 是SEQUENCE 中的最后一個(gè)組件,并且在擴(kuò)展附加位圖中存在一個(gè)位,則該位必須設(shè)置為1,因?yàn)樵撐坏拇嬖诒砻飨⒌陌l(fā)起者知道這個(gè)擴(kuò)展添加,因此它的存在是強(qiáng)制性的。只有當(dāng)消息是從未定義強(qiáng)制擴(kuò)展添加的早期版本的消息定義中繼時(shí),才可以省略它(在這種情況下,擴(kuò)展添加位圖中將沒有位)。ITU-T 建議X.680(2008) 25.15 注2 中指出了這一點(diǎn):
作為擴(kuò)展添加但不包含在“ExtensionAdditionGroup”中的“ComponentType”如果未標(biāo)記為OPTIONAL 或DEFAULT,則應(yīng)始終對(duì)其進(jìn)行編碼,除非抽象值是從使用較早版本抽象語(yǔ)法的發(fā)送者中繼的其中未定義“ComponentType”。
換句話說,PER將標(biāo)記為 OPTIONAL的擴(kuò)展添加與非 OPTIONAL的擴(kuò)展添加完全相同。
審核編輯:劉清
-
編碼
+關(guān)注
關(guān)注
6文章
943瀏覽量
54838 -
CeR
+關(guān)注
關(guān)注
0文章
4瀏覽量
7274
原文標(biāo)題:?OSS Nokalva:ASN.1問答時(shí)間(4)
文章出處:【微信號(hào):哲想軟件,微信公眾號(hào):哲想軟件】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論