【发布时间】:2017-10-29 12:16:29
【问题描述】:
我正在剖析 LDAP 客户端-服务器通信中的消息,但无法理解消息长度的计算方式。
基于LDAP标准,在ASN.1中通信时,每条消息都以0x30开头(ldap message start),后面的字节应该是消息长度(或数字或相关字节)接下来) 直到有0x2 和0x1 发出消息ID。这很清楚。
在短消息中,它可能看起来像这样:
0x30 (start),
0x3c (length),
0x2 (msg id..
0x1
0x1 ),
...
长度为0x3c 或简单的60 在DEC 中,直到消息结束的后续字节数是实际上是60。
稍长的消息可能如下所示:
0x30 (start),
0x81 (???),
0x8e (length),
0x2 (msg id..
0x1
0x1 ),
...
长度又恰好在0x8e(或DEC 中的142),但是前一个字节是什么意思?
更长的消息看起来像这样:
0x30 (start),
0x82 (???),
0x2 (???),
0xe3 (???),
0x2 (msg id..
0x1
0x1 ),
...
0x82、0x2 或 0xe3(或 DEC 中的 130、2 或 227)都不是实际长度(实际上是 739)
我看不出最后两个例子之间的逻辑。代码中的长度如何表示?
【问题讨论】: