【发布时间】:2020-10-07 08:27:45
【问题描述】:
我想从客户端 IP 地址解析域名。对于测试,我使用了 stackoverflow,如下所示。但是当我使用 ip 解析域时,我仍然只能得到 IP。
String ip = InetAddress.getByName("www.stackoverflow.com").getHostAddress();
System.out.println(ip);
System.out.println(InetAddress.getByName(ip).getHostName());
System.out.println(InetAddress.getByName(ip).getCanonicalHostName());
System.out.println(InetAddress.getByName(ip).getHostAddress());
结果:
151.101.129.69
151.101.129.69
151.101.129.69
151.101.129.69
如果我只提供 ip 151.101.129.69,我如何获得域名 (stackoverflow / www.stackoverflow.com)?
【问题讨论】:
-
无论使用哪种编程语言,如果域的所有者没有为该 IP 设置 PTR 记录,您将无法这样做(详情请参阅“DNS PTR 记录”)。此外,每个 IP 可能有许多与之关联的域名。
-
你不能。参见例如whatismyip.com/reverse-dns-lookup "请注意,某些 IP 地址不会返回域名,因为可能有记录指示给定 IP 地址的多个域名。常见的示例包括共享虚拟主机,其中服务器的一个 IP 地址是在一个或多个域之间共享。”
-
比较例如到
dns.google8.8.8.8,在这种情况下 dns 和反向 dns 工作,但这只是因为谷歌想要它。