信息论编码精品课件_第1页
信息论编码精品课件_第2页
信息论编码精品课件_第3页
信息论编码精品课件_第4页
信息论编码精品课件_第5页
已阅读5页,还剩81页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、信息论编码第1页,共86页,2022年,5月20日,1点23分,星期一1.网络系统的发展,怎么进行 异种 (异构)?信息间的通信?2.为什么用ASN.1?现有的数据结构表达方式不可以吗?3.传输语法与BER.第2页,共86页,2022年,5月20日,1点23分,星期一2.1 网络数据表示 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 体现什么思想? 和SNMP协议、数据类型是什么关系?第3页,共86页,2022年,5月20日,1点23分,星期一 ASN.1描述了一种对数据进行表示、编码、传输和解码的数据格式。它提供了一整套正规的格式用于描述对象的结构,而不管语言上如何执行

2、及这些数据的具体指代,也不用去管到底是什么样的应用程序。ASN.1是什么?第4页,共86页,2022年,5月20日,1点23分,星期一 在任何需要以数字方式发送信息的地方,ASN.1 都可以发送各种形式的信息(声频、视频、数据等等)。 ASN.1 和特定的 ASN.1 编码规则推进了结构化数据的传输,尤其是网络中应用程序之间的结构化数据传输,它以一种独立于计算机架构和语言的方式来描述数据结构。第5页,共86页,2022年,5月20日,1点23分,星期一 ASN.1 取得成功的一个主要原因是它与几个标准化编码规则相关,如基本编码规则(BER) -X.209 、规范编码规则(CER)、识别名编码规

3、则(DER)、压缩编码规则(PER)和 XER 编码规则(XER)。 这些编码规则描述了如何对 ASN.1 中定义的数值进行编码,以便用于传输,而不管计算机、编程语言或它在应用程序中如何表示等因素。 第6页,共86页,2022年,5月20日,1点23分,星期一1.在互相通信的端系统中至少有一个应用实体和一个表示实体。2.把抽象数据变换成比特串的编码规则叫做传输语法。 如图2.1所示。 网络数据表示 第7页,共86页,2022年,5月20日,1点23分,星期一图2.1 关于信息表示的通信系统模型 第8页,共86页,2022年,5月20日,1点23分,星期一name valueGet-reques

4、t 报文?协议? ASN.1 编码? V01 03 06 01 02 01 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

5、和七层协议的关系?第9页,共86页,2022年,5月20日,1点23分,星期一ASN.1表示数据例子例如:数据类型特点?Report := SEQUENCE author OCTET STRING, title OCTET STRING, body OCTET STRING,biblio Bibliography第10页,共86页,2022年,5月20日,1点23分,星期一在这个例子中,Report是由名字类型的信息组成的,而SEQUENCE表示消息是许多数据单元构成的,前三个数据单元的类型是OCTET STRING,而最后一个数据类型则下面的ASN.1语法表示它的意义:Bibliograph

6、y := SEQUENCE author OCTET STRING title OCTET STRINGpublisher OCTET STRINGyear OCTET STRING 第11页,共86页,2022年,5月20日,1点23分,星期一2.2 ASN.1的基本概念 ASN.1文本的书写规则,这些规则叫做文本约定:(1)书写的布局是无效的,多个空格和空行等效于一个空格;(2) 用于表示值和字段的标识符、类型指针(类型名)和模块名由大小写字母、数字和短线组成; 第12页,共86页,2022年,5月20日,1点23分,星期一(3) 标识符以小写字母开头;(4) 类型指针和模块名以大写字母开

7、头;(5) ASN.1定义的内部类型全部用大写字母表示;(6) 关键字全部用大写字母表示;(7) 注释以一对短线(- -)开始,以一对短线或行尾结束。 ASN.1的特点?第13页,共86页,2022年,5月20日,1点23分,星期一2.2.1 抽象数据类型在ASN.1中,每一个数据类型都有一个标签(Tag)?,标签有类型和值(见表2.1),数据类型是由标签的类型和值惟一决定的,这种机制在数据编码时有用。标签的类型分为以下4种: 通用标签 应用标签 上下文专用标签 私有标签第14页,共86页,2022年,5月20日,1点23分,星期一ASN.1定义的数据类型有20多种,标签类型都是UNIVERS

