Возвращение.getInetAddress() не фактический IP

У меня есть следующий фрагмент кода из функции, которая принимает имя хоста в качестве входных данных и должна извлечь сертификат для этого хоста. Мне нужно отобразить IP-адрес для удаленного хоста. Я использовал ".getInetAdress()", чтобы вернуть IP для удаленного хоста: http://docs.oracle.com/javase/1.5.0/docs/api/java/net/Socket.html().

SSLSocketFactory factory = HttpsURLConnection.getDefaultSSLSocketFactory();

System.out.println("Starting SSL Socket For "+hostname+" port "+port);
SSLSocket socket = (SSLSocket) factory.createSocket(hostname, port);

//To get the IP for the remote host. Format: (domain name/IP), 
//then manually covert it to string

String remoteIP=socket.getInetAddress().toString();
System.out.println("Remote address = " + remoteIP);

socket.startHandshake();     
Certificate[] serverCerts = socket.getSession().getPeerCertificates();

Например, когда я запускаю программу, хостом является "www.tesco.com", ".getInetAddress()". возвращает этот IP мне: 88.221.94.232. Когда я пытаюсь ввести этот IP-адрес в браузере, он дает мне "Неверный URL", даже после добавления "https://" в URL. Хотя, если я пытаюсь пропинговать "tesco.com", я получаю другой IP-адрес: "212.140.185.177", и если я набрал его в браузере, он открывает веб-страницу tesco.

Что я недопонимаю? Существуют ли другие методы, кроме getInetAddress & getHostAddress(), чтобы получить IP-адрес для удаленного хоста (без использования сокета)?

1 ответ

Решение

Вы получаете правильный IP-адрес.

Например, когда я запускаю программу, хостом является "www.tesco.com", ".getInetAddress()". возвращает этот IP мне: 88.221.94.232.

Правильно. Так что это IP-адрес, который вы получили за www.tesco.com,

Когда я пытаюсь ввести этот IP-адрес в браузере, он дает мне "Неверный URL".

Потому что этот сервер (ускоритель Akamai) не знает, какой веб-сайт вам нужен.

Хотя, если я попытаюсь пропинговать "tesco.com", я получу другой IP-адрес: "212.140.185.177"

Верно, потому что tesco.com это не то же самое, что www.tesco.com,

и если я набрал его в браузере, откроется веб-страница tesco.

Потому что этот веб-сервер знал, какой веб-сайт вы хотели, потому что он обрабатывает только tesco.comв отличие от серверов, которые обрабатывают www.tesco.com которые обрабатывают многие веб-сайты.

Если вы посмотрите внимательно, вы увидите, что ваш браузер указывает на tesco.com перенаправляет вас на www.tesco.com, Они используют Akamai.

Другие вопросы по тегам