为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

网络管理技术教程第03章-ASN.1基础

2018-12-18 34页 ppt 657KB 14阅读

用户头像 个人认证

孟子73代

暂无简介

举报
网络管理技术教程第03章-ASN.1基础第3章ASN.1语言基础知识本章目录3.1ASN.1的基本概念3.2ASN.1语法规范3.3BER的基本概念3.1ASN.1的基本概念ASN.1语言的概念抽象语法表示(ASN,AbstractSyntaxNotation)是一种独立于硬件的高级语言ASN.1语法可用来描述各种类型的数据,包括文本、图形、视频与音频等ASN.1编码可用来规范数据传输过程,解决异构网络对数据理解的二义性ASN.1支持的编码规范基本编码规范(BER,BasicEncodingRules)严格编码规范(CER,CanonicalEncodingRule...
网络管理技术教程第03章-ASN.1基础
第3章ASN.1语言基础知识本章目录3.1ASN.1的基本概念3.2ASN.1语法规范3.3BER的基本概念3.1ASN.1的基本概念ASN.1语言的概念抽象语法示(ASN,AbstractSyntaxNotation)是一种独立于硬件的高级语言ASN.1语法可用来描述各种类型的数据,包括文本、图形、视频与音频等ASN.1编码可用来规范数据传输过程,解决异构网络对数据理解的二义性ASN.1支持的编码规范基本编码规范(BER,BasicEncodingRules)严格编码规范(CER,CanonicalEncodingRules)唯一编码规范(DER,DistinguishedEncodingRules)压缩编码规范(PER,PackedEncodingRulesXML编码规范(XER,XMLEncodingRules)ASN.1的主要应用SNMP(简单网络管理协议)X.400(信息处理服务协议)X.500(目录访问服务协议)H.323(基于分组的多媒体通信VoIP结构)RSA(公钥密码体制)SET(安全电子商务)3.2ASN.1语法规范3.2.1ASN.1数据类型简单类型:直接规定取值集合的类型,其中不会包括任何组件结构类型:由多个组件构成的类型,每个组件是一个简单类型或结构类型标签类型:主要用于区分不同类型数据,特别是SEQUENCE与SET中相同类型的组件ASN.1简单类型 简单类型 类型说明 INTEGER 整数型(正、负整数与0的集合) BOOLEAN 布尔型(True与False的集合) REAL 实数型(正、负实数与0的集合) ENUMERATED 枚举型(字符串与值的对应关系) BITSTRING 比特流(二进制数组成的比特串) OCTETSTRING 字节流(十六进制数组成的字节串) NULL 空类型(只有一个值null) EXTERNAL 自定义类型ASN.1结构类型 结构类型 类型说明 SEQUENCE 多个类型的有序集合(类似C的结构) SEQUENCEOF 某个类型的有序集合(类似C的数组) SET 多个类型的无序集合(类似SEQUENCE) SETOF 某个类型的无序集合(类似SEQUENCEOF) CHOICE 多个类型的可选集合(取其中一个类型) ANY 任意类型SEQUENCE与SEQUENCEOFSEQUENCE表示多种类型的有序集合 Student::==SEQUENCE{NameOCTETSTRING,AgeINTEGER}SEQUENCEOF表示某种类型的有序集合 Studens::==SEQUENCEOFStudentASN.1标签类型通用类(UniversalClass)应用类(ApplicationClass)私有类(PrivateClass)指定类(Context-specificClass)通用类标签(1) 通用类标签 类型说明 UNIVERSAL1 布尔型(BOOLEAN) UNIVERSAL2 整数型(INTEGER) UNIVERSAL3 比特流(BITSTRING) UNIVERSAL4 字节流(OCTETSTRING) UNIVERSAL5 空类型(NULL) UNIVERSAL6 对象标识符(OBJECTIDENTIFIER)通用类标签(2) 通用类标签 类型说明 UNIVERSAL7 对象描述符(OBJECTDESCRIPTION) UNIVERSAL8 自定义类型(EXTERNAL) UNIVERSAL9 实数型(REAL) UNIVERSAL10 枚举型(ENUMERATED) UNIVERSAL16 有序结构类型(SEQUENCE与SEQUENCEOF) UNIVERSAL17 无序结构类型(SET与SETOF)标签类型的定义方法隐式标签通过改变组件类型的标签生成,隐式标签定义的关键字是IMPLICIT显式标签通过在组件类型的标签之外添加一个外部标签生成,显式标签定义的关键字是EXPLICITASN.1语法默认使用显式标签3.2.2ASN.1命名方法关键字:有专用名称,全部字符大写类型名:数据类型名称,首字符大写模块名:模块名称,首字符大写宏名:宏名称,全部字符大写对象名:数据对象名称,首字符小写主要的ASN.1关键字 关键字名称 关键字用途 DEFINITIONS 定义模块、类型或对象 MACRO 定义宏 BEGIN 定义模块或宏的开始 END 定义模块或宏的结束 IMPORTS 从其它模块引用的数据类型 EXPORTS 可被其它模块引用的数据类型 IDENTIFIER 零与正整数序列主要的ASN.1符号 符号名称 符号用途 ::= 模块、类型、宏定义或对象赋值 {} 相关项的开始与结束 [] 可选项的开始与结束 | 可选项中任选其一 () 子类型的开始与结束 .. 子类型的取值范围 -- 注释部分的开始与结束 … 多次重复的内容3.2.3ASN.1语法数据类型定义(DataTypeDefinition)宏定义(MacroDefinition)模块定义(ModuleDefinition)ASN.1数据类型定义(1) --基本类型定义<typename>::=<type>--子类型定义<typename>::=<type>(<constraint>)--SEQUENCE类型定义<typename>::=SEQUENCE{<type><name>,<type><name>,…}--SEQUENCEOF类型定义<typename>::=SEQUENCEOF<type><name>ASN.1数据类型定义(2) Counter::=INTEGER--基本类型定义IpAddress::=OCTETSTRINGifEntry::=SEQUENCE{--SEQUENCE类型定义ifIndexINTEGER,ifDescrOCTETSTRING,ifTypeINTEGER,ifMtuINTEGER,ifSpeedGauge,ifPhysAddressOCTETSTRING,ifAdminStatusINTEGER,ifOperStatusINTEGER,ifLastChangeTimeTicks,ifInOctetsCounter,ifInUcastPktsCounter,ifInNUcastPktsCounter,ifInDiscardsCounter,ifInErrorsCounter,ifInUnknownProtosCounter,ifOutOctetsCounter,ifOutUcastPktsCounter,ifOutNUcastPktsCounter,ifOutDiscardsCounter,ifOutErrorsCounter}ifTable::=SEQUENCEOFifEntry--SEQUENCEOF类型定义ASN.1数据赋值 switchNumberCounter::=24--基本类型赋值switchAddressIpAddress::=192.168.1.1switchEntry::=SEQUENCE{--SEQUENCE类型赋值ifIndex24,ifDescr"ethernet-csmacd",ifType6,ifMtu1500,ifSpeed10000000,ifPhysAddress"08-01-00-2A-10-C3",ifAdminStatus1,ifOperStatus1,ifLastChange6000,ifInOctets60000,ifInUcastPkts1200,ifInNUcastPkts600,ifInDiscards10,ifInErrors6,ifInUnknownProtos0,ifOutOctets120000,ifOutUcastPkts2000,ifOutNUcastPkts400,ifOutDiscards6,ifOutErrors2}ASN.1宏定义(1) <macroname>MACRO::=BEGIN--数据类型语法TYPENOTATION::=<syntaxofnewtype>--数据赋值语法VALUENOTATION::=<syntaxofnewvalue><AssignmentList>--辅助语法ENDASN.1宏定义(2) OBJECT-TYPEMACRO::=BEGINTYPENOTATION::="SYNTAX"type(TYPEObjectSyntax)"ACCESS"Access"STATUS"StatusVALUENOTATION::=value(VALUEObjectName)Access::="read-only"|"read-write"|"write-only"|"not-accessible"Status::="mandatory"|"optional"|"obsolete"ENDASN.1宏赋值 sysDescrOBJECT-TYPESYNTAXOCTETSTRINGACCESSread-onlySTATUSmandatory::={system1}ASN.1模块定义(1) <modulename>DEFINITIONS::=BEGINEXPORTS--本模块中可供其它模块引用的定义IMPORTS--本模块使用从其它模块引用的定义AssignmentList--宏、类型定义与对象赋值ENDASN.1模块定义(2) RFC1155-SMIDEFINITIONS::=BEGINEXPORTSinternet,directory,mgmt,experimental,private,enterprises,OBJECT-TYPE,ObjectName,ObjectSyntax,SimpleSyntax,ApplicationSyntax,NetworkAddress,IpAddress,Counter,Gauge,TimeTicks,Opaque;--thepathtotherootinternetOBJECTIDENTIFIER::={isoorg(3)dod(6)1}directoryOBJECTIDENTIFIER::={internet1}mgmtOBJECTIDENTIFIER::={internet2}experimentalOBJECTIDENTIFIER::={internet3}privateOBJECTIDENTIFIER::={internet4}enterprisesOBJECTIDENTIFIER::={private1}ASN.1模块定义(3) --definitionofobjecttypesOBJECT-TYPEMACRO::=BEGINTYPENOTATION::="SYNTAX"type(TYPEObjectSyntax)"ACCESS"Access"STATUS"StatusVALUENOTATION::=value(VALUEObjectName)Access::="read-only"|"read-write"|"write-only"|"not-accessible"Status::="mandatory"|"optional"|"obsolete"ENDASN.1模块定义(4) --namesofobjectsintheMIBObjectName::=OBJECTIDENTIFIER--syntaxofobjectsintheMIBObjectSyntax::=CHOICE{simpleSimpleSyntax,application-wideApplicationSyntax}SimpleSyntax::=CHOICE{numberINTEGER,stringOCTETSTRING,ObjectOBJECTIDENTIFIER,emptyNULL}ApplicationSyntax::=CHOICE{addressNetworkAddress,counterCounter,gaugeGauge,ticksTimeTicks,arbitraryOpaque}ASN.1模块定义(4) --application-widetypesNetworkAddress::=CHOICE{internetIpAddress}IpAddress::=[APPLICATION0]IMPLICITOCTETSTRING(SIZE(4))Counter::=[APPLICATION1]IMPLICITINTEGER(0..4294967295)Gauge::=[APPLICATION2]IMPLICITINTEGER(0..4294967295)TimeTicks::=[APPLICATION3]IMPLICITINTEGER(0..4294967295)Opaque::=[APPLICATION4]IMPLICITOCTETSTRINGEND3.3BER的基本概念BER编码的概念BER是ASN.1语言支持的主要编码规范。BER编码用于完成数据的编码,避免数据在异构网络中传输时出现二义性在SNMP网络管理中,发送方通过ASN.1语法构造SNMP消息,将SNMP消息按BER编码后发送,接收方对BER编码解码获得SNMP消息BER编码的基本结构BER编码采用(TLV,TypeLengthValue)结构,每个字节按类型(Type)、长度(Length)与数值(Value)顺序编码类型字节的结构类型字节的第7与第8位表示标签类型,数值00表示通用类,数值01表示应用类第6位表示简单类型或结构化类型,数值0表示简单类型,数值1表示结构化类型第1至第5位表示标签号,对简单类型是通用类标签号,对其它类型是自定义标签号
/
本文档为【网络管理技术教程第03章-ASN.1基础】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索