抽象語法表示ASN.1 填空題_第1頁
抽象語法表示ASN.1 填空題_第2頁
抽象語法表示ASN.1 填空題_第3頁
抽象語法表示ASN.1 填空題_第4頁
抽象語法表示ASN.1 填空題_第5頁
已閱讀5頁,還剩3頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

-.z.第二章抽象語法表示ASN.1[填空選擇題]一、網絡數據表示P231、ASN.1(抽象語法表示):一種形式語言,提供統一的網絡數據表示,通常用于定義應用數據的抽象語法和應用層協議數據單元的構造。P232、表示層的功能:提供統一的網絡數據表示。P233、表示實體定義了應用數據的抽象語法。4、傳輸語法:把抽象數據變換成比特串的編碼規則。P235、抽象語法用于定義應用數據,它類似程序設計語言定義的抽象數據類型。P23二、ASN.1的根本概念P24-311、作為一種形式語言,ASN.1有嚴格的BNF定義。P242、在ASN.1中,每一個數據類型都有一個標簽〔tag〕,標簽有類型和值。P243、ASN.1標簽的類型分為4種,分別是:通用標簽、應用標簽、上下文專用標簽和私有標簽。P24通用標簽UNIVERSAL:由標準定義,適用于任何應用;應用標簽APPLICATION:是由*個具體應用定義的類型;上下文專用標簽CONTE*TSPECIFIC:這種標簽在文本的一定圍〔例如,一個構造struct〕中適用;私有標簽PRIVATE:用戶定義的標簽。4、ASN.1定義的數據類型可分為4類:分別為簡單類型、構造類型、標簽類型、其他類型。這些數據類型的標簽值均為通用標簽Universal,有20多種。P24●簡單類型:由單一成分構成的原子類型;ASN.1定義的數據類型中除了序列SEQUENCE和集合SET兩種類型不屬于簡單類型外,其他10多種均屬于簡單類型。P25●構造類型:由兩種以上成分構成的構造類型,如序列SEQUENCE、集合SET類型。●標簽類型:由類型定義的新類型;●其他類型:包括CHOICE和ANY兩種類型。以下是ASN.1標簽和類型關系圖:6、枚舉類型ENUMERATED:是一個整數的表,每一個整數有一個名字。枚舉類型與整數類型區別在于整數類型可以進展算術運算而枚舉類型不能進展任何算術運算,也即枚舉類型的值只是用證書表示的一個符號,而不具有整數的性質。P267、對象類型OBJECTIDENTIFIER:泛指網絡中傳輸的任何信息對象,其值是一個對象標識符,由一個整數序列組成,它惟一地標識一個對象。P268、NULL類型:是空類型、沒有值、只占用構造的一個位置。P269、時間類型:有GeneralizedTime類型和UTC類型兩種:P261〕GeneralizedTime時間類型格式:如值053.7,表示2007年7月21日,當地時間18點20分53.7秒;2〕UTC時間類型格式:如值053.7Z,表示同樣的時間。10、構造類型:有序列和集合兩種,序列和集合的區別是:序列是有序的,而集合是無序的。P261〕序列:用SEQUENCE表示不同類型元素的序列,用SEQUENCEOF表示一樣類型元素的序列。2〕集合:用SET表示不同類型的集合,用SETOF表示一樣類型元素的集合。11、標簽類型:指應用或用戶加在*個類型上的標簽,也即由類型定義的新類型。P2712、在一個構造〔序列或集合〕類型中,可用上下文專用標簽如[1]、[2]、[3]類似來區分類型一樣的元素。例如,Parentage::=SET{P28SubjectName[1]IMPLICITIA5String,MotherName[2]IMPLICITIA5StringOPTIONAL,FatherName[3]IMLICITIA5StringOPTIONAL}在構造類型Parentage中,為這三個元素SubjectName、MotherName、FatherName使用的標簽[1]、[2]、[3]就是上下文專用標簽〔簡稱上下文標簽〕。13、關鍵字IMPLICIT〔隱含〕和E*PLICIT〔明示〕:標簽類型可以是隱含的或明示的,兩者區別:P281〕隱含標簽的語義是用新標簽替換老標簽,編碼時只編碼新標簽。2〕明示標簽類型是把基類型作為惟一元素的構造類型,在編碼時,新老標簽都要編碼。14、其他類型:CHOICE和ANY類型是兩個沒有標簽的類型,因為它們的值是未定的,而且類型也是未定的。〔從而得知在ASN.1中,并不是每個數據類型〔包括CHOICE和ANY〕都有標簽〕當這種類型的變量被賦值時,它們的類型和標簽才確定,可以說標簽是運行時間確定的。P281〕CHOICE是可選類型的一個表,僅其中一個類型可以被采用,產生一個值,這些成分類型是的,但是在定義時尚未確定。2〕ANY類型:表示任意類型的任意值,與CHOICE類型不同之處在于實際出現的類型也是未知的,15、子類型:是由限制父類型的值集合而導出的類型,所以子類型的值集合是父類型的子集。產生子類型的方法有單個值、包含子類型、值區間、可用字符、限制大小和部子類型6種方法。其中P28-301〕值區間方法只能應用于整數和實數類型,指出子類型可取值的區間。2〕可用字符方法只能用于字符串類型,限制可使用的字符集。3〕限制大小方法可對5種類型〔比特串類型、字節串類型、字符串類型、序列和集合類型〕限制其規模大小〔如限制比特串、字節串、字符串的長度,限制序列或集合的元素個數〕。4〕部子類型方法可用于序列、集合和CHOICE類型。簡答、論述題集三、根本編碼規則P32-341、根本編碼規則BER:把ASN.1表示的抽象類型值編碼為字節串。這種字節串的構造為類型—長度—值,簡稱TLV(Type-Length-Value),而值局部value可遞歸地再編碼為TLV構造,如下圖:P321〕第一個字節〔8位〕為類型TYPE,用來表示ASN.1類型或用戶定義的類型。這個字節的前兩位用來區分4種標簽〔00為通用標簽、01為應用標簽,10位上下文專用標簽、11為私有標簽〕;第三位用0或1來區分簡單類型還是構造類型;剩余5位用來表示標簽值,如果標簽的值大于30,則這5位為全1,標簽值表示在后續字節中2〕第二個字節〔8位〕為長度length,是指描述值局部value所占用的字節個數。3)第三個字節〔8位〕為值value,表示該數據本身大小,也即數據大小的二進制表示。2、編碼實例:P32-34〔1〕布爾類型有兩個值FALSE和TRUE,FALSE編碼為010100;TRUE編碼為0101FF〔2〕十進制數256的編碼為02020100〔3〕NULL類型編碼:0500〔4〕字節串ACE可編碼為:0402ACE0,比特串10101可編碼為030203A8〔5〕序列類型SEQUENCE{madeofwoodBOOLEAN,lengthINTEGER}的值{madeof-woodTRUE,length62}編碼為為30060101FF02013E〔6〕Password::=[APPLICATION27]OCTETSTRING的值"Sesame〞編碼為7B080406536573616D65〔7〕Password::=[APPLICATION27]IMPLICITOCTETSTRING的值"Sesame〞編碼為5B06536573616D65四、ASN.1宏定義P35-381、ASN.1提供了宏定義設施,可用于擴大語法,定義新的類型和值。P352、ASN.1中的模塊類似C語言中的構造,用于定義一個抽象數據類型。P353、宏表示:ASN.1提供的一種表示機制,用于定義宏。P364、宏定義:用宏表示定義的一個宏,代表一個宏實例的集合。P365、宏實例:用具體的值代替宏定義中變量而產生的實例,代表一中具體的類型。P366、宏定義由類型表示(TYPENOTATION)、值表示(VALUENOTATION)和支持產生式3局部組成。P377、宏定義的主要作用:宏定義可以看做是類型的類型,或者說是超類型,也可以把宏定看做是類型的模板。P37[簡答題:第二章抽象與法表示ASN.1]1、什么是ASN.1?P23抽象語法表示ASN.1是一種形式語言,它提供統一的網絡數據表示,通常用于定義應用數據的抽象語法和應用層協議數據單元的構造。在網絡管理中,無論是OSI的管理信息構造,或是SNMP管理信息庫,都是用ASN.1定義的。表示層的功能是什么?抽象語法和傳輸語法各有什么作用?P23答:表示層的功能:提供統一的網絡數據表示。抽象語法是一種形式語言,提供統一的網絡數據表示,通常用于定義應用數據的抽象語法和應用層協議數據單元的構造。傳輸語法是一種編碼規則,作用是把抽象數據變換成比特串在網絡中傳送。3、產生子類型的方法P28-301〕單個值:這種方法就是列出子類型可取的各個值。2〕包含子類型:使用關鍵字INCLUDES說明被定義的類型包含已有類型的所有值。3〕值區間:這種方法只能應用于整數和實數類型,指出子類型可取值的區間。4〕可用字符:這種方法只能用于字符串類型,限制可使用的字符集。5〕限制大小:可以對5種類型限制其規模大小,例如限制比特串、字節串或字符串的長度,限制構成序列或集合的元素(同類型)個數等。6〕部子類型:這種方法可用于序列、集合和CHOICE類型。這是一種很復雜的子類型關系4、簡述ASN.1的根本編碼規則P32根本編碼規則BER:把ASN.1表示的抽象類型值編碼為字節串。這種字節串的構造為類型—長度—值,簡稱TLV(Type-Length-Value)。編成的第一個字節〔8位〕為類型TYPE,用來表示ASN.1類型或用戶定義的類型。這個字節的前兩位用來區分4種標簽;第三位區分簡單類型還是構造類型;剩余5位用來表示標簽值,如果標簽的值大于30,則這5位為全1,標簽值表示在后續字節中。5、根本編碼規則中哪兩種字段需要擴大?其擴大的方法是什么?P34〔2007年1月〕答:一是當標簽值大于30時類型字節需要擴大,二是當值局部大于一個字節的表示圍時長度字節需要擴大。對標簽值的擴大方法為:用5位表示0~30的編碼,當標簽值大于等于30時,這5位為全1,作為轉義符,實際的標簽值編碼表示在后續字節中,后續字節的左邊第一位表示是否為最后一個擴大字節,只有最后一個擴大自己的左邊第一位置0,其余擴大字節左邊第一位置1。對長度字節的擴大方為:小于127的數用長度字節的右邊7位表示,最左邊的一位置0,大于等于127的數用后續假設干字節表示,原來的長度字節第一位置1,其余7位知名后續用于求長度的字節數。6、宏定義有哪些局部組成?這些局部都由什么式說明?宏定義的主要用處是什么?P37宏定義由3個局部組成:類型表示(TYPENOTATION)值表示(VALUENOTATION)支持產生式。這三個局部都由Backs-Naur式說明。宏定義的主要作用是:宏定義可以看做是類型的類型,或者說是超類型,也可以把宏定看做是類型的模板,可以用這種模板制造出形式相似,語義相關的多種數據類型。7、為什么要用宏定義?怎樣用宏定義得到宏實例?P37語言具有良好的擴大性。當用一個具體的值代替宏定義中的變量或參數時就產生了宏實例,它表示一個實際的ASN.1類型〔稱為返回的類型〕,并且規定了該類型可取的值的集合〔稱為返回的值〕。可見宏定義可以看做是類型的類型,或者說是超類型。[綜合題:第二章抽象語法表示ASN.1]1、用ASN.1的根本編碼規則對下面的數據進展編碼。P32-34〔2009年1月、2008年1月〕〔1〕布爾類型的兩個值FALSE〔0*00〕,TRUE〔0*FF〕;〔2〕比特串10101;〔3〕NULL類型;〔4〕序列類型SEQUENCE{madeofwoodBOOLEAN,lengthINTEGER}的值{madeof-woodTRUE,length62};〔5〕Password::=[APPLICATION27]OCTETSTRING的值"Sesame〞;〔6〕Password::=[APPLICATION48]INTEGER的值為十進制256;相應的類型及標簽為:BOOLEAN:UNIVERSAL1;INTEGER:UNIVERSAL2;OCTETSTRING:UNIVERSAL4;NULL:UNIVERSAL5;"Sesame〞的ASCII值〔十六進制〕為:536573616D65。答:1)FALSE編碼:010100,TRUE編碼為:0101FF2)比特串10101編碼為:030203A83〕NULL類型編碼:05004)可編碼為30060101FF02013E按照序列的構造可展開如下:SeqLenVal3006BoolLenVal0101FFIntLenVal02013E5〕編碼為:7B080406536573616D65展開后為:AppLenVal7B08OctLenVal0406536573616D65Sesame6〕可編碼為7F30050202010000[分析]對于integer256數值可編碼為0202010000〔與此題第二問題〕但[APPLICATION48]是屬于應用標簽并且標簽值為48(因為48>30,需要對標簽值需要擴大,所以第一字節類型TYPE編碼位7F30),展開后為:AppLenVal7F3005IntLenVal0202010000即對應的二進制表示形式為:01111111001100000000010100000010000000100000000100000000000000002、用根本編碼規則對長度字段L編碼:L=18,L=180,L=1044。P38[解答]L=18,二進制形式的編碼:00010010L=180,二進制形式編碼:1000000110110100L=1044,二進制形式編碼:100000100000010000010100[解析]對于長度字節的擴大方法是:小于127的數用長度字節的右邊7位表示,最左邊的一位置0。大于等于127的數用后續假設干字節來表示,原來的長度字節第一位置1,其余7位指明后續用于表示長度的字節數,即采用下面的形式:00000000〔0~126〕…011111111*******(*******指明后續用于表示長度的字節數)如255可表示為1000000111111111。3、用根本編碼對數據編碼:標簽值=1011001010,長度=255。P38[解答]二進制形式的編碼:0001111110000101010010101000000111111111[解析]當標簽號不大于30時,Tag只在一個八位組中編碼;當Tag大于30時,則Tag在多個八位組中編碼。在多個八位組中編碼時,第一個八位組后5位全部為1,其余的后繼八位組最高位為1表示后續還有,最后一個八位組最高位為0表示Tag完畢。采用下面的規則使用不同的類型編碼:〔1〕假設編碼是簡單類型,則使用確定格式。短格式:長度字段僅一個八位位組,最高位為0。長格式:長度字段包含多個八位位組,第1個字節最高位為1,其余7位表示后面有多少字節來表示值字段的長度。例如,25510可表示為1000000111111111。[歷年真題題集]一、選擇題1、計算機網絡管理中提供統一的網絡數據表示的形式語言是()P23〔2008年1月、2006年10月〕A.ASN.1 B.Java C.C語言D.ASP2、ASN.1中每一個數據類型都有一個標簽,標簽的類型有〔〕P24〔2006年10月〕A.性能標簽B.簡單標簽C.構造標簽D.私有標簽3、在下面集合中有三個元素,一個是本人名字,一個是父親名字,另一個是母親名字。Parentage::=SET{SubjectName[1]IMPLICITIA5String,MotherName[2]IMPLICITIA5StringOPTIONAL,FatherName[3]IMLICITIA5StringOPTIONAL}為這三個元素使用的標簽[1][2][3]是()P28〔2007年10月〕A.通用標簽B.應用標簽C.上下文標簽D.私有標簽4.在ASN.1的數據類型分類中由類型定義的新類型是()P24〔2009年1月、2008年1月〕A.簡單類型B.構造類型C.標簽類型D.其它類型5、以下對ASN.1的數據類型描述正確的選項是〔〕P24-28〔2010年1月、2008年10月〕A.每個數據類型〔包括CHOICE和ANY〕都有標簽B.分別用SEQUENCE和SEQUENCEOF表示一樣類型和不同類型元素的序列C.分別用SET和SETOF表示不同類型和一樣類型元素的集合D.隱含標簽的語義是在一個根本類型上加上新標簽,從而導出一個新類型。以下對ASN.1的簡單數據類型的描述正確的選項是〔〕P24-28〔2008年1月〕A.簡單類型就是BOOLEAN、INTEGER、BITSTRING、OCTETSTRING、REAL和ENUMERATED這些根本類型。B.枚舉類型ENUMERATED也能進展任何算術運算。是UTCTime類型的一個值,表示2000年7月21日,當地時間18點20分53.7秒。是GeneralizedTime類型的一個值,表示2000年7月21日,當地時間18點20分53.7秒。7、假設"2007年8月15日,當地時間21點57分43.5秒〞用GeneralizedTime類型可表示為〔〕,用UTC時間類型可表示為〔〕P26〔2009年10月〕,"2006年8月1日,當地時間21點57分43.5秒〞用GeneralizedTime類型可表示為〔〕P26〔2007年1月〕8、在ASN.1子類型的描述中,值區間這種方法只能應用于〔〕,可用字符這種方法只能應用于〔〕,部子類型可用于〔〕P29〔2008年1月〕A.整數和實數類型B.布爾類型C.字符串類型D.CHOICE類型9、根本編碼規則中的第一個字節表示ASN.1標簽類型或用戶定義的數據類型,用于表示用戶定義的數據類型的二進制位是〔〕P32〔2006年10月〕A.第1位B.第2位C.第3位D.第4、5、6、7、8位10、十進制數256的編碼為〔〕P32〔2010年1月〕A.02020100 B.02010100C.01020100 D.02021111補:在ASN.1宏定義中,ASN.1中的模塊類似C語言中的()P35〔2007年10月〕A.變量B.數據類型C.構造D.關鍵字二、填空題1、表示實體定義了應用數據的語法。P23〔2010年1月〕2、把抽象數據變換成比特串的編碼規則叫做。P23〔2008年1月〕3、ASN.1標簽的類型分為4種,分別是:通用標簽、應用標簽、和私有標簽。P24〔2010年1月、2008年10月〕4、ASN.1定義的數據類型包括:簡單類型、、標簽類型、其他類型。P245、在ASN.1的定義里,構造類型有和兩種,SEQUENCE是。P266、在ASN.1種,每個數據類型都有一個。P247、根本編碼規則把ASN.1表示的抽象類型值編碼為字節串,這種字節串的構造為。P32〔2006年10月〕8、根本編碼規則可將字節串值ACE編碼為。P32〔2007年1月〕三、簡答題1、在ASN.1中產生子類型的方法有哪些?P28-30〔2010年1月〕產生子類型的方法有以下幾種:1〕單個值:這種方法就是列出子類型可取的各個值。2〕包含子類型:關鍵字INCLUDES:說明被定義的類型包含了已有類型的所有的值。3〕值區間:這種方法只能應用于整數和實數類型,指出子類型可取值的區間。4〕可用字符:這種方法只能用于字符串類型,限制可使用的字符集。5〕限制大小:可以對5種類型限制其規模大小,例如限制比特串、字節串或字符串的長度,限制構成序列或集合的元素(同類型)個數等。6〕部子類型:這種方法可用于序列、集合和CHOICE類型。這是一種很復雜的子類型關系2、表示層的功能是什么?抽象語法和傳輸語法各有什么作用?P23表示層的功能:提供統一的網絡數據表示。抽象語法是一種形式語言,提供統一的網絡數據表示,通常用于定義應用數據的抽象語法和應用層協議數據單元的構造。傳輸語法是一種編碼規則,作用是把抽象數據變換成比特串在網絡中傳送。3、根本編碼規則中哪兩種字段需要擴大?其擴大的方法是什么?P34〔2007年1月〕答:一是當標簽值大于30時類型字節需要擴大,二是當值局部大于一個字節的表示圍時長度字節需要擴大。對標簽值的擴大方法為:用5位表示0~30的編碼,當標簽值大于等于30時,這5位為全1,作為轉義符,實際的標簽值編碼表示在后續字節中,后續字節的左邊第一位表示是否為最后一個擴大字節,只有最后一個擴大自己的左邊第一位置0,其余擴大字節左邊第一位置1。對長度字節的擴大方為:小于127的數用長度字節的右邊7位表示,最左邊的一位置0,大于等于127的數用后續假設干字節表示,原來的長度字節第一位置1,其余7位知名后續用于求長度的

溫馨提示

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

評論

0/150

提交評論