네트워크 계층 모델과 데이터 통신
OSI 7계층, TCP/IP, HTTP/2/3, TLS, WebSocket 등 네트워크 프로토콜 총정리
2025년 1월 6일·14 min read·
backend
network
tcp-ip
http
tls
websocket
상위 노트: 웹 프로토콜 및 네트워크 관련 노트: 전송 계층, 네트워크 계층, 응용 계층
개요
네트워크 통신은 여러 계층으로 나뉘어 각 계층이 독립적으로 동작한다. 이 계층 모델을 이해하는 것은 네트워크 문제를 진단하고, 시스템 아키텍처를 설계하는 데 필수적이다. OSI 7계층과 TCP/IP 4계층 모델을 매핑하고, 데이터가 각 계층을 거치며 어떻게 변환되는지 살펴본다.
1. OSI 7계층 모델
각 계층 설명
| 계층 | 이름 | 역할 | PDU | 주요 장비/프로토콜 |
|---|---|---|---|---|
| 7 | 응용 계층 (Application) | 사용자 서비스 제공 | Data | HTTP, FTP, SMTP, DNS, gRPC |
| 6 | 표현 계층 (Presentation) | 데이터 형식 변환, 암호화 | Data | SSL/TLS, JPEG, MPEG, ASCII |
| 5 | 세션 계층 (Session) | 세션 설정/관리/종료 | Data | NetBIOS, RPC |
| 4 | 전송 계층 (Transport) | 종단 간 신뢰성 있는 전송 | Segment | TCP, UDP, QUIC |
| 3 | 네트워크 계층 (Network) | 논리 주소, 라우팅 | Packet | IP, ICMP, OSPF, BGP |
| 2 | 데이터 링크 계층 (Data Link) | 물리 주소, 프레임 전송 | Frame | Ethernet, Wi-Fi, ARP, Switch |
| 1 | 물리 계층 (Physical) | 비트 전송, 전기/광 신호 | Bit | 케이블, 허브, 리피터 |
각 계층의 백엔드 관련성
| 계층 | 백엔드에서 직접 다루는 경우 |
|---|---|
| 7 (응용) | 매일 -- HTTP API 설계, gRPC, WebSocket |
| 6 (표현) | 자주 -- TLS 설정, JSON/Protobuf 직렬화 |
| 5 (세션) | 가끔 -- 세션 관리, Keep-Alive |
| 4 (전송) | 자주 -- TCP 튜닝, 포트 관리, 로드밸런서 |
| 3 (네트워크) | 가끔 -- 서브넷 설정, VPC 라우팅, K8s 네트워크 |
| 2 (데이터 링크) | 드물게 -- 인프라 수준 (MAC 주소, VLAN) |
| 1 (물리) | 거의 없음 -- 데이터센터 운영팀 영역 |
2. TCP/IP 4계층 모델
OSI와 TCP/IP 매핑
plaintext
OSI 7계층 TCP/IP 4계층
┌─────────────┐
│ 7. 응용 │
├─────────────┤ ┌─────────────┐
│ 6. 표현 │ →→→ │ 4. 응용 │
├─────────────┤ │ (Application)│
│ 5. 세션 │ └─────────────┘
├─────────────┤ ┌─────────────┐
│ 4. 전송 │ →→→ │ 3. 전송 │
│ │ │ (Transport) │
├─────────────┤ └─────────────┘
│ 3. 네트워크 │ →→→ ┌─────────────┐
│ │ │ 2. 인터넷 │
├─────────────┤ │ (Internet) │
│ 2. 데이터링크│ └─────────────┘
├─────────────┤ →→→ ┌─────────────┐
│ 1. 물리 │ │ 1. 네트워크 │
│ │ │ 접근(Network │
└─────────────┘ │ Access) │
└─────────────┘상세 매핑 테이블
| TCP/IP 계층 | OSI 매핑 | PDU | 주요 프로토콜 | 주요 장비 |
|---|---|---|---|---|
| 4. 응용 | 7+6+5 | 메시지 (Data) | HTTP, HTTPS, DNS, FTP, SMTP, SSH, gRPC | 게이트웨이, L7 로드밸런서 |
| 3. 전송 | 4 | 세그먼트 (Segment) / 데이터그램 (Datagram) | TCP, UDP, QUIC, SCTP | L4 로드밸런서 |
| 2. 인터넷 | 3 | 패킷 (Packet) | IPv4, IPv6, ICMP, ARP, OSPF, BGP | 라우터, L3 스위치 |
| 1. 네트워크 접근 | 2+1 | 프레임 (Frame) / 비트 (Bit) | Ethernet, Wi-Fi (802.11), PPP | 스위치, NIC, 케이블 |
3. 데이터 캡슐화 (Data Encapsulation)
전송 과정
데이터가 송신 측에서 각 계층을 내려가며 **헤더(Header)**가 추가되고, 수신 측에서 올라가며 헤더가 제거된다.
plaintext
송신 측 (캡슐화):
응용 계층: [HTTP 헤더 | HTTP 본문]
↓ + TCP 헤더 추가
전송 계층: [TCP 헤더 | HTTP 헤더 | HTTP 본문]
↓ + IP 헤더 추가
네트워크 계층: [IP 헤더 | TCP 헤더 | HTTP 헤더 | HTTP 본문]
↓ + Ethernet 헤더/트레일러 추가
데이터링크: [Eth 헤더 | IP 헤더 | TCP 헤더 | HTTP 데이터 | Eth 트레일러]
↓ 비트로 변환
물리 계층: 01001010110101010101001010101010...역캡슐화 (수신 측)
plaintext
물리 계층: 비트 수신 → 프레임 복원
↓ Ethernet 헤더 제거
데이터링크: [IP 헤더 | TCP 헤더 | HTTP 데이터]
↓ IP 헤더 제거
네트워크 계층: [TCP 헤더 | HTTP 데이터]
↓ TCP 헤더 제거
전송 계층: [HTTP 데이터]
↓ 응용 프로그램에 전달
응용 계층: HTTP 응답 처리PDU (Protocol Data Unit) 정리
| 계층 | PDU 이름 | 포함 정보 |
|---|---|---|
| 응용 | 메시지 (Message) | 실제 애플리케이션 데이터 |
| 전송 | 세그먼트 (Segment, TCP) / 데이터그램 (Datagram, UDP) | 포트 번호, 시퀀스 번호, 체크섬 |
| 네트워크 | 패킷 (Packet) | 출발/도착 IP 주소, TTL |
| 데이터 링크 | 프레임 (Frame) | 출발/도착 MAC 주소, CRC |
| 물리 | 비트 (Bit) | 전기/광/무선 신호 |
4. 각 계층의 주요 헤더 구조
TCP 헤더 (20-60 바이트)
plaintext
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
├─────────────────────────┼─────────────────────────┤
│ Source Port (16) │ Destination Port (16) │
├─────────────────────────┴─────────────────────────┤
│ Sequence Number (32) │
├───────────────────────────────────────────────────┤
│ Acknowledgment Number (32) │
├────────┬──────┬─┬─┬─┬─┬─┬─┼─────────────────────┤
│Offset │Rsrvd │U│A│P│R│S│F│ Window Size (16) │
│ (4) │ (6) │R│C│S│S│Y│I│ │
│ │ │G│K│H│T│N│N│ │
├────────┴──────┴─┴─┴─┴─┴─┴─┼─────────────────────┤
│ Checksum (16) │ Urgent Pointer (16)│
├────────────────────────────┴─────────────────────┤
│ Options (variable) │
└───────────────────────────────────────────────────┘IPv4 헤더 (20-60 바이트)
plaintext
├─────────┬─────────┬─────────────────────────────┤
│ Version │ IHL │ Type of Service (8) │
│ (4) │ (4) │ │
├─────────┴─────────┼─────────────────────────────┤
│ Total Length (16)│ Identification (16) │
├────────────────────┼──┬──────────────────────────┤
│ Flags (3) │ │ Fragment Offset (13) │
├────────────────────┼──┴──────────────────────────┤
│ TTL (8) │ Protocol (8) │ Header │
│ │ (6=TCP,17=UDP)│ Checksum │
├────────────────────┴───────────────┴─────────────┤
│ Source IP Address (32) │
├──────────────────────────────────────────────────┤
│ Destination IP Address (32) │
└──────────────────────────────────────────────────┘5. 네트워크 장비와 계층 매핑
| 장비 | 동작 계층 | 역할 | 백엔드 관련성 |
|---|---|---|---|
| 허브 (Hub) | L1 (물리) | 신호 증폭, 모든 포트로 전송 | 현재 거의 사용 안 함 |
| 스위치 (Switch) | L2 (데이터 링크) | MAC 주소 기반 프레임 전달 | VLAN 설정, 네트워크 격리 |
| 라우터 (Router) | L3 (네트워크) | IP 주소 기반 패킷 라우팅 | VPC, 서브넷, 게이트웨이 |
| L4 로드밸런서 | L4 (전송) | TCP/UDP 포트 기반 부하 분산 | HAProxy (TCP 모드), NLB |
| L7 로드밸런서 | L7 (응용) | HTTP 헤더/URL 기반 부하 분산 | Nginx, ALB, Envoy |
| 방화벽 | L3-L7 | 패킷/세션 기반 접근 제어 | 보안 그룹, WAF |
6. SDN (Software Defined Networking) -- 네트워크의 패러다임 전환
전통적 네트워크 vs SDN
| 특성 | 전통적 네트워크 | SDN |
|---|---|---|
| 제어부 | 각 장비에 분산 | 중앙 집중 (Controller) |
| 설정 | 장비별 CLI/GUI | 프로그래밍 가능 (API) |
| 유연성 | 낮음 (하드웨어 종속) | 높음 (소프트웨어 정의) |
| 장애 격리 | 어려움 | 중앙 모니터링으로 용이 |
SDN 아키텍처
plaintext
┌─────────────────────────────────────┐
│ Application Layer │
│ 네트워크 앱 (방화벽, 로드밸런서, 모니터링) │
├──────────── Northbound API ─────────┤
│ Control Layer │
│ SDN Controller (OpenDaylight, │
│ ONOS, VMware NSX) │
├──────────── Southbound API ─────────┤
│ (OpenFlow, P4, NETCONF) │
│ Infrastructure Layer │
│ 스위치, 라우터 (데이터 전달만 담당) │
└─────────────────────────────────────┘백엔드에서의 SDN
| 사용 사례 | 설명 |
|---|---|
| Kubernetes CNI | Calico, Cilium 등이 SDN 원리로 Pod 네트워크 관리 |
| AWS VPC | 소프트웨어 정의 가상 네트워크 |
| 서비스 메시 | Istio/Envoy가 애플리케이션 레벨에서 트래픽 제어 |
| OpenStack Neutron | 프라이빗 클라우드 네트워크 관리 |
7. NFV (Network Function Virtualization) -- 네트워크 기능 가상화
개념
전통적으로 전용 하드웨어(방화벽, 로드밸런서, IDS)에서 수행하던 네트워크 기능을 범용 서버에서 소프트웨어로 구현하는 기술.
전통적 접근 vs NFV
plaintext
전통: [전용 방화벽] [전용 로드밸런서] [전용 IDS]
↓ ↓ ↓
고가 하드웨어 고가 하드웨어 고가 하드웨어
NFV: [범용 서버]
├── VM/컨테이너: 가상 방화벽 (vFW)
├── VM/컨테이너: 가상 로드밸런서 (vLB)
└── VM/컨테이너: 가상 IDS (vIDS)NFV 핵심 구성 요소
| 구성 요소 | 설명 |
|---|---|
| VNF (Virtual Network Function) | 가상화된 네트워크 기능 (방화벽, 라우터 등) |
| NFVI (NFV Infrastructure) | VNF가 실행되는 하드웨어 + 가상화 레이어 |
| MANO (Management and Orchestration) | VNF 생명주기 관리, 자원 할당 |
SDN + NFV 통합
SDN이 네트워크 제어를 소프트웨어로, NFV가 네트워크 기능을 소프트웨어로 전환한다. 둘을 결합하면:
- 네트워크 인프라 전체를 프로그래밍 가능
- 수요에 따라 네트워크 기능을 동적으로 스케일링
- 5G 네트워크 슬라이싱의 기술적 기반 (네트워크 보안 및 무선 통신)
8. 프로토콜 스택 실습: 패킷 분석
Wireshark로 패킷 분석
bash
# tcpdump로 패킷 캡처 (Wireshark에서 분석)
sudo tcpdump -i eth0 -w capture.pcap port 80
# 특정 호스트의 DNS 패킷만 캡처
sudo tcpdump -i eth0 -w dns.pcap port 53
# HTTP 요청 텍스트만 출력
sudo tcpdump -i eth0 -A port 80실제 패킷 구조 예시 (HTTP GET)
plaintext
[Ethernet Frame]
Dst MAC: aa:bb:cc:dd:ee:ff
Src MAC: 11:22:33:44:55:66
Type: 0x0800 (IPv4)
[IPv4 Packet]
Version: 4
TTL: 64
Protocol: 6 (TCP)
Src IP: 192.168.1.100
Dst IP: 93.184.216.34
[TCP Segment]
Src Port: 54321
Dst Port: 80
Seq: 1
Ack: 1
Flags: PSH, ACK
[HTTP Request]
GET /index.html HTTP/1.1
Host: example.com
Connection: keep-alive9. 오버레이 네트워크 (Overlay Network)
개념
기존 물리 네트워크(Underlay) 위에 논리적인 가상 네트워크를 구축하는 기술.
주요 프로토콜
| 프로토콜 | 설명 | 사용 |
|---|---|---|
| VXLAN | L2 프레임을 UDP로 캡슐화 (16M VLAN ID) | Docker Overlay, VMware NSX |
| GENEVE | VXLAN 후속, 유연한 메타데이터 | OVN, AWS |
| WireGuard | 경량 VPN 터널링 | 보안 오버레이 |
| IPsec | IP 레벨 암호화 터널 | Site-to-Site VPN |
Kubernetes 오버레이 네트워크
plaintext
┌─────────────────────────────────────┐
│ K8s Cluster │
│ │
│ Node A (10.0.0.1) │
│ ┌─────────────────┐ │
│ │ Pod 1 (10.244.0.2)│ │
│ │ Pod 2 (10.244.0.3)│ │
│ └────────┬────────┘ │
│ │ VXLAN/GENEVE │
│ Node B (10.0.0.2) │
│ ┌─────────────────┐ │
│ │ Pod 3 (10.244.1.2)│ │
│ │ Pod 4 (10.244.1.3)│ │
│ └─────────────────┘ │
└─────────────────────────────────────┘
Pod 1 → Pod 3 통신:
원본 패킷: Src=10.244.0.2, Dst=10.244.1.2
오버레이: VXLAN 캡슐화 → Src=10.0.0.1, Dst=10.0.0.2 (UDP 4789)
Node B에서 역캡슐화 → 원본 패킷 → Pod 3에 전달10. P4 -- 프로그래머블 데이터 플레인
개념
P4(Programming Protocol-Independent Packet Processors)는 네트워크 스위치의 패킷 처리 로직을 프로그래밍할 수 있게 하는 언어다.
p4
// P4 간단 예시: IPv4 포워딩
header ipv4_t {
bit<4> version;
bit<8> ttl;
bit<32> srcAddr;
bit<32> dstAddr;
}
control MyIngress(inout headers hdr, ...) {
action forward(bit<9> port) {
standard_metadata.egress_spec = port;
hdr.ipv4.ttl = hdr.ipv4.ttl - 1;
}
table ipv4_lpm {
key = { hdr.ipv4.dstAddr: lpm; }
actions = { forward; drop; }
}
apply { ipv4_lpm.apply(); }
}의의
- 기존: 스위치 제조사가 정한 프로토콜만 처리 가능
- P4: 새로운 프로토콜을 스위치 교체 없이 프로그래밍
- 활용: 인밴드 텔레메트리(INT), 커스텀 로드밸런싱, 캐시 가속
다음 노트
→ 전송 계층: TCP, UDP, QUIC, 혼잡 제어 알고리즘