ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • IP주소와 도메인
    JAVA 2022. 4. 6. 21:44

    PC에 인터넷을 연결할 때 사용하는 어댑터(유선, 무선, wifi, ...) 에는 IPv6 주소와 IPv4 주소가 있다.

    IPv6주소는 16진수로 표기한 주소,
    IPv4주소는 10진수로 표기되어 있다.

    (참고로 16진수는 16이 한 단위이고, 1~9는 그대로 표기하고 10~16은 A~F로 표기한다)

    우리가 프로그래밍을 할 땐 IPv4 주소를 사용한다.


    DNS service(Domain Name Service)

    도메인(ex. www.naver.com) -> IP주소로 바꿔주는 서비스이다.
    (역으로도 제공)

     

    내 PC의 IP주소와 기타 정보를 확인하는 방법은 powershell에서 해당 명령어를 입력하면 된다.

    (cmd창에서 입력해도 동일하다!)

    Windows : ipconfig 또는 ipconfig /all (더 자세한 정보를 보여준다.)
    Mac/Linux : ifconfig 또는 ip addr show
    DNS확인 : nslookup(윈도우) 또는 host(맥, 리눅스)

    nslookup

    powershell에서 nslookup을 입력 후 사이트 주소를 입력하면 DNS 정보를 확인할 수 있다.

    nslookup 사용예시

    이름에는 실제 주소를 보여주고

    IPv4주소를 확인할 수 있다.

    IP주소가 여러개인 경우에도 모두 보여준다.

    Aliases는 별칭이란 뜻으로, 사용자에게는 실제 이름 대신 이 Aliases를 보여준다.

     

    추가 명령어로는,

    hostname : 내 PC이름을 보여준다.
    ping <ip주소> : 해당 ip로의 연결여부 확인 (포트번호까지 연결이 가능한지는 알려주지 않는다.)

    if) 포트번호까지 연결이 가능한지 알아보려면 telnet을 사용하면 된다!

     

    any address
    0.0.0.0인 IP주소인데, All을 생각하면된다.

    예를들어, 0.0.0.0 <포트번호>

    라고 입력하면 모든 IP주소에 대해서 <포트번호>로 기다리겠다는 뜻이다.

     

    Loopback Address

    127.0.0.1

    모든 PC에 아무것도 설치하지 않아도 무조건 사용 가능한 IP주소이다! localhost를 가르키게됨
    localhost == 127.0.0.1(Loopback Address)


    listen port : 연결요청, 처리요청을 기다리는 포트(단방향)
    서버쪽에서 가짐
    클라이언트는 listen port가 없다.
    (서버와 클라이언트 역할을 하는 p2p의 경우, listen 포트도 가지고 있고 클라이언트도 가지고있다!
    예를들면 토렌트... )

     

    포트번호는 0~65535 범위를 가진다.

    Well Know Port Numbers : 국제인터넷주소관리기구가 미리 예약한 포트(서버 만들 때 이 번호는 사용하지 않는다.)
    Registered Port Numbers : 기업에서 사용하는 포트(서버 만들 때 이 번호로 사용)
    Dynamic Or Private Port Numbers : 운영체제가 클라이언트에게 동적으로 부여하는 포트.
    프로그래밍을 통해 임의로 지정할 수도 있다.

    java.net.InetAddress로 IP 주소 얻기
    InetAddress : IP 주소 표현한 클래스
    로컬 컴퓨터의 IP 주소
    도메인 이름을 DNS에서 검색한 후 IP 주소를 가져오는 기능 제공

    import java.net.InetAddress;
    import java.net.UnknownHostException;
    
    public class InetAddressExample {
    	
    	
    	public static void main(String[] args) {
    		try {
    			// InetAddress 클래스의 정적메소드인 getLocalHost() 메소드를
    			// 호출하여, 내 PC의 IP주소를 가지고 있는 InetAddress 객체를 얻어냄!
    			InetAddress local = InetAddress.getLocalHost();
    			System.out.println("내 컴퓨터 IP주소 : " + local.getHostAddress());
    			System.out.println(local);
    			
    //			---
    			
    			// DNS서버에 질의한 도메인명(아래, www.naver.com)에 매핑되어있는
    			// 모든 IP주소를 요청
    			// www.를 붙이지 않은 도메인 명을 입력하면 모든 IP주소가 나옴
    			InetAddress[] iaArr = InetAddress.getAllByName("naver.com");
    			
    			for(InetAddress remote : iaArr) {
    				System.out.println("www.naver.com IP주소 : " + remote.getHostAddress());
    			} // enhanced for
    		} catch(UnknownHostException e) {
    			e.printStackTrace();
    		} // try-catch
            
    	} // main
    
    } // end class

     

    getHostAddress() : IP주소를 String으로 반환
    getLocalHost() : InetAddress 타입을 반환
    이 메소드를 사용하여 생성한 객체를 직접 찍어보면 객체의 레퍼런스 대신,

    <내PC이름>/<IPv4주소> 형태로 더 상세한 정보를 확인할 수 있다.

    댓글

Designed by Tistory.