ASN语法浅析

ASN.1是一种数据定义语言,用于描述数据的表示、编码和解码,常用于网络管理和协议数据单元。其优点在于独立于机器、编程语言和应用程序的内部表示。ASN.1包括基本概念如文本约定、符号定义和抽象数据类型,如简单类型(如BOOLEAN、INTEGER)、构造类型(如SEQUENCE、SET)和标签类型。此外,ASN.1支持子类型限制,如值区间、可用字符等,并可用于定义模块。
摘要由CSDN通过智能技术生成

ASN.1抽象语法标识

ASN.1概述

    抽象语法表示(标记) ASN.1(Abstract Syntax Notation One )一种数据定义语言,描述了对数据进行表示、编码、传输和解码的数据格式。网络管理系统中的管理信息库(MIB)、应用程序的数据结构、协议数据单元(PDU)都是用ASN.1定义的。

ASN.1优点:

通过如下的独立:

⑴ 独立于机器;

⑵独立于程序语言;

⑶独立于应用程序的内部表示,用一种统一的方式来描述数据结构。

解决如下的不同:
⑴ 程序语言之间数据类型不同
⑵ 不同机器平台之间数据的存储方式不同
不同种类的计算机内部数据表示不同
      比如:IBM为EBCDIC,其它为ASCⅡ;Intel的芯片从右到左计数字节数,而Motorola的芯片则从左到计数字节数。


在任何需要以数字方式发送信息的地方,都可使用ASN.1发送各种形式信息。包括音频、视频、图片、数据等。由于各种系统对数据的定义并不完全相同, 这自然给利用其它系统的数据造成了障碍。表示层就担负了消除这种障碍的任务。表示层如同应用程序和网络之间的翻译官:主要解决用户信息的语法表示问题,即提供统一的、格式化的表示和转换数据服务。数据的压缩、解压、加密、解密都在该层完成。


 ASN.1的基本概念 

ASN.1文本的书写规则(文本约定):

(1) 多个空格和空行等效于一个空格;

(2) 用于表示值和字段的标识符、类型指针(类型名)和模块    名由大小写字母、数字和短线组成;

(3) 标识符以小写字母开头;

(4) 类型指针和模块名以大写字母开头;

(5) ASN.1定义的内部类型全部用大写字母表示;

(6) 关键字(保留字)全部用大写字母表示; (7) 注释以一对短线(- -)开始,以一对短线或行尾结束。

在ASN.1中的符号定义

如下表所示

符号 含义
∷= 定义为,或赋值
| 或、选择、列表选项
- 标签号
-- 符号后跟随注释
{ } 列表的开始和结束
[ ] 标签(TAG)的开始和结束
( ) 子类型的开始和结束
.. 范围

 抽象数据类型 

    ASN.1定义的数据类型有20多种,如表2.1所示。这些数据类型可分为4大类。
  ● 简单类型:由单一成分构成的原子类型;
  ● 构造类型:由两种以上元素构成的数据类型;
  ● 标签类型:由已知类型定义的新类型;
  ● 其他类型:包括CHOICE和ANY两种类型。 


表2.1  ASN.1定义的通用类型

标签 类型 值集合

UNIVERSAL 1 BOOLEAN TRUE, FALSE

UNIVERSAL 2 INTEGER 正数、负数和零

UNIVERSAL 3 BIT STRING 0或者多个比特组成的序列

UNIVERSAL 4 OCTET STRING 0或者多个字节组成的序列

UNIVERSAL 5 NULL 空类型

UNIVERSAL 6 OBJECT IDENTIFIER 对象标识符

UNIVERSAL 7 OBJECT DESCRIPTOR 对象描述符

UNIVERSAL 8 EXTERNAL 外部文件定义的类型

UNIVERSAL 9 REAL 所有实数

UNIVERSAL 10 ENUMERATED 整数值的表,每个整数有一个名字

UNIVERSAL 11~15 为ISO8824保留

UNIVERSAL 16 SEQUENCE, SEQUENCE OF 序列

UNIVERSAL 17 SET, SET OF 集合

UNIVERSAL 18 NumericString 数字0~9和空格串

UNIVERSAL 19 PrintableString 可打印字符串

UNIVERSAL 20 TeletexString 由CCITT T.61建议定义的字符集

UNIVERSAL 21 VideotexString 由CCITT T.100/T.101建议定义的字符集

UNIVERSAL 22 IA5String 国际标准字符集(相当于ASCII码)

UNIVERSAL 23 UTCTime 时间码

UNIVERSAL 24 GeneralizedTime 时间码

UNIVERSAL 25 GraphicString 由ISO8824定义的字符集

UNIVERSAL 26 VisibleString 由ISO646定义的字符集

UNIVERSAL 27 GeneralString 通用字符集

UNIVERSAL 28-- 为ISO8824保留

1. 简单类型  
 表2.1中除了UNIVERSAL16和UNIVERSAL17之外都是简单类型。可以用这些类型构造新的数据类型。简单类型分为4组。第一组包括:
    BOOLEAN       布尔类型 
    INTEGER       整型
    BIT STRING       0 个或多个比特组成的字符串类型 
    OCTET STRING   0个或多个字节组成的字符串类型 
    REAL 实数
    ENUMERATED 枚举

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值