jongkwan.dev
개발 · Essay №003

네트워크 계층 모델과 데이터 통신

OSI 7계층, TCP/IP, HTTP/2/3, TLS, WebSocket 등 네트워크 프로토콜 총정리

이종관2025년 2월 1일15 min read
Contents

데이터는 송신 측에서 계층마다 헤더가 붙고 수신 측에서 벗겨지며 전달된다.

개요

네트워크 통신은 여러 계층으로 나뉘어 각 계층이 독립적으로 동작한다. 이 계층 모델을 이해하는 것은 네트워크 문제를 진단하고, 시스템 아키텍처를 설계하는 데 필수적이다. OSI(Open Systems Interconnection) 7계층과 TCP/IP 4계층 모델을 매핑해 보면 두 모델의 대응 관계가 드러난다. 데이터는 각 계층을 내려가며 헤더가 추가되고, 올라가며 제거된다.

1. OSI 7계층 모델

각 계층 설명

계층이름역할PDU주요 장비/프로토콜
7응용 계층 (Application)사용자 서비스 제공DataHTTP, FTP, SMTP, DNS, gRPC
6표현 계층 (Presentation)데이터 형식 변환, 암호화DataSSL/TLS, JPEG, MPEG, ASCII
5세션 계층 (Session)세션 설정/관리/종료DataNetBIOS, RPC
4전송 계층 (Transport)종단 간 신뢰성 있는 전송SegmentTCP, UDP, QUIC(Quick UDP Internet Connections)
3네트워크 계층 (Network)논리 주소, 라우팅PacketIP, ICMP, OSPF, BGP(Border Gateway Protocol)
2데이터 링크 계층 (Data Link)물리 주소, 프레임 전송FrameEthernet, 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, SCTPL4 로드밸런서
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)**가 추가되고, 수신 측에서 올라가며 헤더가 제거된다.

text
송신 측 (캡슐화):
 
응용 계층:    [HTTP 헤더 | HTTP 본문]
                    ↓ + TCP 헤더 추가
전송 계층:    [TCP 헤더 | HTTP 헤더 | HTTP 본문]
                    ↓ + IP 헤더 추가
네트워크 계층: [IP 헤더 | TCP 헤더 | HTTP 헤더 | HTTP 본문]
                    ↓ + Ethernet 헤더/트레일러 추가
데이터링크:   [Eth 헤더 | IP 헤더 | TCP 헤더 | HTTP 데이터 | Eth 트레일러]
                    ↓ 비트로 변환
물리 계층:    01001010110101010101001010101010...

역캡슐화 (수신 측)

text
물리 계층:    비트 수신 → 프레임 복원
                    ↓ 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 바이트)

text
 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 바이트)

text
├─────────┬─────────┬─────────────────────────────┤
│ 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 CNICalico, Cilium 등이 SDN 원리로 Pod 네트워크 관리
AWS VPC소프트웨어 정의 가상 네트워크
서비스 메시Istio/Envoy가 애플리케이션 레벨에서 트래픽 제어
OpenStack Neutron프라이빗 클라우드 네트워크 관리

7. NFV (Network Function Virtualization)

전통적으로 전용 하드웨어(방화벽, 로드밸런서, IDS)에서 수행하던 네트워크 기능을 범용 서버에서 소프트웨어로 구현하는 기술이다.

전통적 접근 vs NFV

text
전통:  [전용 방화벽] [전용 로드밸런서] [전용 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)

text
[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-alive

9. 오버레이 네트워크 (Overlay Network)

기존 물리 네트워크(Underlay) 위에 논리적인 가상 네트워크를 구축하는 기술이다.

주요 프로토콜

프로토콜설명사용
VXLANL2 프레임을 UDP로 캡슐화 (약 1600만 개 세그먼트, 24비트 VNI)Docker Overlay, VMware NSX
GENEVEVXLAN 후속, 유연한 메타데이터OVN, AWS
WireGuard경량 VPN 터널링보안 오버레이
IPsecIP 레벨 암호화 터널Site-to-Site VPN

Kubernetes 오버레이 네트워크

text
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
// 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, 혼잡 제어 알고리즘