8、AL,如表2.1所示。这些数据类型可分为4大类。 简单类型(?) 构造类型 标签类型 其他类型 (CHOICE、ANY)第15页,共86页,2022年,5月20日,1点23分,星期一表2.1 ASN.1定义的通用类型 ?第16页,共86页,2022年,5月20日,1点23分,星期一表2.1 ASN.1定义的通用类型 ?第17页,共86页,2022年,5月20日,1点23分,星期一第一组BOOLEAN、INTEGER、BIT STRING、OCTET STRING、REAL、ENUMERATED. 枚举类型的值只是用整数表示的一个符号,而不具有整数的性质。下面是定义枚举类型的例子:Etherne

9、tAdapterStatus:=ENUMERATEDnormal(0),degraded(1), offline(2),failed(3)1. 简单类型 第18页,共86页,2022年,5月20日,1点23分,星期一第二组包括各种字符串类型,标签为UNIVERSAL 1822和UNIVERSAL 2527(表示字符类型 为何如此多的类型?)第三组包括OBJECT IDENTIFIER和Object Descriptor两种类型。第四组包含4种类型。NULL是空类型,EXTERNAL是外部类型,UTCTime和GeneralizedTime是两种有关时间的类型,其区别是表示时间的形式不同。例如

10、20000721182053.7是GeneralizedTime类型的一个值,表示2000年7月21日,当地时间18点20分53.7秒。20000721182053.7Z表示同样的时间,但是加了符号Z,则表示UTC时间。第19页,共86页,2022年,5月20日,1点23分,星期一2. 构造类型构造类型有序列和集合两种,分别用SEQUENCE和SEQUENCE OF表示不同类型和相同类型元素的序列,分别用SET和SET OF表示不同类型和相同类型元素的集合。他们的区别是什么?第20页,共86页,2022年,5月20日,1点23分,星期一下面是定义序列类型的例子:EthernetCollisio

11、nsCounter:=SEQUENCE highValue INTEGER, lowValueINTEGER TokenRingTokensLost:=SEQUENCE highValueINTRGER, lowValueINTEGER LanSimpleCounterLimits:=SEQUENCE ethernetCounter1 COMPONENTS OF EthernetCollisionsCounter, tokenRingCounter1COMPONENTS OF TokenRingTokensLost 第21页,共86页,2022年,5月20日,1点23分,星期一下面是定义集合类

