2013-11-26 2 views
1

앞으로 이동하기 전에 서버의 전체 표준 호스트 이름을 가져 오는 데 사용하는 아래 코드가 있습니다. 이것은 내 서버에서 값 (특히 다른 도메인)을 반환합니다. 명령 줄의 nslookup이 올바른 값을 반환합니다.예기치 않은 Inetaddress 반환 호스트 이름

올바른 정식 이름을 확인하기 위해 내부적으로 정확히 무엇을하는지 이해하려고합니다. DNS 서버를 쿼리합니까? 무슨 일이 일어나고 무엇

import java.net.InetAddress; 

public class IpLookup { 

    public static void main(String[] args) { 

     try{ 

      String REQUESTSERVER = args[0]; 
      InetAddress in = InetAddress.getByName(REQUESTSERVER); 
      REQUESTSERVER = in.getCanonicalHostName(); 
      System.out.println("Canonical REQUESTSERVER "+ REQUESTSERVER); 
     } catch(Exception e) { 
      System.out.println("lookup failed"); 
     } 
    } 
} 

답변

1

는 자바 코드가 먼저 IP를 찾아 다음 반환 된 IP 주소를 기반으로 역 DNS를 사용하는 동안 그 nslookup을, 당신은 IP 주소 (들)와 함께 입력 한 호스트 이름을 반환합니다. rDNS는 "정식"주소로 생각하는 것을 반환하도록 구성되지 않은 것 같습니다.

나는 www.google.com에 nslookup을 실행 :

> www.google.com 
Non-authoritative answer: 
Server: perseus.jhmg.pvt 
Address: 192.168.10.254 

Name: www.google.com 
Addresses: 2607:f8b0:400a:801::1010 
      173.194.33.146 
      173.194.33.144 
      173.194.33.148 
      173.194.33.147 
      173.194.33.145 

은 그럼 www.google.com에 프로그램을 실행하고이 결과를 가지고 : 제공 nslookup을에 의해 반환 된 첫 번째 주소에 역 DNS 검색을 수행

Canonical REQUESTSERVER sea09s17-in-f17.1e100.net 

를 :

> 173.194.33.146 
Server: perseus.jhmg.pvt 
Address: 192.168.10.254 

Name: sea09s17-in-f18.1e100.net 
Address: 173.194.33.146 

(BTW, note 1e100 is 10 또는 "googol"로 알려진 번호 ... 귀여운 :-)

어떤 일이 일어나고 있는지를 증명합니다.

+0

짐, 조사해 주셔서 감사합니다. 나는 대답을 얻었다. –