4

我有一个 IP 列表。我需要做reveres DNS,即我想要网站名称。

我尝试了以下方法:

InetAddress addr = InetAddress.getByName("98.138.253.109");
String host = addr.getCanonicalHostName();
System.out.println(host);

但是,我的示例中的 IP 是 yahoo.com,当我运行代码时,我得到:ir1.fp.vip.ne1.yahoo.com

我需要一种方法,这样我就可以通过输入 IP 来获取域名。

4

2 回答 2

4

您提供的代码中的 IP 地址解析为 yahoo,因为它由 yahoo 持有。

您使用的 IP 地址仅指定给一台主机。你可以想象雅虎可能有成千上万的服务器。他们被分配了一个 ipaddresses 分配,然后在他们认为适合内部分配的情况下重用这些 ipaddresses。yahoo 域下的不同服务器具有不同的名称,因此当您从特定服务器引用 IP 地址时,您将获得该特定服务器的名称。对于可能隐藏的 yahoo.com 的一般 IP 地址,除非您想要进行 nslookup 并查询整个 IP 地址范围以查找 yahoo.com 分配并从那里进行概括。

于 2013-01-31T18:23:13.300 回答
4

使用 IP 地址获取域名(以您期望的方式)可能是不可能的。雅虎将有多个服务器,它们都将映射到域名 yahoo.com。但他们会有单独的 IP 地址和主机名。addr.getCanonicalHostName() 返回主机名而不是域名!

于 2013-01-31T18:28:00.867 回答