进行 SNMPv3 连接时,是否需要指定 "Context Name"

When making SNMPv3 connection, is it necessary to specify "Context Name"

当我们建立SNMPv3连接时,主要有以下参数。

我想知道,连接时是否需要指定“SNMPV3ContextName”。我没有找到任何明确提及的 SNMP RFC Doc 和其他链接。 我有一个应用程序,如果用户没有输入,它会询问上下文名称。我怀疑它不应该要求输入上下文名称,因为它看起来像是可选参数。 我引用的 RFC:https://www.rfc-editor.org/rfc/rfc5343

tl;dr:可能不是。

RFC 5343 说:

The contextName is a character string (following the SnmpAdminString textual convention of the SNMP-FRAMEWORK-MIB [RFC3411])

和 RFC 3411 将 SnmpAdminString 定义为 OCTET STRING (SIZE (0..255)).

所以,它可以是空的。我找不到任何东西来限制它,所以允许使用空字符串。根据这些 RFC(以及 RFC 3412),它似乎是一种在 contextEngineIDif 之上添加多个上下文的方法,如果您的引擎需要这种消除歧义的功能(以处理它作为多个引擎,在某种意义上)。

然而,与任何 SNMP 一样,某些实现可能会施加自己的约束,或者根本不符合规范。因此,您应该查阅您正在使用的技术的文档。