왜 계층을 나누는가?
복잡성을 관리하기 위해 역할을 분리!
🏠 집 짓기에 비유:
L7 (Application) : 인테리어 (가구 배치, 장식)
L6 (Presentation): 마감 (벽지, 페인트)
L5 (Session) : 전기/수도 연결 관리
L4 (Transport) : 배관/전선 (물, 전기 전달)
L3 (Network) : 도로망 (집까지 가는 길)
L2 (Data Link) : 골목길 (집 앞까지 정확히)
L1 (Physical) : 땅, 돌, 시멘트 (물리적 기반)
각 계층 상세 설명
L1 - Physical Layer (물리 계층)
“전기 신호로 0과 1을 보내는 계층”
예시:
- 랜선 (구리선)
- 광케이블 (빛)
- Wi-Fi (전파)
역할: 비트를 전기/빛 신호로 변환
L2 - Data Link Layer (데이터 링크 계층)
“같은 네트워크 안에서 정확한 기기 찾기”
핵심: MAC 주소 (하드웨어 고유 주소)
예시:
AA:BB:CC:DD:EE:FF → 11:22:33:44:55:66
↑ 출발지 ↑ 목적지
같은 건물 안에서 특정 방 찾기 같은 개념!
프로토콜: Ethernet
장비: 스위치
쿠버네티스 맥락:
같은 노드 내:
컨테이너 → veth pair → 호스트
(L2로 직접 통신)
L3 - Network Layer (네트워크 계층) ⭐
“다른 네트워크로 패킷 전달하기”
핵심: IP 주소 (논리적 주소)
예시:
192.168.1.10 → 8.8.8.8
↑ 내 IP ↑ 구글 DNS
서울 → 부산 가는 경로 찾기 같은 개념!
프로토콜: IP (Internet Protocol)
장비: 라우터
L3의 핵심 기능:
1. 라우팅 (Routing):
목적지까지 가는 최적 경로 찾기
예시:
서울 → 부산
경로1: 서울→대전→대구→부산
경로2: 서울→천안→김천→부산
→ 더 빠른 경로 선택!
2. IP 주소 기반 전달:
Source IP: 192.168.1.10
Dest IP: 10.0.0.5
쿠버네티스에서 L3:
Calico의 BGP 라우팅:
node-1 (10.244.1.0/24)
↓ BGP로 경로 광고
node-2 (10.244.2.0/24)
node-1에서 node-2의 파드로 통신:
→ IP 주소만으로 라우팅 (L3)
→ 캡슐화 필요 없음!
L4 - Transport Layer (전송 계층) ⭐
“데이터를 신뢰성 있게 전달하기”
핵심: 포트 번호 + 신뢰성
프로토콜:
- TCP: 신뢰성 보장 (전화 ☎️)
- UDP: 빠르지만 보장 없음 (우편 📮)
TCP vs UDP 비교:
| 항목 | TCP | UDP |
|---|---|---|
| 연결 | 연결 지향 (3-way handshake) | 비연결 |
| 신뢰성 | 순서 보장, 재전송 | 보장 없음 |
| 속도 | 느림 (오버헤드) | 빠름 |
| 용도 | HTTP, SSH, DB | 동영상, 게임, DNS |
포트 번호 이해:
IP = 아파트 주소
포트 = 호수
192.168.1.10:80 → 웹서버
192.168.1.10:443 → HTTPS 서버
192.168.1.10:3306 → MySQL
192.168.1.10:6379 → Redis
같은 IP에서 여러 서비스 구분!
쿠버네티스에서 L4:
yaml
kind: Service
spec:
ports:
- protocol: TCP ← L4 프로토콜
port: 80 ← 서비스 포트
targetPort: 8080 ← 파드 포트
```
---
#### L5 - Session Layer (세션 계층)
**"연결 유지 관리"**
```
예시:
- 로그인 세션 유지
- 화상회의 연결 유지
쿠버네티스에서는 잘 드러나지 않음
(주로 애플리케이션이 처리)
```
---
#### L6 - Presentation Layer (표현 계층)
**"데이터 형식 변환"**
```
예시:
- 암호화/복호화 (SSL/TLS)
- 인코딩 (UTF-8, ASCII)
- 압축/해제 (GZIP)
쿠버네티스에서:
- TLS 인증서 (Ingress에서 처리)
```
---
#### L7 - Application Layer (응용 계층) ⭐
**"실제 서비스 프로토콜"**
```
사용자가 직접 사용하는 계층!
프로토콜:
- HTTP/HTTPS: 웹
- FTP: 파일 전송
- SMTP: 이메일
- DNS: 도메인 변환
```
**L7의 특징:**
```
HTTP 요청 구조:
GET /api/users HTTP/1.1 ← 메서드, 경로
Host: user-service ← 호스트
Authorization: Bearer token ← 헤더
Content-Type: application/json
{ "id": 123 } ← 바디
```
**쿠버네티스에서 L7:**
```
Cilium의 L7 정책:
"frontend 파드는 backend 파드의
/api/v1/read 경로에만
GET 메서드로 접근 가능"
→ HTTP 프로토콜을 이해하고 제어!
```
---
## 🎯 L3 vs L4 vs L7 비교
### 실제 통신 예시
```
사용자: "user-service의 사용자 목록 가져와줘"
L7 (Application):
GET /api/users HTTP/1.1
→ "사용자 목록 조회" 요청 이해
L4 (Transport):
TCP Port 80
→ 패킷 순서 보장, 재전송
L3 (Network):
Src: 10.244.1.5 → Dst: 10.244.2.10
→ 네트워크 간 라우팅
L2 (Data Link):
MAC: AA:BB:CC:DD:EE:FF
→ 같은 네트워크 내 전달
L1 (Physical):
01010101... (전기 신호)
```
---
### 로드 밸런서 타입 차이
#### L4 로드 밸런서
```
특징: IP + 포트만 봄
192.168.1.10:80 → 어느 백엔드로?
- 백엔드1: 10.0.1.5:8080
- 백엔드2: 10.0.1.6:8080
장점: 빠름
단점: 요청 내용을 모름
```
#### L7 로드 밸런서 (Ingress)
```
특징: HTTP 요청 내용을 이해
/api/users → user-service
/api/orders → order-service
/static/* → cdn-service
장점: 똑똑한 라우팅
단점: 처리 비용 높음
```
---
### 쿠버네티스 컴포넌트별 계층
| 컴포넌트 | 계층 | 역할 |
|----------|------|------|
| **CNI** | L2/L3 | IP 할당, 라우팅 |
| **Service** | L4 | 포트 기반 로드밸런싱 |
| **Ingress** | L7 | HTTP 경로 기반 라우팅 |
| **Network Policy** | L3/L4 | IP/포트 기반 방화벽 |
| **Cilium (L7)** | L7 | API 경로 기반 보안 |
---
## 🔍 실전 예시로 이해하기
### 예시 1: 웹사이트 접속 전체 과정
```
브라우저에 "shop.example.com/cart" 입력
1. DNS (L7 Application):
shop.example.com → 203.0.113.10
2. TCP 연결 (L4 Transport):
3-way handshake
Client:80 ↔ Server:443
3. TLS 핸드셰이크 (L6 Presentation):
암호화 채널 수립
4. HTTP 요청 (L7 Application):
GET /cart HTTP/1.1
Host: shop.example.com
5. IP 라우팅 (L3 Network):
내 IP → 서버 IP
라우터들을 거쳐 전달
6. MAC 주소 (L2 Data Link):
각 구간마다 MAC 주소로 전달
7. 물리 신호 (L1 Physical):
전기/빛 신호로 전송
```
---
### 예시 2: 쿠버네티스 파드 간 통신
```
frontend → backend:8080으로 API 호출
┌─────────────────────────────────────┐
│ L7: POST /api/orders │
│ Content-Type: application/json │
├─────────────────────────────────────┤
│ L4: TCP Port 8080 │
│ 순서 보장, 재전송 │
├─────────────────────────────────────┤
│ L3: 10.244.1.5 → 10.244.2.10 │
│ Calico BGP 라우팅 │
├─────────────────────────────────────┤
│ L2: veth pair │
│ 컨테이너 ↔ 호스트 │
└─────────────────────────────────────┘💡 핵심 정리
DNS 요약
- 역할: 사람 친화적 이름 → IP 주소 변환
- 쿠버네티스: CoreDNS가 서비스명 → ClusterIP 변환
- 장점: 동적 환경에서 IP 변경돼도 이름은 그대로
L3 (Network Layer)
- 역할: IP 주소 기반 라우팅
- 키워드: IP, 라우터, 경로
- 쿠버네티스: Calico BGP, 파드 간 라우팅
L4 (Transport Layer)
- 역할: 포트 기반 전달, 신뢰성 보장
- 키워드: TCP/UDP, 포트
- 쿠버네티스: Service (ClusterIP, NodePort)
L7 (Application Layer)
- 역할: 애플리케이션 프로토콜 이해
- 키워드: HTTP, API, 경로
- 쿠버네티스: Ingress, Cilium L7 정책
작성일: 2025-11-05