SNMP数据包格式

本文关键字:格式 数据包 SNMP | 更新日期: 2023-09-27 18:22:49

我已经试着了解SNMP数据包格式一段时间了,但我仍然不确定我是否掌握了它。以下是我认为我有正确的观察结果,但我不确定:

  1. 每个数据包是一组不同类型的嵌套数据基元,由一个类型、一个长度和一些数据组成
  2. OID的前两个部分始终是1.3,并被编码为单个字节
  3. 如果后续部分的数值小于128,则将其编码为每个一个字节
  4. 大于127的OID部分被编码为多个字节,其值由7个最低有效位确定,除最后一个字节外,所有字节的最高有效位都设置为1
  5. 有些数据类型ID是官方的(整数、字符串等),但有些是专有的和特定于设备的

我真正不明白的是,如果一个特定值的长度超过255个字节,那么该值的长度是如何编码的。使用Wireshark,我发现对于长度小于256的字段,长度字段是1个字节,但对于长度大于256的字段则被拆分为多个字节。但是,较大OID零件号中使用的编码似乎不适用。

我在RFC中找不到任何关于这方面的东西(反正大约有30个)来帮助我。

有人能帮我澄清一下吗,并确认我上面的观察是正确的吗?

SNMP数据包格式

SNMP是使用ASN.1的子集定义的。有一堆标准来描述它;X.690涵盖了基本的二进制编码。