网络管理与维护(2.2.1)ASH.1的基本概念(BNF 标签 数据类型)
BNF
BNF(Back Naur form)巴科斯范式,用来描述给定语言的语法规则,即定义一种计算机语言。
几乎每一种新编程语言都会用BNF描述语法规则
ASH.1也采用BNF
- BNF基本格式
- BNF表示数字
ASH.1中的基本类型符号、值符号都有对应的产生式推出
最终符号形式可能不止一种
ASH.1的符号与命名
注意:类型和值等的命名中,应该遵循一下规则:
- 名字中由大小写字母、数字、和连字符‘-’组成
- 不能出现以连字符‘-’结尾,不能出现两个连字符(–),不能出现下划线
右边都是错的
书写规则:
- 多个空格是一个空格,但是在定义符号::=中不能有分隔符,否则不能正常处理
- 带小数点的小数形式不能在ASH.1直接表示,实数定义为:尾数,基数,指数
- 注释以两个连字符“–”开始,结束于结尾或该行中的另一个双连字符
ASH.1是一种数据类型描述语言,类型是可以编码传输的值的非空集合。值是类型的一个实例(ASH.1中的类型主要是为了数据的传输。)
ASH.1描述数据时使用的方法是分别定义数据的类型和值,通过对类型与值的限制,最终实现数据的完整描述
- 数据类型定义:说明类型的名称和格式
这里的定义并没有产生新的ASN.1类型,仅仅是为已有的ASH.1类型定义了一个新的新型类型引用。
想到与typedef为已有类型定义别名
- 值定义;规定讲什么样的具体值赋给某一个类型的变量
标签
ASH.1为了让接收方知道自己的每个数据类型。要对数据类型进行编号
解决办法:
发送方为每个数据类型增加传输标识,称为标签(tag),每个数据类型都被分配tag
ASH.1中,每个类型的tag都是唯一的,是类型的标识符
标签类别分为四种
- 通用类
- 应用类
- 上下文专用类
- 私有类
注意:以上标签类实际上都提供了不同的tag空间,在一个上下文中,如果class不同,则num相同的tag也是不同的.
- P/C指示位: 在标签中用于指明该类型是简单类型还是构造类型
- 标签号:是一个正整数,用来区分同一个类型(class)中的不同类型
数据类型
- 简单类型:由单一成分构成的原子结构
- 构造类型:由两种以上成分构成的构造类型
- 标签类型:由已知类型定义的新类型
- 其他类型:包括CHOICE和ANY
总体概括