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