《信息论编码PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《信息论编码PPT讲稿.ppt(86页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、信息论编码第1页,共86页,编辑于2022年,星期四1.网络系统的发展,怎么进行 异种(异构)?信息间的通信?2.为什么用ASN.1?现有的数据结构表达方式不可以吗?3.传输语法与BER.第2页,共86页,编辑于2022年,星期四2.1 网络数据表示网络数据表示 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 体现什么思想?和SNMP协议、数据类型是什么关系?第3页,共86页,编辑于2022年,星期四 ASN.1描述了一种对数据进行表示、编码、传输和解码的数据格式。它提供了一整套正规的格式用于描述对象的结构,而不管语言上如何执行及这些数据的具体指代,也不用去管到底是什么样的
2、应用程序。ASN.1是什么?第4页,共86页,编辑于2022年,星期四 在任何需要以数字方式发送信息的地方,ASN.1 都可以发送各种形式的信息(声频、视频、数据等等)。ASN.1 和特定的 ASN.1 编码规则推进了结构化数据的传输,尤其是网络中应用程序之间的结构化数据传输,它以一种独立于计算以一种独立于计算机架构和语言的方式机架构和语言的方式来描述数据结构数据结构。第5页,共86页,编辑于2022年,星期四 ASN.1 取得成功的一个主要原因是它与几个标准化编码规则相关,如基本编码规则(BER)-X.209、规范编码规则(CER)、识别名编码规则(DER)、压缩编码规则(PER)和 XER
3、 编码规则(XER)。这些编码规则描述了如何对 ASN.1 中定义的数值进行编码,以便用于传输,而不管不管计算机、编程语言或它在应用程序中如何表示等因素。第6页,共86页,编辑于2022年,星期四1.在互相通信的端系统中至少有一个应用实体应用实体和一个表示实表示实体体。2.把抽象数据变换成比特串的编码规则叫做传输语法传输语法。如图2.1所示。网络数据表示网络数据表示 第7页,共86页,编辑于2022年,星期四图2.1 关于信息表示的通信系统模型 第8页,共86页,编辑于2022年,星期四name valueGet-request 报文?协议?ASN.1 编码?V01 03 06 01 02 0
4、1 01 01 00 L09 TOBJECT IDENTIFIER TNULL L00 L01 TSEQUENCE?L0C L0E L04 TINTEGER L01request-iderror-statuserror-indexvariable-bindings TINTEGER V05 AE 56 02 V00 TSEQUENCE OF?TINTEGER V00VarBind TA0 L1DGetRequest-PDUrequest-ID1.3.6.1.2.1.7.1.0GetRequest-PDU和七层协议的关系?和七层协议的关系?第9页,共86页,编辑于2022年,星期四ASN.1表示
5、数据例子例如:数据类型特点?Report:=SEQUENCE author OCTET STRING,title OCTET STRING,body OCTET STRING,biblio Bibliography第10页,共86页,编辑于2022年,星期四在这个例子中,Report是由名字类型的信息组成的,而SEQUENCE表示消息是许多数据单元构成的,前三个数据单元的类型是OCTET STRING,而最后一个数据类型则下面的ASN.1语法表示它的意义:Bibliography:=SEQUENCE author OCTET STRING title OCTET STRINGpublisher
6、 OCTET STRINGyear OCTET STRING 第11页,共86页,编辑于2022年,星期四2.2 ASN.1的基本概念的基本概念 ASN.1文本的书写规则,这些规则叫做文本约定:(1)书写的布局是无效的,多个空格和空行等效于一个空格;(2)用于表示值和字段的标识符、类型指针(类型名)和模块名由大小写字母、数字和短线组成;第12页,共86页,编辑于2022年,星期四(3)标识符以小写字母开头;(4)类型指针和模块名以大写字母开头;(5)ASN.1定义的内部类型全部用大写字母表示;(6)关键字全部用大写字母表示;(7)注释以一对短线(-)开始,以一对短线或行尾结束。ASN.1的特点
7、?第13页,共86页,编辑于2022年,星期四2.2.1 2.2.1 抽象数据类型抽象数据类型在ASN.1中,每一个数据类型都有一个标签(Tag)?,标签有类型和值(见表2.1),数据类型是由标签的类型和值惟一决定的,这种机制在数据编码时有用。标签的类型分为以下4种:通用标签 应用标签 上下文专用标签 私有标签第14页,共86页,编辑于2022年,星期四ASN.1定义的数据类型有20多种,标签类型都是UNIVERSAL,如表2.1所示。这些数据类型可分为4大类。简单类型(?)构造类型 标签类型 其他类型(CHOICE、ANY)第15页,共86页,编辑于2022年,星期四表表2.1 ASN.1定
8、义的通用类型定义的通用类型?第16页,共86页,编辑于2022年,星期四表表2.1 ASN.1定义的通用类型定义的通用类型?第17页,共86页,编辑于2022年,星期四第一组BOOLEAN、INTEGER、BIT STRING、OCTET STRING、REAL、ENUMERATED.枚举类型的值只是用整数表示的一个符号,而不具有整数的性质。下面是定义枚举类型的例子:EthernetAdapterStatus:=ENUMERATEDnormal(0),degraded(1),offline(2),failed(3)1.简单类型简单类型 第18页,共86页,编辑于2022年,星期四第二组包括各种
9、字符串类型,标签为UNIVERSAL 1822和UNIVERSAL 2527(表示字符类型 为何如此多的类型?)第三组包括OBJECT IDENTIFIER和Object Descriptor两种类型。第四组包含4种类型。NULL是空类型,EXTERNAL是外部类型,UTCTime和GeneralizedTime是两种有关时间的类型,其区别是表示时间的形式不同。例如 20000721182053.7是GeneralizedTime类型的一个值,表示2000年7月21日,当地时间18点20分53.7秒。20000721182053.7Z表示同样的时间,但是加了符号Z,则表示UTC时间。第19页,
10、共86页,编辑于2022年,星期四2.2.构造类型构造类型构造类型有序列和集合两种,分别用SEQUENCE和SEQUENCE OF表示不同类型和相同类型元素的序序列列,分别用SET和SET OF表示不同类型和相同类型元素的集合集合。他们的区别是什么?第20页,共86页,编辑于2022年,星期四下面是定义序列类型的例子:EthernetCollisionsCounter:=SEQUENCE highValue INTEGER,lowValueINTEGER TokenRingTokensLost:=SEQUENCE highValueINTRGER,lowValueINTEGER LanSimp
11、leCounterLimits:=SEQUENCE ethernetCounter1 COMPONENTS OF EthernetCollisionsCounter,tokenRingCounter1COMPONENTS OF TokenRingTokensLost 第21页,共86页,编辑于2022年,星期四下面是定义集合类型的例子:LanWorkstationSerialNumbers:=OCTET STRING(SIZE(32)LanSegment:=SET OF LanWorkstationSerialNumbersMacAddresses:=OCTET STRING(SIZE(6)E
12、thernetNetworks:=SET OF MacAddressesTokenRingNetworks:=SET OF LanSegmentLanNetwork:=SET etherNet 0 IMPLICIT EthernetNetworks,tokenNet 1 IMPLICIT TokenRingNetworks 第22页,共86页,编辑于2022年,星期四3.3.标签类型标签类型 Exuniv:=UNIVERSAL 2 INTEGERExuniv:=UNIVERSAL 2 INTEGER Exappl:=APPLICATION 0 INTEGER Exappl:=APPLICATI
13、ON 0 INTEGER Expriv:=PRIVATE 1 INTEGER Expriv:=PRIVATE 1 INTEGER 标签由一个标签由一个 标签类标签类 和和 一个一个 标签号标签号 组成。组成。指应用或用户加在某个类型上的标签标签。加上一个标签后就是一个新新的类型的类型。标签类型作用?例如集合中有3个同样类型的元素,一个指本人的名字,一个指父亲的名字,另一个指母亲的名字,分别为其指定不同的上下文专用标签分别为其指定不同的上下文专用标签1、2和和3以示区别,参见下例:第23页,共86页,编辑于2022年,星期四Parentage:=SETSubjectName1 IMPLICIT
14、IA5String,MotherName 2 IMPLICIT IA5String OPTIONAL,FatherName 3 IMPLICIT IA5String OPTIONAL 在编码中注意:Expriv:=PRIVATE 1 IMPLICIT INTEGER Expriv:=PRIVATE 1(EXPLICIT)INTEGER 新老标签编码?新老标签编码?第24页,共86页,编辑于2022年,星期四4.4.其他类型其他类型(他们类型的作用?)他们类型的作用?)CHOICE和ANY是两个没有标签的类型,下面是定义CHOICE类型的例子:EthernetAdapterNumber:=CHO
15、ICENULL,OCTET STRING第25页,共86页,编辑于2022年,星期四ANY类型表示任意类型的任意值例1,我们可以定义SoftwareVersion:=ANY 例2,TextBook:=SEQUENCE author IA5String,reference ANY 第26页,共86页,编辑于2022年,星期四实例 author “sfssfs”,reference IA5String“42342sf”author “sfssfs”,reference INTEGER 1988 第27页,共86页,编辑于2022年,星期四2.2.2 2.2.2 子类型子类型子类类型型是由限制父类型
16、的值集合而导出的类型,因此子类型的值集合是父类型的子集。子类型子类型还可以再产生子类型。(面向对象)(面向对象)第28页,共86页,编辑于2022年,星期四1.1.单个值单个值这种方法就是列出子类型可取的各个值值。例如,我们可以定义小素数为整数类型的子集:SmallPrime:=INTEGER(2|3|5|7|11|13|15|17|19|23|29)另外,如果定义Months为枚举类型:Months:=ENUMERATEDjanuary(1),february(2),march(3),april(4),may(5),june(6),july(7),august(8),september(9)
17、,october(10),november(11),december(12)第29页,共86页,编辑于2022年,星期四则可以定义First-quarter和Second-quarter为Months的子类型:First-quarter:=Months(january,february,march)Second-quarter:=Months(april,may,june)第30页,共86页,编辑于2022年,星期四2.2.包含子类型包含子类型(与前者的区别?)与前者的区别?)这里要用到关键字INCLUDES,说明被定义的类型包含了已有类型的所有的值。例如下面的定义:First-half:=M
18、onths(INCLUDES First-quarter|I NCLUDES Second-quarter)第31页,共86页,编辑于2022年,星期四3.3.值区间值区间(?)这种方法只能应用于整整数数和类型,指出子类型可取值实实数数的区间。在下面的定义中PLUS-INFINITY和MINUS-INFINITY分别表示正、负最大值,MAX和MIN分别表示父类型可允许的最大值和最小值,区间可以是闭区间或开区间。如果是开区间,则加上符号“”。因此下面4个定义是等价等价的:PositiveInteger:=INTEGER(0.PLUS-INFINITY)PositiveInteger:=INTEG
19、ER(1.PLUS-INFINITY)PositiveInteger:=INTEGER(0.MAX)PositiveInteger:=INTEGER(1.MAX)第32页,共86页,编辑于2022年,星期四同理,下面4个定义也是等价的:NegativeInteger:=INTEGER(MINUS-INFINITY.0)NegativeInteger:=INTEGER(MINUS-INFINITY.-1)NegativeInteger:=INTEGER(MIN.0)NegativeInteger:=INTEGER(MIN.-1)第33页,共86页,编辑于2022年,星期四4.4.可用字符可用字符
20、(与单个值?区别?)与单个值?区别?)这种方法只能用于字符串类型,限制可使用的字字符符集集。下面是两个限制可用字符的例子:TouchToneButtons:=IA5String(FROM(0|1|2|3|4|5|6|8|9|*|#)DigitString:=IA5String(FROM(0|1|2|3|4|5|6|8|9)第34页,共86页,编辑于2022年,星期四5.5.限制大小限制大小可以限制其规模大小,例如限制比比特特串串、字字节节串串或或字字符符串串的的长长度度,限制构成序序列列或或集集合合的元素(同类型)个数等。例如公共数据网的地址由514个数字组成,这个规定可用下面的定义表示:It
21、1DataNumber:=DigitString(SIZE(5.14)第35页,共86页,编辑于2022年,星期四6.6.内部子类型内部子类型(约束)(约束)这种方法可用于序序列列、集集合合和和CHOICECHOICE类类型型。这是一种很复杂的子类型关系,下面用例子说明。假定有一种协议数据单元:PDU:=SETalpha0 INTEGER,beta 1 IA5String OPTIONAL,gamma2 SEQUENCE OF Parameter,delta 3 BOOLEAN 第36页,共86页,编辑于2022年,星期四下面定义的子类型测试协议数据单元要求布尔值必须是FALSE,整数值必须是
22、负的:TestPDU:=PDU(WITH COMPONENTS.delta(FALSE),alpha(MIN.?表示0126 指明后续用于表示长度的字节数 第63页,共86页,编辑于2022年,星期四 例如,L长度为(255)10可表示为 L=10000001 11111111 T L L V那么256长度 要用几个字节表示长度?可表示为多少?第64页,共86页,编辑于2022年,星期四那么256 要用几个字节表示长度?可表示为多少?100000100000000 1000 0 0000指出 V 字段长度=256 字节指出后续字节数=2后续字节数=2 L标志位标志位:长度:长度值第65页,共8
23、6页,编辑于2022年,星期四TLV 中的 L 字段定义 V 字段的长度 指出 V 字段长度=2 字节00000010100000100000000100000110单字节的 L 字段指出 V 字段长度=262 字节多字节的 L 字段指出后续字节数=2后续字节数=2263呢?简单的计算方法?第66页,共86页,编辑于2022年,星期四name valueGet-request 报文 ASN.1 编码?V01 03 06 01 02 01 01 01 00 L09 TOBJECT IDENTIFIER TNULL L00 L01 TSEQUENCE L0D L0F L04 TINTEGER L0
24、1request-iderror-statuserror-indexvariable-bindings TINTEGER V05 AE 56 02 V00 TSEQUENCE OF TINTEGER V00VarBind TA0 L1DGetRequest-PDUrequest-ID1.3.6.1.2.1.7.1.0GetRequest-PDU第67页,共86页,编辑于2022年,星期四十六进制编码A0 1D /A0编码?编码?02 04 05 AE 56 02 /request-id 02 01 00 /error-status 02 01 00 /error-index 30 0F /SE
25、QUENCE OF 30 0D /SEQUENCE 06 09 01 03 06 01 02 01 07 01 00/OBJECT IDENTIFIER 05 00 /NULL 请问各个长度请问各个长度(L)之间有什么关系?之间有什么关系?如何用如何用ASN.1定义该结构?定义该结构?层次关系?层次关系?SequenceSequence Of?第68页,共86页,编辑于2022年,星期四Get-request 报文的ASN.1定义形式Get-request-PDU:=0IMPLICIT SEQUENCE Request-id INTEGERError-status INTEGER018Erro
26、r-index INTEGER0max-bindingsVariable-bindings VarBindListVarBindList:=SEQUENCE OF VarBindVarBind:=SEQUENCE name OBJECT INDETIFIER value NULL/SEQUENCE OF 和SEQUENCE 两种结构的区别?标签值?标签值?第69页,共86页,编辑于2022年,星期四2.4 ASN.1宏定义宏定义 2.4.1 2.4.1 模块定义模块定义模块定义的基本形式为 DEFINITIONS:=BEGIN EXPORTS IMPORTS AssignmentList EN
27、D 意义何在?意义何在?第70页,共86页,编辑于2022年,星期四一个模块定义的例子:?LanNetworkModuleiso org dod internet private enterprises Xenterprises 95DEFINITIONS EXPLICIT TAGS:=BEGIN EXPORTS LanNetworkName:=SEQUENCE OF RelativeDistinguishedName-End of EXPORTS IMPORTS 第71页,共86页,编辑于2022年,星期四RelativeDistinguishedName FROM InformationF
28、rameworkioint-iso-ccitt Ds(5)modules(1)informationFramework(1)-End of IMPORTS MacAddresses:=OCTET STRING(SIZE(6)LanWorkstationSerialNumbers:=OCTET STRING(SIZE(32)LanSegment:=SET OF LanWorkstationSerialNumbers EthernetNetworks:=SET OF MacAddresses TokenRingNetworks:=SET OF LanSegment LanNetwork:=SET
29、etherNet 0 IMPLICIT EthernetNetworks,tokenNet 1 IMPLICIT TokenRingNetworks END 第72页,共86页,编辑于2022年,星期四2.4.2 2.4.2 宏表示宏表示 宏表示:ASN.1提供的一种表示机制表示机制,用于定义宏;宏定义:用宏表示定义的一个宏,代表一个宏实例的集合集合;宏实例:用具体的值代替宏定义中的变量而产生的实例,代表一一种具体的类型种具体的类型。模块定义和上面哪种 定义有关系?有什么关系?第73页,共86页,编辑于2022年,星期四宏定义的一般形式如下:MACRO:=BEGIN TYPE NOTATION
30、:=VALUE NOTATION:=END 第74页,共86页,编辑于2022年,星期四下面是取自下面是取自RFC 1155RFC 1155的关于对象类型的宏定义的关于对象类型的宏定义,包含两个支持产生式子。包含两个支持产生式子。OBJECT-TYPE MACROOBJECT-TYPE MACRO:=BEGIN TYPE NOTATION:=Syntax type(TYPE ObjectSyntax)ACCESS Access STATUS Status VALUE NOTATION:=value(VALUE ObjectName)Access:=read-only|read-write|wr
31、ite-only|not-accessible Status:=mandatory|optional|obsolete END 第75页,共86页,编辑于2022年,星期四2.4.3 2.4.3 宏定义示例宏定义示例关于为什么要用宏定义?假设我们经常需要使用整数对,于是我们定义一个ASN.1类型:Pair-integers:=SEQUENCE(INTEGER,INTEGER)如果我们还需要使用字节串对,也可以定义相应的类型:Pair-octet-string:=SEQUENCE(OCTET STRING,OCTET STRING)第76页,共86页,编辑于2022年,星期四简化类型定义的方法是
32、使用宏定义。我们定义一个宏PAIR,它是一个类型对:PAIR TYPE-X=type TYPE-Y=type 第77页,共86页,编辑于2022年,星期四对应的值表示采用下面的形式:(X=value,Y=value)T0:=PAIR TYPE-X=INTEGER TYPE-Y=INTEGER用一个已有的类型代替其中的变量type,可得到宏实例,即新的类型:T1:=PAIR TYPE-X=INTEGER TYPE-Y=BOOLEANT2:=PAIR TYPE-X=VisibleString TYPE-Y=T1则下面的值属于T1类型:(X=3,Y=TRUE)第78页,共86页,编辑于2022年,星
33、期四下面的值是T2类型:(X=Name,Y=(X=4,Y=FALSE)显然,只要用已知的类型代替关键字type,就可以得到需要的数对类型。图2.5给出了PAIR的宏定义第79页,共86页,编辑于2022年,星期四图2.5 宏定义示例 第80页,共86页,编辑于2022年,星期四习习 题题 一.简答题 1.抽象语法和传输语法各有什么作用?2.ASN.1定义的数据类型分为哪几类?二.选择题 1.ASN.1是一种A.通信协议 B.形式语言C.操作系统 D.网络管理标准第81页,共86页,编辑于2022年,星期四2.下列不属于简单类型的是A.INTEGER B.NULLC.SEQUECE D.OCTE
34、T STRING3.下 列 选 项 和PositiveInteger:=INTEGER(1.PLUS-INFINITY)等价的是A.PositiveInteger:=INTEGER(3.PLUS-INFINITY)第82页,共86页,编辑于2022年,星期四B.PositiveInteger:=INTEGER(2.PLUS-INFINITY)C.PositiveInteger:=INTEGER(1.MAX)D.PositiveInteger:=INTEGER(2.MAX)4.OCTET STRING类型对应的值集合是A.0或多个字节组成的序列 B.0或多个比特组成的序列C.国际标准字符集5 D
35、.通用字符集第83页,共86页,编辑于2022年,星期四5.在ASN.1中,每一个数据类型都有一个标签,通用标签的关键字是A.UNIVERSAL B.ALLICATIONC.PRIVATE D.DEFAULT三、解答题1.根据BER,布尔类型的FALSE的编码为(十六进制数表示)?2.根据BER,十进制数257的编码为(十六进制数表示)?第84页,共86页,编辑于2022年,星期四3.根据BER,比特串10100的编码为(十六进制数表示)?4.根据BER,序列类型SEQUENCEmadeofwood BOOLEAN,length INTEGER的值 madeofwood FALSE,length 61可编码为?5.根据BER,标签值10110011100010101可编码为xxx11111.(二进制数表示)?6.在ASN.1中,IP地址(IPAddress)=131.21.14.2,试求ASN.1编码。第85页,共86页,编辑于2022年,星期四7.用ASN.1描述Get-request-PDU的数据结构。8.对长度字节的扩充方法中若value的长度Length达到263,请问怎么对Length字段进行编码,写出二进制表示。第86页,共86页,编辑于2022年,星期四