JAVA

IP주소와 도메인

shurimp 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주소> 형태로 더 상세한 정보를 확인할 수 있다.