네트워크 계층 모델과 데이터 통신
OSI 7계층, TCP/IP, HTTP/2/3, TLS, WebSocket 등 네트워크 프로토콜 총정리
Contents
데이터는 송신 측에서 계층마다 헤더가 붙고 수신 측에서 벗겨지며 전달된다.
개요
네트워크 통신은 여러 계층으로 나뉘어 각 계층이 독립적으로 동작한다. 이 계층 모델을 이해하는 것은 네트워크 문제를 진단하고, 시스템 아키텍처를 설계하는 데 필수적이다. OSI(Open Systems Interconnection) 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(Quick UDP Internet Connections) |
| 3 | 네트워크 계층 (Network) | 논리 주소, 라우팅 | Packet | IP, ICMP, OSPF, BGP(Border Gateway Protocol) |
| 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 매핑
상세 매핑 테이블
| 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)**가 추가되고, 수신 측에서 올라가며 헤더가 제거된다.
송신 측 (캡슐화):
응용 계층: [HTTP 헤더 | HTTP 본문]
↓ + TCP 헤더 추가
전송 계층: [TCP 헤더 | HTTP 헤더 | HTTP 본문]
↓ + IP 헤더 추가
네트워크 계층: [IP 헤더 | TCP 헤더 | HTTP 헤더 | HTTP 본문]
↓ + Ethernet 헤더/트레일러 추가
데이터링크: [Eth 헤더 | IP 헤더 | TCP 헤더 | HTTP 데이터 | Eth 트레일러]
↓ 비트로 변환
물리 계층: 01001010110101010101001010101010...역캡슐화 (수신 측)
물리 계층: 비트 수신 → 프레임 복원
↓ 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 바이트)
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 바이트)
├─────────┬─────────┬─────────────────────────────┤
│ 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)
SDN은 제어부를 각 장비에서 분리해 중앙 컨트롤러로 옮긴 구조다.
전통적 네트워크 vs SDN
| 특성 | 전통적 네트워크 | SDN |
|---|---|---|
| 제어부 | 각 장비에 분산 | 중앙 집중 (Controller) |
| 설정 | 장비별 CLI/GUI | 프로그래밍 가능 (API) |
| 유연성 | 낮음 (하드웨어 종속) | 높음 (소프트웨어 정의) |
| 장애 격리 | 어려움 | 중앙 모니터링으로 용이 |
SDN 아키텍처
백엔드에서의 SDN
| 사용 사례 | 설명 |
|---|---|
| Kubernetes CNI | Calico, Cilium 등이 SDN 원리로 Pod 네트워크 관리 |
| AWS VPC | 소프트웨어 정의 가상 네트워크 |
| 서비스 메시 | Istio/Envoy가 애플리케이션 레벨에서 트래픽 제어 |
| OpenStack Neutron | 프라이빗 클라우드 네트워크 관리 |
7. NFV (Network Function Virtualization)
전통적으로 전용 하드웨어(방화벽, 로드밸런서, IDS)에서 수행하던 네트워크 기능을 범용 서버에서 소프트웨어로 구현하는 기술이다.
전통적 접근 vs NFV
전통: [전용 방화벽] [전용 로드밸런서] [전용 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로 패킷 분석
# 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)
[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로 캡슐화 (약 1600만 개 세그먼트, 24비트 VNI) | Docker Overlay, VMware NSX |
| GENEVE | VXLAN 후속, 유연한 메타데이터 | OVN, AWS |
| WireGuard | 경량 VPN 터널링 | 보안 오버레이 |
| IPsec | IP 레벨 암호화 터널 | Site-to-Site VPN |
Kubernetes 오버레이 네트워크
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 코드는 IPv4 헤더를 파싱하고 목적지 주소 기반으로 포워딩하는 간단한 데이터 플레인 프로그램이다. header 블록에서 패킷 필드를 정의하고, control 블록의 table에서 매칭 규칙과 액션을 지정한다.
// 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), 커스텀 로드밸런싱, 캐시 가속
정리
계층 모델은 통신 과정을 독립된 단계로 나눠, 문제를 어느 계층에서 끊겼는지로 좁혀 진단하게 해 준다. 송신 측에서 각 계층이 헤더를 붙이고 수신 측에서 역순으로 벗기는 캡슐화가 이 분리를 떠받친다. 백엔드 실무에서는 응용·표현·전송 계층(HTTP API, TLS, TCP 튜닝, 로드밸런서)을 매일 다루고, 네트워크 계층 이하는 VPC·서브넷·K8s 네트워크에서 간헐적으로 접한다. SDN은 제어부를 중앙 컨트롤러로, NFV는 네트워크 기능을 소프트웨어로 옮겨 인프라를 프로그래밍 가능하게 만든다. 오버레이 네트워크는 물리망 위에 가상망을 얹어 컨테이너·멀티테넌트 환경을 받친다.
→ 다음 노트: 전송 계층 - TCP, UDP, QUIC, 혼잡 제어 알고리즘