Возвращение.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.