根据我的理解:
ASN.1具有广泛的使用范围,SMI是ASN.1的子集,专门用于SNMP。
这是对的吗?如果没有,有什么区别?
答案 0 :(得分:2)
ASN.1是标准化的表示法。从RFC 2578开始,SMI似乎使用了这种符号,就像我目前使用英语语法来构造这些句子一样。例如,在第2节中,他们给出了:
SNMPv2-SMI DEFINITIONS ::= BEGIN
-- the path to the root
org OBJECT IDENTIFIER ::= { iso 3 } -- "iso" = 1
本文遵循用于定义ASN.1模块的ASN.1语法(" SNMPv2-SMI"),模块中的第一个定义是ASN.1值(" org& #34;)具有特定的ASN.1类型(" OBJECT IDENTIFIER")。
此外,RFC 2578对可能使用的ASN.1表示法进行了限制。例如,在3.1中,它们限制ASN.1标识符使用连字符,否则将允许连字符。这就像说在StackOverflow帖子中,我们会根据英语语法使用句子,但不允许使用过去时句。
附注:RFC 2578正在使用ASN.1 1988.存在较新版本的ASN.1标准,并取消了1988标准中的一些表示法(特别是宏)。
答案 1 :(得分:2)
不幸的是,尽管多年来ASN.1委员会试图让IETF使用实际的ASN.1用于SNMP,但是负责SNMP的组以各种方式偏离了ASN.1,这使得它无法用于通用目的ASN.1完全处理SNMP MIB的工具。它们不仅使用撤销的ASN.1 MACRO表示法,而且以这样的方式使用它,即使ASN.1工具仍然支持过时的ASN.1 MACRO表示法,也无法正确处理MIB定义。您需要专门为SNMP MIB创建的特殊工具才能完全解析和正确处理它们。
答案 2 :(得分:0)
这正是教科书上的内容。有关详细信息,请阅读IETF RFC 1155和2578.