我正在尝试以编程方式从 PC 的主机名获取网络上远程 PC 的 IP 地址。该 PC 作为 Apache 服务器运行。据我了解,在用于从主机名获取 IP 地址的 DNS 查询中,需要将 DNS 后缀附加到主机名。我可以查询 DNS 服务器以获取此 PC 使用的 DNS 后缀吗?
答案1
通常情况下,DHCP 和主机的 DNS 解析器会处理这个问题:
- DHCP 返回域名(您需要将其附加到简单(非点)主机名以使其成为完全限定域名 (FQDN))
- 您的系统的 DHCP 客户端会将其存储在某个地方(在 Unix/Linux 机器上,存储在 /etc/resolv.conf 中,以及在 DHCP 提供中获得的 DNS 服务器地址)
- 当您向操作系统(例如 POSIX gethostbyname())询问主机的 IP 地址时,它会将主机名转换为 FQDN(如果它已经看起来像 FQDN,即包含点,它将不会执行任何操作,否则会附加域名)
因此,如果您只使用操作系统的“官方”功能,则无需知道全名。如果您手动发送 DNS 数据包,则需要从配置文件(或在 Windows 中为注册表)获取该信息。
如果这是内部网络(例如,NAT 盒后面的专用网络),则返回的“FQDN”地址在该网络之外将无效。