本章讲述了抽象语法标记的基本知识,它是学习和理解SMI、MIB的基础。有兴趣的读者可参考其他的编码方式,如XML(扩展标记语言)、基于安全考虑的专门的二进制编码方式等进行学习。本章讲到的数据表示涉及以下概念。
抽象语法:以抽象的方式定义数据结构的语法。
实际语法:某种编程语言的本地计算机系统的数据表示方法。
传输语法:两个通信端交换协议数据的表示方法。
编码规则:实际语法到传输语法或与其相反操作的方法。
关于ASN.1有太多的内容,本章的主要目的仅仅是让读者对ASN.1有一个基本的常识性的认识,大家只要能做到基本能够读懂SNMP中相关RFC文档,并能在后续MIB编写中使用即可。
由于ASN.1的灵活性很强,刚接触时难免会感到困惑,尤其是在阅读用ASN.1标记的代码时,经常会见到不认识的标识符,那么这些标识符是否是关键字类?是否可以继续替换?抑或是否该替换为具体的类型、具体的值类型、具体的值?当遇到这些问题时,查找标准文献是最根本的解决方法。
在ASN.1中,使用最多的、最常见的是对数据类型的定义。它包括类型定义和值定义。对于习惯高级语言开发的读者往往会感到有些不适应,认为ASN.1定义有些啰唆。实际上ASN.1中的类型定义是对类型取了个别名,同时加以限制而已。这个限制包括别名名称的限制和格式的限制。值的定义就是一个赋值过程,希望读者轻松对待。