12、型的例子:LanWorkstationSerialNumbers:=OCTET STRING(SIZE(32)LanSegment:=SET OF LanWorkstationSerialNumbersMacAddresses:=OCTET STRING(SIZE(6)EthernetNetworks:=SET OF MacAddressesTokenRingNetworks:=SET OF LanSegmentLanNetwork:=SET etherNet 0 IMPLICIT EthernetNetworks, tokenNet 1 IMPLICIT TokenRingNetworks

13、第22页,共86页,2022年,5月20日,1点23分,星期一3. 标签类型 Exuniv:=UNIVERSAL 2 INTEGER Exappl:=APPLICATION 0 INTEGER Expriv:=PRIVATE 1 INTEGER 标签由一个 标签类 和 一个 标签号 组成。指应用或用户加在某个类型上的标签。加上一个标签后就是一个新的类型。标签类型作用?例如集合中有3个同样类型的元素,一个指本人的名字,一个指父亲的名字,另一个指母亲的名字,分别为其指定不同的上下文专用标签1、2和3以示区别,参见下例: 第23页,共86页,2022年,5月20日,1点23分,星期一Parentag

14、e:=SETSubjectName1 IMPLICIT IA5String,MotherName 2 IMPLICIT IA5String OPTIONAL,FatherName 3 IMPLICIT IA5String OPTIONAL 在编码中注意: Expriv:=PRIVATE 1 IMPLICIT INTEGER Expriv:=PRIVATE 1 (EXPLICIT) INTEGER 新老标签编码?第24页,共86页,2022年,5月20日,1点23分,星期一4. 其他类型(他们类型的作用?)CHOICE和ANY是两个没有标签的类型, 下面是定义CHOICE类型的例子:Ethern

15、etAdapterNumber:=CHOICENULL, OCTET STRING第25页,共86页,2022年,5月20日,1点23分,星期一ANY类型表示任意类型的任意值例1,我们可以定义SoftwareVersion:=ANY 例2,TextBook:=SEQUENCE author IA5String, reference ANY 第26页,共86页,2022年,5月20日,1点23分,星期一实例 author “sfssfs”, reference IA5String “42342sf” author “sfssfs”, reference INTEGER 1988 第27页,共86

16、页,2022年,5月20日,1点23分,星期一2.2.2 子类型子类型是由限制父类型的值集合而导出的类型,因此子类型的值集合是父类型的子集。子类型还可以再产生子类型。(面向对象)第28页,共86页,2022年,5月20日,1点23分,星期一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),

17、june(6),july(7),august(8),september(9),october(10),november(11),december(12) 第29页,共86页,2022年,5月20日,1点23分,星期一则可以定义First-quarter和Second-quarter为Months的子类型:First-quarter:=Months(january,february,march)Second-quarter:=Months(april,may,june) 第30页,共86页,2022年,5月20日,1点23分,星期一2. 包含子类型(与前者的区别?)这里要用到关键字INCLUDE

18、S,说明被定义的类型包含了已有类型的所有的值。例如下面的定义:First-half:=Months(INCLUDES First-quarter | I NCLUDES Second-quarter)第31页,共86页,2022年,5月20日,1点23分,星期一3. 值区间( ?)这种方法只能应用于整数和类型,指出子类型可取值实数的区间。在下面的定义中PLUS-INFINITY和MINUS-INFINITY分别表示正、负最大值,MAX和MIN分别表示父类型可允许的最大值和最小值,区间可以是闭区间或开区间。如果是开区间,则加上符号“”。因此下面4个定义是等价的: PositiveInteger:

19、=INTEGER(0.PLUS-INFINITY) PositiveInteger:=INTEGER(1.PLUS-INFINITY) PositiveInteger:=INTEGER(0.MAX) PositiveInteger:=INTEGER(1.MAX) 第32页,共86页,2022年,5月20日,1点23分,星期一同理,下面4个定义也是等价的: NegativeInteger:=INTEGER(MINUS-INFINITY.0) NegativeInteger:=INTEGER(MINUS-INFINITY.-1) NegativeInteger:=INTEGER(MIN.0) Ne

20、gativeInteger:=INTEGER(MIN.-1) 第33页,共86页,2022年,5月20日,1点23分,星期一4. 可用字符(与单个值?区别?)这种方法只能用于字符串类型,限制可使用的字符集。下面是两个限制可用字符的例子: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月20日,1点23分,星期一5. 限制大小可以限制其规模大小,例如限制比特串、字节串或字符串的长度,限制构成序列或集合的元

21、素(同类型)个数等。例如公共数据网的地址由514个数字组成,这个规定可用下面的定义表示:It1DataNumber:=DigitString(SIZE(5.14)第35页,共86页,2022年,5月20日,1点23分,星期一6. 内部子类型(约束)这种方法可用于序列、集合和CHOICE类型。这是一种很复杂的子类型关系,下面用例子说明。假定有一种协议数据单元:PDU:=SETalpha0 INTEGER, beta 1 IA5String OPTIONAL, gamma2 SEQUENCE OF Parameter, delta 3 BOOLEAN 第36页,共86页,2022年,5月20日,1

22、点23分,星期一下面定义的子类型测试协议数据单元要求布尔值必须是FALSE,整数值必须是负的:TestPDU:=PDU(WITH COMPONENTS.delta(FALSE),alpha(MIN. ?表示0126 指明后续用于表示长度的字节数 第63页,共86页,2022年,5月20日,1点23分,星期一 例如,L长度为(255)10可表示为 L= 10000001 11111111 T L V那么256长度 要用几个字节表示长度?可表示为多少?第64页,共86页,2022年,5月20日,1点23分,星期一那么256 要用几个字节表示长度?可表示为多少?1000001000000001000

23、00000指出 V 字段长度 = 256 字节指出后续字节数 = 2后续字节数 = 2 L标志位标志位:长度:长度值第65页,共86页,2022年,5月20日,1点23分,星期一TLV 中的 L 字段定义 V 字段的长度 指出 V 字段长度 = 2 字节00000010100000100000000100000110单字节的 L 字段指出 V 字段长度 = 262 字节多字节的 L 字段指出后续字节数 = 2后续字节数 = 2263呢?简单的计算方法?第66页,共86页,2022年,5月20日,1点23分,星期一name valueGet-request 报文 ASN.1 编码? V01 03

24、 06 01 02 01 01 01 00 L09 TOBJECT IDENTIFIER TNULL L00 L01 TSEQUENCE L0D L0F 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第67页,共86页,2022年,5月20日,1点23分

25、,星期一十六进制编码A0 1D /A0编码? 02 04 05 AE 56 02 /request-id 02 01 00 /error-status 02 01 00 /error-index 30 0F / SEQUENCE 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年,5月20日,1点23分,星期一Get-request

26、 报文的ASN.1定义形式Get-request-PDU:=0IMPLICIT SEQUENCE Request-id INTEGERError-status INTEGER018Error-index INTEGER0max-bindingsVariable-bindings VarBindListVarBindList:=SEQUENCE OF VarBindVarBind:=SEQUENCE name OBJECT INDETIFIER value NULL / SEQUENCE OF 和SEQUENCE 两种结构的区别?标签值?第69页,共86页,2022年,5月20日,1点23分,星

27、期一2.4 ASN.1宏定义 2.4.1 模块定义模块定义的基本形式为 DEFINITIONS := BEGIN EXPORTS IMPORTS AssignmentList END 意义何在?第70页,共86页,2022年,5月20日,1点23分,星期一一个模块定义的例子:? LanNetworkModuleiso org dod internet private enterprises Xenterprises 95DEFINITIONS EXPLICIT TAGS:= BEGIN EXPORTS LanNetworkName:=SEQUENCE OF RelativeDistinguis

28、hedName-End of EXPORTS IMPORTS 第71页,共86页,2022年,5月20日,1点23分,星期一RelativeDistinguishedName FROM InformationFrameworkioint-iso-ccitt Ds(5) modules(1) informationFramework(1) -End of IMPORTS MacAddresses:=OCTET STRING(SIZE(6) LanWorkstationSerialNumbers:=OCTET STRING(SIZE(32) LanSegment:=SET OF LanWorkst

29、ationSerialNumbers EthernetNetworks:=SET OF MacAddresses TokenRingNetworks:=SET OF LanSegment LanNetwork:=SET etherNet 0 IMPLICIT EthernetNetworks, tokenNet 1 IMPLICIT TokenRingNetworks END 第72页,共86页,2022年,5月20日,1点23分,星期一2.4.2 宏表示 宏表示:ASN.1提供的一种表示机制,用于定义宏; 宏定义:用宏表示定义的一个宏,代表一个宏实例的集合; 宏实例:用具体的值代替宏定义中的

30、变量而产生的实例,代表一种具体的类型。模块定义和上面哪种 定义有关系?有什么关系?第73页,共86页,2022年,5月20日,1点23分,星期一宏定义的一般形式如下: MACRO:= BEGIN TYPE NOTATION:= VALUE NOTATION:= END 第74页,共86页,2022年,5月20日,1点23分,星期一下面是取自RFC 1155的关于对象类型的宏定义,包含两个支持产生式子。OBJECT-TYPE MACRO:=BEGIN TYPE NOTATION:=Syntax type(TYPE ObjectSyntax) ACCESS Access STATUS Status

31、 VALUE NOTATION:= value(VALUE ObjectName) Access:= read-only |read-write |write-only |not-accessible Status:= mandatory |optional |obsolete END 第75页,共86页,2022年,5月20日,1点23分,星期一2.4.3 宏定义示例关于为什么要用宏定义? 假设我们经常需要使用整数对,于是我们定义一个ASN.1类型:Pair-integers:=SEQUENCE(INTEGER,INTEGER)如果我们还需要使用字节串对,也可以定义相应的类型:Pair-oc

32、tet-string:=SEQUENCE(OCTET STRING, OCTET STRING) 第76页,共86页,2022年,5月20日,1点23分,星期一简化类型定义的方法是使用宏定义。我们定义一个宏PAIR,它是一个类型对:PAIR TYPE-X=type TYPE-Y=type 第77页,共86页,2022年,5月20日,1点23分,星期一对应的值表示采用下面的形式:(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年,5月20日,1点23分,星期一下面的值是T2类型:(X=Name, Y=(X=4, Y=FALSE)显然,只要用已知的类型代替关键字type,就可以得到需要的数对类型。图2.5给出了PAIR的宏定义第7

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论