我正在尝试编写代码,如果我给它一个IP地址,它将返回一个域名。这是我到目前为止所做的事情;
String destination = "173.194.24.144";
InetAddress address = InetAddress.getByName(destination);
String resolvedHost = address.getHostName();
System.out.println("Translated " + destination + " to host name " + resolvedHost);
我得到的是Translated 173.194.24.144 to host name 173.194.24.144
我知道173.194.24.144
是Google的IP地址。但是刚刚得到这个,我尝试了一些小实验并对情况进行了一些逆向工程。我试过了;
InetAddress addr = InetAddress.getByName("www.google.com");
System.out.println("Host Name " + addr.getHostName());
System.out.println("Host Address " + addr.getHostAddress());
System.out.println("--------------------------------------------");
byte [] add = new byte[]{74, 125, 24, (byte) 105};
InetAddress ip = InetAddress.getByAddress(add);
System.out.println("Host Name " + ip.getHostName());
System.out.println("Host Address " + ip.getHostAddress());
我在响应中得到的IP用在字节数组中,但我得到的完整结果是;
Host Name www.google.com
Host Address 74.125.24.105
--------------------------------------------
Host Name de-in-f103.1e100.net
Host Address 74.125.24.105
但这让我更加困惑,因为我有de-in-f103.1e100.net
而不是www.google.com
任何人都可以为我解释这个问题吗?
答案 0 :(得分:1)
de-in-f103.1e100.net
重定向到Google。
我猜测74.125.24.105
实际导致de-in-f103.1e100.net
,然后重定向到Google。在第一个中,您使用相同的ip创建了InetAddress
指向google.com
。您可以通过跟踪重定向(在Windows命令行上tracert
)来访问Google。
答案 1 :(得分:0)
在阅读并做更多调查后,我终于能够回答这个问题了。如果我将IP地址和域名添加到/etc/hosts
文件并再次运行该类,它将生成我插入/etc/hosts
文件的域名,而不是原始响应。