본문 바로가기
자바/Java의 정석

[Chapter 16] 네트워킹

by 코딩diary 2024. 12. 5.

네트워킹(Networking)

네트워킹이란, 두 대 이상의 컴퓨어를 케이블로 연결하여 네트워크를 구성하는 것을 말한다.

초기의 네트워크는 단 몇 대의 컴퓨터로 구성되었으나 지금은 전 세계의 셀 수도 없을 만큼 많은 수의 컴퓨터가 인터넷이라는 하나의 거대한 네트워크를 구성하고 있으며, 인터넷을 통해 다양하고 방대한 양의 데이터를 공유하는 것이 가능해졌다.

 

자바에서 제공하는 java.net 패키지를 사용하면 이러한 네트워크 어플리케이션의 데이터 통신 부분을 쉽게 작성할 수 있다.

 

 

클라이언트/서버

 

서버는 서비스를 제공하는 컴퓨터, 클라이언트는 서비스를 사용하는 컴퓨터가 된다.

네트워크를 구성할 때 전용서버를 두는 것을 서버기반모델이라고 하고 별도의 전용서버 없이 각 클라이언트가 서버 역할을 동시에 수행하는 것을 P2P 모델이라고 한다.

 

장단점

서버기반 모델 P2P 모델
- 안정적인 서비스의 제공이 가능하다.
- 공유 데이터의 관리와 보안이 용이하다.
- 서버구축비용과 관리비용이 든다
- 서버구축 및 운용비용을 절감할 수 있다.
- 자원의 활용을 극대화 할 수 있다.
- 자원의 관리가 어렵다.
- 보안이 취약하다.

 

 

IP주소

컴퓨터를 구별하는데 사용되는 고유한 값으로 인터넷에 연결된 모든 컴퓨터는 IP주소를 갖는다. IP 주소는 4byte(32bit)의 정수로 구성되어 있으며, 4개의 정수가 마침표를 구분자로 'a.b.c.d'와 같은 형식으로 표현된다. 0~255 사이의 정수이다.

 

InetAddress

 

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

 

 

 

URL

인터넷에 존재하는 여러 서버들이 제공하는 자원에 접근할 수 있는 주소를 표현하기 위한 것으로

'프로토콜://호스트명:포트번호/경로명/파일명?쿼리스트링#참조' 의 형태로 이루어져 있다.

 

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

 

 

URLConnection

 

어플리케이션과 URL간의 통신연결을 나타내는 클래스의 최상위 클래스로 추상클래스이다. 

URLConnection을 사용해서 연결하고자하는 자원에 접근하고 읽고 쓰기를 할 수 있다.

 

 

소켓 프로그래밍

 

소켓을 이용한 통신 프로그래밍을 뜻하는데, 소켓이란 프로세스간의 통신에 사용되는 양쪽 끝단을 의미한다.

서로 멀리 떨어진 두 사람이 통신하기 위해서 전화기가 필요한 것처럼, 프로세스간의 통신을 위해서는 소켓이 필요하다.

자바에서는 java.net 패키지를 통해 소켓 프로그래밍을 지원한다.

 

TCP와 UDP

 

TCP/IP 프로토콜은 이기종 시스템간의 통신을 위한 표준 프로토콜로 프로토콜의 집합이다. TCP와 UDP 모두 TCP/IP 프로토콜에 포함되어 있으며, OSI 7계층의 전송계층에 해당하는 프로토콜이다.

항목 TCP UDP
연결방식 연결기반
- 연결 후 통신 (전화기)
- 1:1 통신방식
비연결기반
- 연결없이 통신(소포)
- 1:1, 1:n, n:n 통신방식
특징 데이터의 경계를 구분안함
신뢰성 있는 데이터 전송
- 데이터의 전송순서가 보장됨
- 데이터의 수신여부를 확인함
   (데이터가 손실되면 재전송됨)
- 패킷을 관리할 필요가 없음
UDP보다 전송속도가 느림
데이터의 경계를 구분함
신뢰성 없는 데이터 전송
- 데이터의 전송순서가 바뀔 수 있음
- 데이터의 수신여부를 확인안함
   (데이터가 손실되어도 알 수 없음)
- 패킷을 관리해주어야 함
TCP보다 전송속도가 빠름
관련 클래스 Socket
ServerSocket
DatagramSocket
DatagramPacket
MulticastSocket

 

'자바 > Java의 정석' 카테고리의 다른 글

[Chapter 15] 입출력  (1) 2024.12.04
[Chapter 14] 람다와 스트림  (1) 2024.11.30
[Chapter 13] 쓰레드  (2) 2024.11.30
[Chapter 12] 지네릭스, 열거형, 애너테이션  (1) 2024.11.26
[Chapter 11] 컬렉션 프레임웍  (1) 2024.11.26