🤔 네트워크 애플리케이션 구조란 뭘까?
자주 사용하는 웹 애플리케이션을 예시로 떠올려보자.
웹 애플리케이션에서는 서버와 클라이언트로 구별되고 서로 통신하는 프로그램이다.
그러면 웹 애플리케이션을 네트워크 애플리케이션 구조라고 생각할 수 있을까?
❌ 그건 아니다.
웹 개발자로서 학습하면서 웹 애플리케이션 구조만을 생각할 수 있다.
하지만 실제로 네트워크 애플리케이션 구조는 웹말고도 다양한 시스템이 존재한다.
🟩 01. 네트워크 애플리케이션 구조
네트워크 애플리케이션 구조는 애플리케이션의 설계 및 구성 방식을 의미한다.
대표적인 구조로 "클라이언트-서버 구조", "P2P 구조"가 있다.
01-01. 클라이언트-서버 (Client-Server) 구조란?
- 기본적인 구조로, 클라이언트와 서버 간의 역할을 분리한다.
- 클라이언트 : 사용자 인터페이스와 사용자 요청을 처리한다.
- 서버 : 데이터 처리, 비즈니스 로직, 데이터베이스 접근 등을 담당한다.
01-02. P2P (Peer-to-Peer) 구조란?
피어(Peer) 란?
- 동일한 프로토콜을 사용하여 통신하는 동등한 역할을 하는 네트워크 장치를 의미한다.
P2P 구조 특징
- 중앙 집중형 서버 없이 동등한 노드(피어) 간의 직접적인 통신을 기반으로 한다.
- 각 노드는 클라이언트와 서버 역할을 모두 수행할 수 있다.
- 분산 시스템과 효율적인 자원 고유가 가능하다.
- 대규모 파일 공유, 분산 컴퓨팅 등에 사용된다.
- 중앙화된 싱글 포인트 오류를 피할 수 있다는 장점이 있다.
🟩 02. 프로세스 간 통신
프로세스(process)란 ?
- 종단 시스템에서 실행되는 프로그램을 의미한다.
- 실제 통신하는 것은 프로그램이 아닌 프로세스이다.
02-01. 클라이언트와 서버 프로세스에 대해서
통신하는 프로세스 각 쌍에 대해서 "클라이언트의 프로세스"와, "서버의 프로세스"라고 부른다.
- 웹의 경우
- 브라우저 : 클라이언트 프로세스
- 웹 서버 : 서버 프로세스
- P2P의 경우
- 파일을 내려받는 피어 : 클라이언트 프로세스
- 파일을 올리는 피어 : 서버 프로세스
02-02. 소켓(Socket)은 프로세스와 컴퓨터 네트워크 사이의 인터페이스이다.
프로세스는 소켓(Socket)을 통해서 네트워크 메시지를 송수신한다.
소켓은 네트워크 애플리케이션이 인터넷에 만든 프로그래밍 인터페이스(API)이다.
애플리케이션 개발자는 소켓의 애플리케이션 계층에 대한 모든 통제권을 갖는다.
다만 소켓의 전송 계층에 대한 통제권은 거의 갖지 못한다는 점을 알아두자.
- 프로세스의 하위 전송 프로토콜 : TCP 프로토콜
🟩 03. 애플리케이션과 전송 계층
애플리케이션은 소켓을 통해서 메시지를 네트워크에 전송한다.
전송 계층은 네트워크를 통해서 받은 메시지를 수신 프로세스의 소켓에게 이동시키는 역할이다.
03-01. 전송 계층이 제공하고 있는 서비스는 뭘까?
전송 계층에서 네트워크에 메시지를 보낼 수 있는 이유는 크게 4가지로 볼 수 있다.
신뢰적 데이터 전송
- 데이터 손실이 되지 않도록 보장한다.
- 전송 계층 프로토콜이 애플리케이션에 제공할 수 있는 중요한 서비스이다.
- 손실 허용 애플리케이션의 경우 신뢰적 데이터 전송을 제공하지 않을 수도 있다.
처리량
- 두 프로세스 간의 통신에서 송신 프로세스가 수신 프로세스로 비트를 전달할 수 있는 비율을 나타낸다.
시간
- 시간 보장을 제공한다.
보안
- 하나 이상의 보안 서비스를 제공할 수 있다.
- 데이터 암호화 등
🟩 04. 인터넷 전송 프로토콜이 제공하는 서비스?
인터넷 전송 프로토콜 제공하는 애플리케이션 지원 대표 유형으로 "TCP 서비스"와 "UDP 서비스"가 있다.
자세한 이야기는 전송 계층에서 알아보자.
🟩 05. 애플리케이션 계층 프토로콜은 뭘까?
애플리케이션 계층 프로토콜 (Application-Layer Protocol)
- 다른 종단 시스템에서 실행되는 애플리케이션 프로세스가 서로 메시지를 송수신하는 방법을 정의한다.
05-01. 네트워크 애플리케이션과 애플리케이션 계층 프로토콜의 차이?
애플리케이션 계층 프로토콜은 네트워크 애플리케이션의 한 요소이다.
예시를 들어보자.
웹 서버에서 데이터를 주고받는 서비스를 제공하는 것은 네트워크 애플리케이션이다.
이 때 웹 서버와 브라우저가 서로 교환하기 위한 규칙으로 HTTP를 이용한다.
HTTP를 애플리케이션 계층 프로토콜로 보면된다.
🔗 참고
'🌐 네트워크' 카테고리의 다른 글
[네트워크] 애플리케이션 계층 - DNS 서버의 동작 원리 (0) | 2023.06.16 |
---|---|
[네트워크] 애플리케이션 계층 - HTTP, Cookie, Web Cache (0) | 2023.06.14 |
[네트워크] 메시지 무결성과 전자서명 (0) | 2023.05.28 |
[네트워크] 암호화의 원리 (0) | 2023.05.28 |
[네트워크 - HTTP] PUT과 PATCH의 차이는 뭘까 (2) | 2023.04.27 |