2012-07-18 109 views
10

我想知道是否有可能通过telnet(或其他程序)建立与LDAP服务器的连接,并开始发出请求并接收响应,正如我通常使用HTTP所做的那样。事实上,这个问题更为通用,与我对网络连接和通信协议的误解有关。让我告诉你关于此主题的想法:是否可以通过telnet发送LDAP“请求”?

所有应用程序协议都定义了通信协议(即服务器将要了解并在其交付时执行的消息)。如果我知道应用程序协议是如何工作的,我可以建立到服务器的连接(守护程序控制协议服务器端)并开始与服务器通信。例如与HTTP,我可以建立通过telnet到HTTP服务器的连接,并开始与他这个请求,例如说话:

GET /users/pepito HTTP/1.1 
Host: stackoverflow 
Content-Type: text/html 

我期待这个过程与任何应用程序协议的情况发生。这个概念对吗?

我瞥了一眼LDAP Protocol Specification RFC但我不明白这些消息的格式。我的意思是,我期待阅读诸如HTTP协议规范之类的东西;但它太过于通用。你能举一个例子来说明如何进行LDAP搜索吗?

+1

*你为什么*期待这种情况发生在任何应用协议中?它在哪里说它们全都看起来像HTTP,并且可读的标题在行中? *他们中的一些人(FTP,SMTP,...)。其中更多的人不会。 – EJP 2012-07-18 22:48:04

+0

因为我无法想象通过其他方式建立通信。我需要向服务器发送一些东西,这些东西必须是可读的(可能是编码,但编码的'字符串'在第一个实例中是不可读的?)。其他协议如何管理?你能举个例子吗?谢谢你,朋友。 – flyer88 2012-07-18 23:46:53

+0

你不需要一个例子。您需要LDAP协议规范,并且您需要被告知无法通过将其键入到Telnet客户端手动发送它。 – EJP 2012-07-19 12:36:05

回答

20

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

+0

嗯,谢谢,我开始明白...所以当我阅读RFC时,添加操作是这样描述的: http://tools.ietf.org/html/rfc4511#section-4.7 你能给我和例子,我怎么能在ASN1中编码这个。 – flyer88 2012-07-18 23:50:49

+0

您可以在这里查看ASN1编码示例:http://en.wikipedia.org/wiki/Abstract_Syntax_Notation_One – timos 2012-07-19 00:31:51

+0

因此,编码的ASN1 PDU可能如下所示(十六进制):30 13 02 01 05 16 0e 41 6e 79 62 6f 64 79 20 74 68 65 72 65 3f – timos 2012-07-19 00:38:47