代码之家  ›  专栏  ›  技术社区  ›  AZ_

使您的应用程序可以像SQL Server实例一样识别DHCP

  •  2
  • AZ_  · 技术社区  · 14 年前

    大家都知道,可以很容易地识别网络中运行SQL SERVER实例的系统,但这是否有可能迫使DHCP识别我的应用程序?

    我有很多客户机和一台服务器。但是在安全的网络中,连接流量和端口侦听器被阻塞。所以我试着用逆向模型。

    我通过查询DHCP成功地获得了所有租用IP的信息,但我希望我的客户端可以查询DHCP,其中是我的服务器,我希望这不需要访问DHCP服务器。

    服务器运行于:192.168.3.245 DHCP:192.168.3.1当我的客户端应用程序在某台计算机上运行时,它会查询有关服务器的DHCP,DHCP应该会告诉他您的服务器正在运行@192.168.3.245

    2 回复  |  直到 14 年前
        1
  •  2
  •   Joel Coehoorn    14 年前

    Sql Server对此不使用dhcp。

    您可以在windows dhcp服务器(和其他服务器)中配置称为“作用域选项”的内容,以通过dhcp请求发送附加信息,但客户端必须知道要查找该信息,而dchp服务器必须支持该信息。诀窍在于,当我说“client”时,我指的是内置在操作系统中的dhcp客户端程序本身,而不是你要构建的客户端程序。另外,并非所有的dhcp服务器都支持这一点,那些不支持来自外部应用程序(如sql server)的动态注册的服务器也不支持这一点。你必须预先配置好。

    我工作的IP电话系统就是一个例子。我们在dhcp中设置自定义选项,这些选项包含有关IP PBX的位置和要使用的VLAN的信息,并且内置在电话中的dhcp客户端知道如何读取这些信息。

    相反,我相信sql server所做的是,每当您试图在网络上找到sqlserver实例时,您都会发送一个UDP广播数据包,任何正在侦听的sqlserver都会响应该数据包来宣布它们的存在。

        2
  •  1
  •   Edwin Buck    14 年前

    您可以向大多数DHCP服务器添加自定义选项字段来传输信息;但是,许多DHCP客户机将放弃它们没有专门编写来处理的任何字段。

    SQL Server实际上有一个不同的网络套接字,它响应UDP广播包并提供有关其实例的信息。客户端实际上不会从dhcp客户端或dhcp客户端处理的任何字段读取SQL Server信息。

    因为客户端可能会丢弃一个它不支持的字段;您可能需要修改dhcp客户端来处理和存储该字段。在应用程序的客户端可能读取存储/获取的值之前。修改dhcp客户端通常只是Linux上的一个选项,即使这样,如果没有用户、管理员等的支持,也很难真正部署修改后的客户端。

    如果客户机不能请求/探测,那么最好让他们手动输入配置。如果人们不喜欢这样,那么告诉他们允许客户进行调查(这意味着他们需要在可能的地方为您提供基础设施)。