✅ 애플리케이션 레이어란?
애플리케이션 레이어는 네트워크를 사용하는 프로그램(네트워크 애플리케이션)이 동작하는 계층이다. 우리가 매일 쓰는 이메일, 웹 브라우저, 유튜브 같은 서비스가 모두 애플리케이션 레이어에서 작동한다.
네트워크 애플리케이션을 개발하려면 트랜스포트 레이어(TCP/UDP)를 이용해서 데이터를 주고받는 방식을 이해해야 한다.
💡 네트워크 애플리케이션의 예시
다음과 같은 서비스들이 모두 네트워크 애플리케이션이다.
📧 이메일 (Gmail, Outlook)
🌍 웹 브라우징 (Chrome, Firefox)
💬 메시징 앱 (카카오톡, WhatsApp)
🎮 온라인 게임 (리그 오브 레전드, 배틀그라운드)
🎥 비디오 스트리밍 (유튜브, 넷플릭스)
📞 인터넷 전화 (VoIP - Skype, Zoom)
🛜 파일 공유 (토렌트, 구글 드라이브)
🏛 인터넷 프로토콜 스택 (Internet Protocol Stack)
인터넷에서 데이터가 이동하는 과정을 5가지 계층으로 나눠서 관리한다.
| 계층 | 역할 | 예제 |
| 응용 계층 (Application) | 사용자에게 보이는 프로그램 동작 | HTTP, FTP, SMTP |
| 전송 계층 (Transport) | 데이터 전송 관리 | TCP, UDP |
| 네트워크 계층 (Network) | IP 주소를 기반으로 데이터 전달 | IP, 라우팅 프로토콜 |
| 링크 계층 (Link) | 근거리 통신 관리 (Wi-Fi, 이더넷) | 이더넷, Wi-Fi (802.11) |
| 물리 계층 (Physical) | 실제 케이블, 전파 등 데이터 전달 | 광섬유, 동축 케이블 |
이렇게 계층별로 나누면 설계가 단순해지고, 각 계층이 독립적으로 발전할 수 있다.
📦 캡슐화 (Encapsulation)
네트워크에서 데이터를 전송할 때는 각 계층이 추가 정보를 덧붙이는 방식으로 이루어진다.
1️⃣ 애플리케이션 레이어: 메시지를 만듦
2️⃣ 트랜스포트 레이어: TCP/UDP 헤더 추가
3️⃣ 네트워크 레이어: IP 주소 추가
4️⃣ 링크 레이어: MAC 주소 추가
5️⃣ 물리 레이어: 비트(0과 1) 형태로 전송
📥 수신측에서는 반대로 헤더를 하나씩 제거하면서 원래 메시지를 복원한다.
이 과정을 디캡슐화(Decapsulation)라고 한다.
🏗 네트워크 애플리케이션 구조
네트워크 애플리케이션을 만들 때는 클라이언트-서버 모델과 P2P 모델 두 가지 방식이 있다.
🔹 클라이언트-서버 (Client-Server)
• 서버는 항상 켜져 있고 고정 IP 주소를 가짐
• 클라이언트가 서버에 접속해서 요청을 보냄
• 예) 웹사이트 접속 (크롬이 서버에 요청 → 서버가 응답)
🔹 P2P (Peer-to-Peer)
• 서버 없이 기기들끼리 직접 연결
• 각 기기가 클라이언트이자 서버 역할을 함
• 예) 토렌트 (파일을 직접 공유)
P2P는 자가 확장성(self scalability)이 뛰어나지만, 관리하기 어렵다는 단점이 있다.
🎯 프로세스 간 통신 (Inter-Process Communication)
네트워크에서 두 프로그램이 데이터를 주고받으려면 프로세스 간 통신(IPC)을 해야 한다.
• 같은 컴퓨터 내에서는 운영체제가 IPC를 관리
• 다른 컴퓨터끼리는 소켓(Socket)을 이용해 통신
💡 소켓 (Socket)이란?
소켓은 네트워크에서 데이터를 주고받는 창구 같은 역할을 한다.
이걸 이용해서 클라이언트-서버 프로그램을 만들 수 있다!
🎯 정리
• 애플리케이션 레이어는 네트워크를 사용하는 프로그램이 동작하는 계층
• 네트워크 애플리케이션의 예: 이메일, 웹 브라우저, 메시징 앱, 게임 등
• 인터넷 프로토콜 스택: 애플리케이션 → 트랜스포트 → 네트워크 → 링크 → 물리
• 캡슐화: 데이터를 보내면서 각 계층이 헤더를 추가하는 과정
• 클라이언트-서버 vs. P2P: 클라이언트-서버는 중앙 서버 필요, P2P는 직접 연결
• 소켓을 이용한 통신으로 네트워크 애플리케이션을 개발할 수 있음
'CS > Network' 카테고리의 다른 글
| [네트워크] Web Cache (0) | 2025.04.19 |
|---|---|
| HTTP와 웹의 작동 원리 (0) | 2025.04.04 |
| 🌐 네트워크 코어란? (0) | 2025.04.04 |
| 🌐 네트워크 엣지(network edge)란? (0) | 2025.04.04 |
| 🌐 인터넷과 네트워크 쉽게 이해하기! (1) | 2025.04.04 |