본문 바로가기
교육, 학습/멀티캠퍼스_풀 스택

JAVA 문법 - 네트워크 개념, INetAddress, URLConnection클래스

by 개발하는 경제학도 2022. 1. 19.

강의 소개

현재 수강하고 있는 멀티캠퍼스 k-digital 지능형 웹서비스 풀 스택 과정을 수강하며 적은 내용입니다.

교재로는 자바의 정석을 사용하고 있습니다.


네트워크

 

네트워크

여러 개의 물리적 회선과 무선으로 컴퓨터를 연결된 것이다.

 

네트워킹

2대 이상의 컴퓨터를 연결하여 네트워크를 구성하는 것이다.

 

URL

짧게 말하면 주소이다. 인터넷에 존재하는 서버들의 자원에 접근할 수 있는 위치 표시 방법이다.

아래와 같은 형태를 갖고 있으며 포트번호, 쿼리 스트링, 참조는 생략될 수 있다. (포트번호가 생략되는 경우에는 자동으로 80으로 인식한다.)

프로토콜://호스트명:포트번호/경로명/파일명?쿼리스트링#참조
https://www.naver.com/

 

프로토콜

기기간 통신에서 데이터를 주고받는 것에 대한 규약이다.

 

[인터넷 프로토콜 스택의 4 계층]

애플리케이션 계층 HTTP, FTP
전송 계층 TCP, UDP
인터넷 계층 IP
네트워크 인터페이스 계층 LAN 드라이버, LAN 장비

 

IP(인터넷 프로토콜)

지정한 IP주소에 데이터를 전달하는 역할을 갖는다.

패킷이라는 통신 단위로 데이터를 전달한다.

 

IP주소

컴퓨터마다 부여된 고유한 값이다. 4byte(= 32bit)의 정수로 구성되어 있다.

x.x.x.x와 같은 형식을 갖고 있는데 여기서 각각의 x는 0~255 사이의 정수이다.

IP주소는 네트워크 주소와 호스트 주소로 나눠지는데, 서로 다른 두 호스트의 네트워크 주소가 같다면 같은 네트워크에 포함되어 있다는 것을 의미한다.

 

도메인

도메인은 'IP주소 + 포트번호'로 이뤄져 있다. 접속하려는 서버의 ip주소는 숫자이기 때문에 외우기가 어렵다. 따라서 ip주소를 사람이 이해할 수 있도록 이름을 붙인 것이다.

따라서 우리는 naver.com이나 goolge.com와 같이 사람이 이해할 수 있는 문자형태로 서버에 접속할 수 있다.

 

port

한 아파트의 동을 IP주소, 동 내부의 호수를 PORT라고 비유한다.

 

클라이언트가 서버에서 여러 서비스를 받고 싶은 경우가 많다. 이런 경우에 같은 IP내에서 프로세스를 구분할 필요가 있다.

즉, 서버 내의 어떤 애플리케이션에서 보낸 패킷(= 데이터)인지 확인할 필요가 구분하기 위해서 포트를 사용한다. IP 주소는 서버를 가리키고, 포트는 그 서버 내부에서 돌아가고 있는 애플리케이션을 일컫는다.

 


관련 자바 클래스

 

1. InetAddress클래스

자바에서 제공하는 IP주소를 다루기 위한 클래스이다.

 

- 메서드

아래와 같은 메서드 등을 제공한다.

1) getByName메서드

도메인명(host)에 지정된 모든 호스트의 IP주소를 반환한다.

[코드 예시]

// 구글의 ip주소를 알아보자
// 구글의 서버는 어려대에 동일한 도메인을 부여하고 있다.
InetAddress[] serverip = InetAddress.getAllByName("google.com");
for(InetAddress oneip: serverip) {
	System.out.println("구글서버 = " + oneip.getHostAddress());
	}

 

2) getHostName메서드

호스트의 이름을 반환한다.

 

3) getHostAddress메서드

호스트의 IP주소를 반환한다.

[코드 예시]

// 내 컴퓨터 ip 주소
InetAddress myip = InetAddress.getLocalHost();  // 로컬 호스트는 내 컴퓨터.
System.out.println("컴퓨터 이름 = "+ myip.getHostName());
System.out.println("ip = " + myip.getHostAddress());

 

 

2. URLConnection클래스

자바에서는 URL을 다루기 위한 클래스를 제공한다.

 

- 메서드

아래와 같은 메서드 등을 제공한다.

1) getPort메서드

포트번호를 반환한다.

 

2) getHost메서드

호스트명을 반환한다.

 

3) getProtocol메서드

프로토콜을 반환한다.

[코드 예시]

public class URLTest {

	public static void main(String[] args) {

		URL site;
		try {
			site = new URL("https://lc.multicampus.com/kdt-venture/#/login");
			System.out.println(site.getHost());  // 도메인명: lc.multicampus.com
			System.out.println(site.getPort());  // -1이 나오면 포트번호는 없다는 뜻. 
			System.out.println(site.toURI());
			System.out.println(site.getProtocol());  // 프로토콜은 http 혹은 Https.
            
		} catch (Exception e) {  // MalformedURLException: 이런 url은 없다. (접근 불가) 
			e.printStackTrace();   
		} 
	}
}

 

출처: 자바의 정석(남궁 성 저), 멀티캠퍼스

댓글