【问题标题】:DNS Server in C to return IP Address and port numberC中的DNS服务器返回IP地址和端口号
【发布时间】:2013-02-04 14:30:05
【问题描述】:

根据我对 DNS 服务器的理解,一个简单的解释是,对于给定的主机名,DNS 服务器使用查找表来返回主机名的 IP 地址。

对于我的一个项目,我曾经通过 wifi 网络将客户端连接到服务器,并指定服务器在客户端上侦听的 IP 地址和端口。 一个新的要求来了,要求在网络设置中指定一个 DNS 服务器,然后 DNS 服务器返回我服务器的 IP 地址和端口号。

我上网查看了对A DNS服务器的请求/响应,发现很多地方都提到端口号不是DNS服务器发送的。对吗?

我在 Visual Studio 2005 中编写了我的项目。是否有任何 DNS 服务器的库/代码可以与我现有的 Visual Studio 项目集成?是否有可能,对于特定的主机名,我可以在响应中指定端口号?

我已经检查了许多 C 语言中 DNS 服务器的源代码,例如 ldns/bind,但我还没有找到与 Visual Studio 集成的方法。

【问题讨论】:

  • DNS 服务器可以在 DHCP 响应中指定,同样您可以使用多播 DNS - mDNS,根本不需要服务器设置。

标签: c visual-studio dns


【解决方案1】:

您可以在 TXT DNS 记录中指定有关给定域的附加信息。因此,您可以将 text tag:value 部分添加到您的域 TXT 记录中。

【讨论】:

  • 我在哪里设置?我应该使用哪个库?是否可以与visual studio集成?
【解决方案2】:

这可能是用户想要定义的吗? DNS SRV record

【讨论】:

  • 是的,这就是我想要的。是否有任何 C 库可以实现该功能并可以与 Visual Studio 集成?
  • 对不起,我什么都不知道。尝试搜索支持 RFC2782 的库。如果您想要服务器(处理 SRV 请求)或客户端(查找 SRV 记录)实现,我从您的问题中并不完全清楚。我认为至少客户端是在一些支持其他 DNS 查找的库中实现的。
  • 我需要服务器端实现。
  • BIND 10 在一些developement version release notes中提到了这个功能
  • 我检查了它,但问题与大多数其他库一样,我找不到可以与 Visual Studio 链接的版本。这真的很重要
【解决方案3】:

这没有意义,端口不是主机域名的一部分。给定主机(=单个域名)可以运行任意数量的应用程序,即打开任意数量的端口。

您的想法需要将所需应用程序的某种形式的身份发送到 DNS 服务器以进行查找,或者它可以回复正在运行的服务及其端口的列表。至少据我所知,它只是不能那样工作。

没有什么可以阻止您在任何其他端口上运行 Web 服务器(通常在端口 80 上),例如在开发过程中经常使用的 8080。然后 URL 将是 http://example.com:8080,由于浏览器仅在 DNS 中查找 example.com 部分,因此 DNS 无法覆盖端口号。

【讨论】:

  • 是的,当我在没有 DNS 服务器的情况下进行测试时,我曾经指定格式为 ipaddress/example:8080ipaddress/example:443 但现在如果我在我的机器上运行 DNS 服务器并且客户端发送请求,这样xyz.com/example,DNS服务器返回ipaddress和8080端口?
  • @user 您必须修改 DNS 代码才能做到这一点 - 或使用另一个字段,如 txt 来指定端口 - 如果您想要自动的东西,还可以修改浏览器代码;但你可能不需要那个。端口在参与者之间达成一致 - 最常见的是 80 (http) 或 443 (https),​​浏览器默认处理它们而无需您做任何事情(有时,可能是 https)。因此,如果您在网络服务器上使用端口 12345,所有参与者都必须制作书签myserver.org:12345
猜你喜欢
  • 2016-09-11
  • 1970-01-01
  • 2015-06-21
  • 1970-01-01
  • 2019-10-22
  • 2013-05-18
  • 2020-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多