네트워킹(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 |