第25章 SNMP: 简单网络管理协议
25.11 ASN.1和BER
在正式的S N M P规范中都是采用A S N . 1(Abstract Syntax Notation 1)语法,并且在S N M P报文中比特的编码采用 B E R(Basic Encoding Rule)。和其他介绍S N M P的书不同,我们有目的地把A S N . 1和B E R的讨论放到最后。因为如果放在前面讨论,有可能使读者产生混淆而忽略了S N M P的真正目的是进行网络管理。在这里我们也只是对这两个概念简单地进行解释, [Rose 1990]的第8章详细讨论了A S N . 1和B E R。
A S N . 1是一种描述数据和数据特征的正式语言。它和数据的存储及编码无关。 M I B和S N M P报文中的所有的字段都是用 A S N . 1描述的。例如:对于 S M I中的i p A d d r e s s数据类型,A S N . 1是这样描述的:
代码语言:javascript复制IpAddress ::=
[APPLICATION 0] -- in network-byte order
IMPLICIT OCTET STRING (SIZE (4))
同样,在M I B中,简单变量的定义是这样描述的:
用S E Q U E N C E和SEQUENCE OF来定义表格的描述更加复杂。
当有了这样的A S N . 1定义,可以有多种编码方法把数据编码为传输的比特流。 S N M P使用的编码方法是B E R。例如,对于一个简单的整数如 6 4,在B E R中需要用3个字节来表示。第一个字节说明类型是一个整数,下个字节说明用了多少个字节来存储该整数(在这里是 1),最后一个字节才是该整数的值。
幸运的是,A S N . 1和B E R这两个繁琐的概念仅仅在实现 S N M P的时候才重要,对我们理解网络管理的概念和流程并没有太大的关系。