SNMP帧中长度字段的最大大小是多少?

SNMP帧中长度字段的最大大小是多少?,snmp,wireshark,Snmp,Wireshark,通过实现SNMP v1解码器并使用一些Wireshark捕获,我可以看到,如果使用一个字节编码,有时BER的长度字段是一个字节,有时使用两个字节编码 读取BER规则时,如果将更有意义的位设置为1,则必须使用下一个字节扩展长度值,以表示大于255的值 所以,如果第一个字节是0x81,下一个字节是0x9F,那么扩展长度字段应该取0x9F值。。。嗯 我的问题是: 如果第二个字节为0x9F,则更有意义的位再次为1 Wireshark只需要两个字节的长度 为什么在这种情况下长度的大小只有两个字节 长度字段

通过实现SNMP v1解码器并使用一些Wireshark捕获,我可以看到,如果使用一个字节编码,有时BER的长度字段是一个字节,有时使用两个字节编码

读取BER规则时,如果将更有意义的位设置为1,则必须使用下一个字节扩展长度值,以表示大于255的值

所以,如果第一个字节是0x81,下一个字节是0x9F,那么扩展长度字段应该取0x9F值。。。嗯

我的问题是: 如果第二个字节为0x9F,则更有意义的位再次为1

Wireshark只需要两个字节的长度

为什么在这种情况下长度的大小只有两个字节

长度字段限制为2字节


谢谢

根据BER规则,长度字段可以是多个字节(远大于2)

长度字段

密钥的字节后面是密钥的字节 长度字段,它将告诉您长度后面有多少字节 字段并组成值部分。有四种编码 对于长度字段:1字节、2字节、4字节和基本编码规则 (贝尔)。1、2和4字节的变体非常简单: 从字节中生成一个无符号整数,该整数就是 后面的字节数

BER长度编码稍微复杂一些 复杂但最灵活。如果长度中的第一个字节 字段未设置高位(0x80),则为该单个字节 表示介于0和127之间的整数,并指示 紧跟其后的值字节。如果设置了高位,则 较低的七位表示后面的字节数 向上移动长度字段

例如,如果BER长度字段的第一个字节 是二进制1000010,表示接下来的两个字节 向上搜索一个整数,该整数指示后面有多少个值字节。 因此,总共占用了三个字节来指定长度

“如果第二个字节是0x9F,则更有意义的位又是1。”这是一个问题吗?只有字节中的第一个字节确定使用以下多少字节来确定长度。因此,您永远不需要关心第二个字节的最高有效位。从来没有


Wireshark如何表示字节并不十分关键。除非Wireshark为您显示了错误的长度值,否则您不应该太注意它。

根据BER规则,长度字段可以是多个字节(远大于2)

长度字段

密钥的字节后面是密钥的字节 长度字段,它将告诉您长度后面有多少字节 字段并组成值部分。有四种编码 对于长度字段:1字节、2字节、4字节和基本编码规则 (贝尔)。1、2和4字节的变体非常简单: 从字节中生成一个无符号整数,该整数就是 后面的字节数

BER长度编码稍微复杂一些 复杂但最灵活。如果长度中的第一个字节 字段未设置高位(0x80),则为该单个字节 表示介于0和127之间的整数,并指示 紧跟其后的值字节。如果设置了高位,则 较低的七位表示后面的字节数 向上移动长度字段

例如,如果BER长度字段的第一个字节 是二进制1000010,表示接下来的两个字节 向上搜索一个整数,该整数指示后面有多少个值字节。 因此,总共占用了三个字节来指定长度

“如果第二个字节是0x9F,则更有意义的位又是1。”这是一个问题吗?只有字节中的第一个字节确定使用以下多少字节来确定长度。因此,您永远不需要关心第二个字节的最高有效位。从来没有

Wireshark如何表示字节并不十分关键。除非Wireshark为您显示了错误的长度值,否则您不应该太注意它。

我要补充的是,SNMP()使用UDP数据报进行传输,传输限制为65535字节,即0xffff。编码长度最多只需要2个字节。

我要补充的是,SNMP()使用UDP数据报进行传输,传输限制为65535个字节,即0xffff。编码长度最多只需要2个字节。

在ASN.1 BER长度编码规则中:
a) 如果ASN.1 BER长度编码规则中的内容八位字节数:

a) 如果内容的八位字节数是多少,谢谢你的回答。我用它作为实现解码器的参考。那个页面讨论了获取长度值的不同方法,所以我现在有点困惑。我将做更多的测试,以获得“正确”的长度。谢谢你的回答。我用它作为实现解码器的参考。那个页面讨论了获取长度值的不同方法,所以我现在有点困惑。我将做更多的测试,以获得“正确”的长度测量方法。