네트워크 => 원격 자원에 접근
네트워크는 컴퓨터, 프로그램, 하드웨어 등이 원격 자원에 접근하고 데이터를 주고받을 수 있게 해줍니다.
- 컴퓨터(프로그램) ↔ 네트워크 ↔ 컴퓨터(프로그램): 일반적인 네트워크 통신 형태입니다. 예를 들어, 두 컴퓨터가 파일을 전송하거나, 서버와 클라이언트가 데이터를 교환할 때 네트워크가 필요합니다.
- 컴퓨터(프로그램) ↔ 네트워크 ↔ 하드웨어(센서): IoT(Internet of Things)와 같이 컴퓨터가 원격의 하드웨어(예: 온도 센서)에 접근하여 데이터를 읽고 처리하는 형태입니다.
네트워크의 종류
-
LAN (Local Area Network): 근거리 통신망으로, 집, 사무실, 학교 등 한정된 범위 내에서 사용되는 네트워크입니다.
- 유선 LAN: 케이블을 통해 연결된 네트워크.
- 무선 LAN (WiFi): 무선 신호를 통해 연결된 네트워크.
- 무선통신망(4G, 5G): 이동 통신 네트워크를 통해 연결된 모바일 기기 간의 연결.
- 블루투스, USB: 기기간 연결 방식 중 하나로, 비교적 가까운 거리에서 장치 간 데이터를 전송할 수 있습니다.
-
사내망 (인트라넷, Intranet): 특정 조직 내에서만 접근할 수 있는 네트워크로, 보안이 강화된 환경에서 정보를 공유합니다.
-
사회망 (인터넷, Internet): 전 세계적으로 연결된 공용 네트워크로, 우리가 일반적으로 사용하는 웹을 포함한 네트워크입니다.
네트워크 구성 요소
- 프로토콜(Protocol): 데이터 전송 규약으로, 통신이 이루어질 규칙을 정의합니다. 예를 들어, HTTP는 웹 브라우저와 웹 서버 간의 데이터 통신 규약입니다.
- IP 주소: 네트워크 상에서 컴퓨터를 식별하는 주소로, 고유한 숫자로 이루어져 있습니다. (예:
192.168.0.1
)
- 포트(Port): 같은 IP 주소 내의 다양한 프로그램을 구분하는 번호입니다. (예: 웹 서버는 기본적으로 포트 80을 사용합니다.)
네트워크 데이터 전송 흐름
- 프로그램에서 데이터를 전송 요청.
- 요청이 운영 체제(OS)에 전달되어 네트워크 카드(Network Interface Card)로 전송.
- 데이터가 네트워크를 통해 상대 컴퓨터로 전달.
- 상대 컴퓨터의 네트워크 카드가 데이터를 수신하여 운영 체제(OS)에 전달.
- 운영 체제(OS)가 데이터를 대상 프로그램에 전달.
자바에서는 이러한 네트워크 작업을 java.net
패키지를 통해 지원합니다.
네트워크 모델의 유형
1. 클라이언트/서버 모델 (Client/Server Model):
- 클라이언트와 서버가 분리되어 있으며, 클라이언트가 요청을 보내고 서버가 응답하는 형태입니다.
- 예시:
- MariaDB 클라이언트/서버: 데이터베이스 서버와 클라이언트가 연결하여 데이터를 주고받음.
- 채팅 클라이언트/서버: 클라이언트가 서버에 연결하여 메시지를 송수신.
2. P2P 모델 (Peer-to-Peer Model):
- 모든 노드가 클라이언트이자 서버 역할을 수행하며, 중앙 서버 없이 데이터를 주고받는 형태입니다.
* 예시:
블록체인 네트워크: 모든 노드가 데이터를 저장하고, 검증하는 작업을 분담하여 분산된 네트워크를 형성.
암호화폐: 중앙 서버 없이 트랜잭션이 이루어지고, 네트워크에 참여하는 모든 노드가 거래 내역을 공유.
3. 서버에서 클라이언트로 데이터 전송 (Server-to-Client Data Transfer):
- 클라이언트가 서버의 자원을 읽어와서 데이터로 사용하거나, 재가공하여 사용하는 방식입니다.
- 예시:
- 웹 크롤링(Web Crawling): 웹 페이지의 데이터를 자동으로 수집하여 필요한 정보를 분석하고 저장.
- 웹 자료 수집 및 재가공: 서버에 있는 파일이나 데이터베이스의 정보를 읽어와 가공한 후 다른 작업에 활용.