네트워크 7계층 가이드(예시포함)
·14분 읽기·조회 13
네트워크 OSI 7계층 완벽 가이드
OSI 7계층 전체 구조
| 계층 | 이름 | 역할 | 대표 기술 |
|---|---|---|---|
| 7 | Application (응용) | 사용자와 직접 상호작용 | HTTP, WebSocket, MQTT, Kafka |
| 6 | Presentation (표현) | 인코딩, 암호화, 압축 | TLS/SSL, JSON, XML, Base64 |
| 5 | Session (세션) | 연결 수립/유지/종료 | WebRTC (signaling), SSH 세션 |
| 4 | Transport (전송) | 신뢰성 있는 데이터 전달, 포트 | TCP, UDP |
| 3 | Network (네트워크) | IP 라우팅, 논리 주소 | IP, ICMP, ARP |
| 2 | Data Link (데이터 링크) | MAC 주소, 프레임 전송 | 이더넷, 스위치, Wi-Fi (802.11) |
| 1 | Physical (물리) | 전기/광 신호 전송 | 케이블, 허브, NIC |
Layer 1 — 물리 계층
- 전기/광/무선 신호로 비트(0,1)를 전송
- 장비: 케이블, 광섬유, NIC, 허브
- 허브: 들어온 신호를 모든 포트에 브로드캐스트 → 충돌 도메인 공유 → 현재 거의 사용 안 함
Layer 2 — 데이터 링크 계층
이더넷 프레임 구조
[ Preamble | Dest MAC (6B) | Src MAC (6B) | EtherType (2B) | Payload | FCS ]
스위치 (Switch)
- MAC 주소 테이블 학습 → 해당 포트로만 프레임 전달
- 포트별 독립 충돌 도메인 → 허브 대비 효율적
- 동작 과정:
- 프레임 수신 → 출발지 MAC을 테이블에 기록
- 목적지 MAC이 테이블에 있으면 해당 포트로만 전달 (Unicast)
- 없으면 전체 포트로 Flooding
- L3 스위치: IP 라우팅 기능 포함 (라우터 + 스위치)
Layer 3 — 네트워크 계층
IP vs ICMP vs ARP
셋 다 Layer 3 근처에서 동작하지만 역할이 완전히 다르다.
| 프로토콜 | 역할 |
|---|---|
| IP | 패킷을 목적지까지 전달 |
| ICMP | 전달 과정의 오류/상태 보고 |
| ARP | IP 주소 → MAC 주소 변환 |
IP (Internet Protocol)
- 패킷을 출발지 → 목적지까지 라우팅
- 비연결성: 연결 수립 없이 그냥 보냄
- 비신뢰성: 손실, 중복, 순서 뒤바뀜 보장 안 함
- TCP/UDP가 IP 위에서 신뢰성을 보완
IP 헤더:
[ Version | TTL | Protocol | Src IP | Dst IP | ... ]
Protocol 필드:
6 = TCP
17 = UDP
1 = ICMP
ICMP (Internet Control Message Protocol)
- IP 통신 중 발생한 오류나 상태를 알리는 메시지 프로토콜
- 데이터 전송 용도가 아님, 진단/제어 목적
- IP 위에서 동작 (Protocol = 1)
대표 메시지 타입
Type 0 — Echo Reply (ping 응답)
Type 3 — Destination Unreachable (목적지 도달 불가)
Type 8 — Echo Request (ping 요청)
Type 11 — Time Exceeded (TTL 만료 → traceroute 원리)
ping 동작
A ──ICMP Echo Request (Type 8)──> B
A <─ICMP Echo Reply (Type 0)─── B
→ 왕복 시간(RTT)으로 연결 상태 확인
traceroute 동작
TTL=1 패킷 전송 → 첫 번째 라우터에서 TTL 만료 → ICMP Time Exceeded 반환 → 라우터 IP 획득
TTL=2 패킷 전송 → 두 번째 라우터에서 TTL 만료 → ICMP Time Exceeded 반환
... 반복 → 경로 전체 파악
ARP (Address Resolution Protocol)
- 같은 네트워크(LAN) 안에서 IP → MAC 주소 변환
- 실제 이더넷 프레임 전송에는 MAC 주소가 필요하기 때문
- Layer 2와 3의 경계에서 동작
동작 과정
A가 192.168.0.5의 MAC을 모를 때:
1. A → 브로드캐스트 (FF:FF:FF:FF:FF:FF)
"192.168.0.5 MAC 주소 가진 사람 응답해" (ARP Request)
2. B (192.168.0.5) → A에게 유니캐스트
"나야, MAC은 AA:BB:CC:DD:EE:FF" (ARP Reply)
3. A는 ARP 캐시에 저장 → 다음엔 브로드캐스트 없이 바로 전송
arp -a # 현재 ARP 테이블 조회
핵심 차이 정리
IP → "패킷을 어디로 보낼까" (라우팅/전달)
ICMP → "전달하다 문제 생겼어" (오류 보고/진단)
ARP → "이 IP의 MAC이 뭐야?" (주소 변환)
- ping이 안 되면 → ICMP 차단 or IP 경로 문제
- 같은 LAN인데 안 되면 → ARP 문제 의심
- 다른 네트워크로 못 나가면 → IP 라우팅/게이트웨이 문제
Layer 4 — 전송 계층
TCP (Transmission Control Protocol)
핵심 특성
- 연결 지향, 신뢰성 보장 (재전송, 순서 보장)
- 흐름 제어 (Sliding Window), 혼잡 제어 (Slow Start, AIMD)
3-Way Handshake (연결 수립)
Client Server
|--- SYN ------->| (Seq=x)
|<-- SYN-ACK ----| (Seq=y, Ack=x+1)
|--- ACK ------->| (Ack=y+1)
4-Way Handshake (연결 종료)
Client Server
|--- FIN ------->|
|<-- ACK --------|
|<-- FIN --------|
|--- ACK ------->|
TCP 헤더
[ Src Port | Dst Port | Seq Number | Ack Number | Flags | Window Size | Checksum ]
UDP (User Datagram Protocol)
핵심 특성
- 비연결성, 신뢰성 없음, 헤더 8바이트로 오버헤드 최소
- 손실 감수하고 속도 우선
UDP 헤더
[ Src Port (2B) | Dst Port (2B) | Length (2B) | Checksum (2B) ]
TCP vs UDP
| 항목 | TCP | UDP |
|---|---|---|
| 연결 | O (3-way) | X |
| 신뢰성 | O | X |
| 순서 보장 | O | X |
| 속도 | 느림 | 빠름 |
| 오버헤드 | 큼 (20B~) | 작음 (8B) |
| 사용처 | 파일전송, 웹, Kafka | 스트리밍, 게임, WebRTC 미디어 |
Layer 5~7 — 세션 / 표현 / 응용 계층
HTTP (HyperText Transfer Protocol)
HTTP/1.1
- TCP 기반 요청/응답 모델, Keep-Alive
- Head-of-Line Blocking: 앞 요청 완료 전까지 다음 대기
HTTP/2
- 하나의 TCP로 여러 스트림 병렬 처리 (멀티플렉싱)
- 헤더 압축 (HPACK), 서버 푸시
- TCP 기반 → TCP HOL Blocking은 여전히 존재
HTTP/3
- QUIC (UDP 기반) 사용 → TCP HOL Blocking 완전 해결
- 연결 수립 시간 단축 (0-RTT), TLS 1.3 내장
HTTP 메서드
GET — 조회 (멱등, 캐시 가능)
POST — 생성
PUT — 전체 교체 (멱등)
PATCH — 부분 수정
DELETE — 삭제 (멱등)
OPTIONS— CORS preflight
HTTP 상태 코드
2xx — 성공 : 200 OK, 201 Created, 204 No Content
3xx — 리다이렉트: 301 Moved, 302 Found, 304 Not Modified
4xx — 클라이언트: 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 429 Too Many Requests
5xx — 서버 오류 : 500 Internal Error, 502 Bad Gateway, 503 Service Unavailable
WebSocket (WS)
특성
- HTTP Upgrade로 시작 → 이후 양방향 전이중(Full-Duplex) 통신
- 지속 연결, HTTP 헤더 반복 없음 → 낮은 오버헤드
연결 과정
1. Client → HTTP Upgrade 요청
GET /chat HTTP/1.1
Upgrade: websocket
Sec-WebSocket-Key: dGhlIHNhbXBsZQ==
2. Server → 101 Switching Protocols
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
3. 이후 WebSocket 프레임으로 양방향 통신
HTTP vs WebSocket
| 항목 | HTTP | WebSocket |
|---|---|---|
| 방향 | 단방향 (요청→응답) | 양방향 |
| 연결 | 요청마다 새로 | 지속 연결 |
| 오버헤드 | 헤더 매번 반복 | 최초 1회 |
| 사용처 | REST API | 채팅, 실시간 알림, 협업 |
WebRTC (Web Real-Time Communication)
개요
- 브라우저 간 P2P 직접 통신 (서버 중계 최소화)
- UDP 기반 (실시간성 우선)
- 음성, 영상, 데이터 채널 지원
프로토콜 스택
미디어: MediaStream → SRTP → DTLS → UDP/ICE
데이터: DataChannel → SCTP → DTLS → UDP/ICE
연결 수립 과정
Peer A Signal Server Peer B
|── Offer SDP ──────────>| |
| |── Offer SDP ───>|
| |<─ Answer SDP ───|
|<─ Answer SDP ──────────| |
| |
|◄──── ICE Candidate 교환 (STUN/TURN) ────►|
|◄══════════ P2P 직접 연결 성립 ═══════════►|
핵심 개념
- SDP: 미디어 포맷, 코덱, 해상도 협상
- ICE: NAT/방화벽 통과를 위한 연결 후보 탐색
- STUN: 자신의 공인 IP/Port 파악
- TURN: P2P 불가 시 중계 서버
ICE 연결 순서
1. STUN 서버에 요청 → 공인 IP/Port 획득
2. ICE Candidate 교환 (local, srflx, relay)
3. Connectivity Check → 가능한 후보 선택
4. DTLS Handshake → 암호화 키 교환
5. SRTP/SCTP로 미디어/데이터 전송
MQTT (Message Queuing Telemetry Transport)
개요
- 경량 Pub/Sub 메시징 프로토콜, TCP 기반 (헤더 최소 2바이트)
- IoT, 저전력 디바이스 설계
구조
Publisher ──PUBLISH──> Broker ──DELIVER──> Subscriber
(토픽 관리/라우팅)
예: 온도센서 ──> /home/temperature ──> 대시보드
QoS 레벨
| 레벨 | 이름 | 설명 |
|---|---|---|
| 0 | At most once | 최대 1회, 손실 가능 |
| 1 | At least once | 최소 1회, 중복 가능 |
| 2 | Exactly once | 정확히 1회 (4-way handshake) |
토픽 와일드카드
home/livingroom/temperature — 단일 토픽
home/+/temperature — + : 한 레벨 와일드카드
home/# — # : 이하 모든 레벨
주요 패킷
CONNECT / CONNACK — 연결 수립
PUBLISH — 메시지 발행
SUBSCRIBE — 토픽 구독
PINGREQ — Keep-Alive
DISCONNECT — 연결 종료
Kafka
개요
- 분산 이벤트 스트리밍 플랫폼, TCP 기반 자체 바이너리 프로토콜
- 대용량 처리, 고가용성, 메시지 영속 저장
구조
Producer ──> Topic [Partition 0, 1, 2, ...] ──> Consumer Group
│
Broker
│
KRaft (메타데이터)
파티션 & 오프셋
Topic: "orders"
Partition 0: [msg0][msg1][msg2][msg3] ...
offset: 0 1 2 3
Partition 1: [msg0][msg1] ...
Consumer는 오프셋을 직접 관리 → 재처리 가능
Consumer Group
- 같은 그룹: 파티션을 나눠서 병렬 처리
- 다른 그룹: 동일 토픽을 독립적으로 소비 (브로드캐스트 효과)
MQTT vs Kafka
| 항목 | MQTT | Kafka |
|---|---|---|
| 대상 | IoT 디바이스 | 백엔드 서비스 간 |
| 저장 | 없음 (기본) | 영속 저장 |
| 처리량 | 낮음 | 초당 수백만 |
| 재처리 | 불가 | 오프셋으로 가능 |
| 복잡도 | 낮음 | 높음 |
전체 프로토콜 계층 정리
Layer 7 │ HTTP/1.1 HTTP/2 HTTP/3 WebSocket MQTT Kafka WebRTC(SDP/ICE)
Layer 6 │ TLS/SSL DTLS JSON Protobuf HPACK
Layer 5 │ WebRTC(ICE 협상) SSH 세션
Layer 4 │ TCP UDP
│ HTTP, WS, MQTT, Kafka WebRTC 미디어, DNS, QUIC(HTTP/3)
Layer 3 │ IP (IPv4 / IPv6)
Layer 2 │ 이더넷 프레임, Wi-Fi, 스위치 (MAC 테이블)
Layer 1 │ 케이블, 광섬유, 무선 신호, 허브
실무 선택 가이드
| 요구사항 | 추천 기술 |
|---|---|
| REST API, 웹 페이지 | HTTP/2 + HTTPS |
| 실시간 채팅, 알림 | WebSocket |
| 브라우저 P2P 화상통화 | WebRTC |
| IoT 센서 데이터 수집 | MQTT (QoS 1~2) |
| MSA 서비스 간 이벤트 | Kafka |
| DNS 조회, 게임 | UDP |
| 파일 전송, 결제 | TCP |
| 고성능 HTTP | HTTP/3 (QUIC) |
자주 헷갈리는 포인트
Polling vs SSE vs WebSocket
Polling: Client ──요청──> Server (매번 반복) → 낭비 심함
Long Poll: Client ──요청──> Server (응답 대기 후 재요청) → 개선됐지만 비효율
SSE: Client <──스트림── Server (서버→클라이언트 단방향)
WebSocket: Client <────────> Server (양방향 지속 연결) → 가장 효율적
WebRTC가 UDP를 쓰는 이유
- 영상통화는 1프레임 손실 < 1초 지연 → 손실 감수
- TCP 재전송 대기가 오히려 품질 저하
- SRTP로 보안, RTCP로 품질 제어를 UDP 위에서 직접 구현
MQTT vs Kafka 선택 기준
- 디바이스 → 서버, 경량, IoT → MQTT
- 서버 → 서버, 대용량, 재처리 필요 → Kafka
TCP vs UDP 선택 기준
- 데이터 무결성 > 속도 → TCP
- 속도 > 완벽한 무결성 → UDP (애플리케이션 레벨에서 보완 가능)
댓글 0
불러오는 중...