是否可以发送LDAP;“请求”;通过电话网?

是否可以发送LDAP;“请求”;通过电话网?,ldap,network-protocols,telnet,Ldap,Network Protocols,Telnet,我想知道是否有可能通过telnet(或其他程序)建立到LDAP服务器的连接,并开始发出请求和接收响应,就像我通常使用HTTP那样。事实上,这个问题更一般,与我对网络连接和通信协议的误解有关。让我告诉你我对这个话题的想法: 所有应用程序协议都定义了通信协议(即服务器将要理解的消息,并在其传递时采取行动)。如果我知道应用程序协议是如何工作的,我可以建立到服务器的连接(守护进程控制该协议服务器端)并开始与服务器通信。例如,通过HTTP,我可以通过telnet建立与HTTP服务器的连接,并开始与他交谈,

我想知道是否有可能通过telnet(或其他程序)建立到LDAP服务器的连接,并开始发出请求和接收响应,就像我通常使用HTTP那样。事实上,这个问题更一般,与我对网络连接和通信协议的误解有关。让我告诉你我对这个话题的想法:

所有应用程序协议都定义了通信协议(即服务器将要理解的消息,并在其传递时采取行动)。如果我知道应用程序协议是如何工作的,我可以建立到服务器的连接(守护进程控制该协议服务器端)并开始与服务器通信。例如,通过HTTP,我可以通过telnet建立与HTTP服务器的连接,并开始与他交谈,例如:

GET /users/pepito HTTP/1.1
Host: stackoverflow
Content-Type: text/html
我希望此过程适用于任何应用程序协议。这个概念正确吗???


我瞥见了这些信息,但我不理解这些信息的格式。我的意思是,我希望读一些类似HTTP协议规范的东西;但它太普通了。您能给我一个如何进行LDAP搜索的示例吗?

LDAP RFC指定LDAP消息是ASN1编码的。这意味着消息是特殊格式的二进制数据,而不是遵循特殊格式的文本。这使得使用telnet手工编写ladap查询变得非常困难。

您可以从一些命令行朋友那里获得一些帮助:-)

下面是一个简单LDAP查询的hextump——它相当于
ldapsearch-x-b”“-s base objectclass=top

30 0c 02 01 01 60 07 02 01 03 04 00 80 00
30 2c 02 01 02 63 27 04 00 0a 01 00 0a 01 00 02 01 00 02 01 1e 01 01 00 a3 12 04 0b 6f 62 6a 65 63 74 63 6c 61 73 73 04 03 74 6f 70 30 00
将其保存到名为ldap.hextump的文件中,然后可以使用nc:

xxd -r -p ldap.hexdump | nc ldapserver 389
如果要查看解析的输出,可以使用unber:

xxd -r -p ldap.hexdump | nc ldapserver 389 | unber -m -

如果您出于某种原因不能使用ldapsearch,并且希望使用nc或openssl来测试LDAP服务器是否正确响应,那么这可能会派上用场。它假定服务器接受匿名绑定以查询空的基本DN(根DSE)。

为什么“希望任何应用程序协议都会发生这种情况”?它在哪里说它们看起来都像HTTP,在行中有可读的头?其中一些是这样的(FTP、SMTP等)。甚至更多的人不这样做,因为我无法想象以其他方式建立交流。我需要向服务器发送一些东西,这些东西必须是可读的(可能是编码的,但是编码的“字符串”在第一个实例中是不可读的?)。如何管理其他协议?你能给我举个例子吗?谢谢你,朋友。你不需要一个例子。您需要LDAP协议规范,并且需要被告知无法通过将其键入Telnet客户端来手动发送。为什么不呢?我想举个例子对我很有用。我的意思是,给出一个ASN1规范,这是这样编码的,信息是这样的。我觉得这很有用。关于你的最后一句话,为什么我不能通过直接在Telnet客户中键入来手动发送?如果我按照LDAP的说明(ASN1 BER)手动编码消息,然后通过Telnet发送该消息,会怎么样?那不可能吗?谢谢,这没有任何意义。你不能有一个不存在的东西的例子,不管它有多有用。你不能在Telnet会话中键入二进制数据,如果不添加不属于协议一部分的换行符,你就无法让它发送任何内容。嗯,谢谢,我开始理解。。。因此,当我阅读RFC时,添加操作是这样描述的:你能给我一个例子,我如何在ASN1中对其进行编码。你可以在这里看一看ASN1编码的例子:编码的ASN1 PDU可以是这样的(十六进制):3013020105160E416E79626F647920746875656565653fthanks我的朋友