首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LDAP长消息长度表示

LDAP长消息长度表示
EN

Stack Overflow用户
提问于 2017-10-29 12:16:29
回答 1查看 139关注 0票数 2

我正在对LDAP客户机-服务器通信中的消息进行剖析,并且很难理解消息长度是如何计算的。

根据LDAP标准,在ASN.1中通信时,每条消息都以0x30 (ldap消息开始)开头,下面的字节应该是消息长度(或后面的数字或相关字节),直到有0x20x1发出消息ID的信号为止。

在短消息中,它可以如下所示:

代码语言:javascript
复制
0x30    (start),
0x3c    (length),
0x2     (msg id..
0x1
0x1     ),
...

在DEC中,长度是0x3c或简单的60,直到消息结束之前,以下字节数实际上是 60。

稍微长一点的消息可以如下所示:

代码语言:javascript
复制
0x30    (start),
0x81    (???),
0x8e    (length),
0x2     (msg id..
0x1
0x1     ),
...

0x8e (或DEC中的142 ),但前一个字节意味着什么?

更长的消息如下所示:

代码语言:javascript
复制
0x30    (start),
0x82    (???),
0x2     (???),
0xe3    (???),
0x2     (msg id..
0x1
0x1     ),
...

0x820x20xe3 (或DEC中的1302227 )都不是实际长度(实际上是739)

我看不出最后两个例子之间的逻辑。代码中的长度是如何表示的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-29 12:28:53

在ASN.1中有两种编码长度的方法--定形和不定形。

对于确定的形式,如果长度小于128,则只使用单个字节,将高位设置为零。否则,高比特设置为1,低7位设置为长度长度。然后将长度编码成这么多字节(按大端顺序)。

0x82的高位数为1,其余比特等于2,这意味着以下2个字节包含长度(0x02E3 = 739)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47000072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档