TCP/IP 4계층 모델
OSI 7계층 모델은 네트워크를 이해하기 위한 훌륭한 참조 모델이지만, 실제 인터넷은 이 모델을 그대로 따르지 않습니다. 현실에서 인터넷의 동작을 설명하는 데 사용되는 것은 TCP/IP 4계층 모델입니다.
그렇다면 왜 OSI를 먼저 배웠을까요? OSI 모델이 각 계층의 역할을 더 세밀하게 나누어 놓았기 때문에, 네트워크의 동작 원리를 이해하는 데는 OSI가 더 좋은 학습 도구입니다. 하지만 실제 프로토콜 스택을 설명할 때는 TCP/IP 모델이 현실에 훨씬 가깝습니다.
OSI와 TCP/IP의 대응 관계
OSI 7계층 TCP/IP 4계층
┌───────────────────────┐ ┌──────────────────────┐
│ 7. 응용 (Application) │ │ 4. 응용 계층 │
│ 6. 표현 (Presentation)│ ───────▶ │ (Application) │
│ 5. 세션 (Session) │ └──────────────────────┘
├───────────────────────┤
│ 4. 전송 (Transport) │ ───────▶ ┌──────────────────────┐
└───────────────────────┘ │ 3. 전송 계층 │
│ (Transport) │
┌───────────────────────┐ └──────────────────────┘
│ 3. 네트워크 (Network) │ ───────▶ ┌──────────────────────┐
└───────────────────────┘ │ 2. 인터넷 계층 │
│ (Internet) │
┌──────────────────────┐ └──────────────────────┘
│ 2. 데이터 링크 │
│ 1. 물리 (Physical) │ ───────▶ ┌────────────────────────┐
└──────────────────────┘ │ 1. 네트워크 인터페이스 │
│ (Network Interface) │
└────────────────────────┘OSI의 5~7계층이 TCP/IP의 응용 계층 하나로 통합됩니다. 세션 관리, 데이터 표현 변환, 실제 서비스 제공이 모두 응용 계층에서 처리됩니다.
OSI의 1~2계층이 TCP/IP의 네트워크 인터페이스 계층으로 합쳐집니다. 물리적 전송과 프레이밍을 함께 다룹니다.
각 계층 상세
응용 계층 (Application Layer)
사용자가 직접 상호작용하는 계층입니다. HTTP, DNS, SMTP 등 모든 응용 프로토콜이 여기에 속합니다.
| 프로토콜 | 포트 | 전송 | 용도 |
|---|---|---|---|
| HTTP | 80 | TCP | 웹 페이지 전송 |
| HTTPS | 443 | TCP | 암호화된 웹 |
| DNS | 53 | UDP/TCP | 도메인 → IP 변환 |
| SMTP | 25 | TCP | 메일 전송 |
| SSH | 22 | TCP | 원격 접속 |
| FTP | 21 | TCP | 파일 전송 |
| DHCP | 67/68 | UDP | IP 자동 할당 |
| NTP | 123 | UDP | 시간 동기화 |
개발자가 가장 많이 다루는 계층입니다. fetch(), axios, curl 등은 모두 이 계층에서 동작합니다.
전송 계층 (Transport Layer)
프로세스 간 데이터 전달을 담당합니다. TCP와 UDP가 핵심입니다.
import socket
# TCP 소켓 (연결형, 신뢰성)
tcp_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# UDP 소켓 (비연결형, 빠름)
udp_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 개발자는 소켓 API를 통해 전송 계층에 접근
# 소켓 = 응용 계층과 전송 계층 사이의 인터페이스QUIC은 UDP 위에 구축된 차세대 전송 프로토콜로, HTTP/3의 기반입니다. TCP의 신뢰성과 UDP의 빠른 연결 설정을 결합했습니다.
인터넷 계층 (Internet Layer)
IP 프로토콜이 핵심이며, 서로 다른 네트워크 간의 라우팅을 담당합니다.
| 프로토콜 | 역할 |
|---|---|
| IPv4 | 32비트 주소, 현재 가장 널리 사용 |
| IPv6 | 128비트 주소, IPv4 고갈 대응 |
| ICMP | 오류 보고, 진단 (ping) |
| ARP | IP → MAC 주소 변환 |
| IGMP | 멀티캐스트 그룹 관리 |
# IP 주소 확인
ip addr show
# 라우팅 테이블 확인
ip route show
# ICMP로 연결 확인
ping -c 4 8.8.8.8
# 경로 추적
traceroute 8.8.8.8
# ARP 테이블 확인 (IP → MAC 매핑)
arp -n네트워크 인터페이스 계층 (Network Interface Layer)
물리적 전송과 프레이밍을 담당합니다. 이더넷, Wi-Fi가 대표적입니다.
| 기술 | 표준 | 속도 | 매체 |
|---|---|---|---|
| 이더넷 | IEEE 802.3 | 1/10/25/100 Gbps | UTP, 광섬유 |
| Wi-Fi 5 | IEEE 802.11ac | ~3.5 Gbps | 5GHz 전파 |
| Wi-Fi 6 | IEEE 802.11ax | ~9.6 Gbps | 2.4/5/6GHz |
| 5G NR | 3GPP | ~20 Gbps | 밀리미터파 |
현실에서 TCP/IP를 더 많이 쓰는 이유
가장 근본적인 이유는 순서가 반대였기 때문입니다.
OSI 모델은 먼저 이론을 정립하고, 그에 맞는 프로토콜을 만들겠다는 하향식(Top-down) 접근이었습니다. 반면 TCP/IP는 먼저 인터넷에서 실제로 동작하는 프로토콜을 만들고, 나중에 그것을 모델로 정리했다는 상향식(Bottom-up) 접근이었습니다.
OSI의 접근: 이론 정립 (1984) → 프로토콜 채택 시도 → 인터넷은 이미 TCP/IP
TCP/IP의 접근: 프로토콜 구현 (1974) → 인터넷 표준 (1983) → 모델 정리인터넷이 폭발적으로 성장하는 동안 TCP/IP 프로토콜들은 이미 전 세계에서 사용되고 있었습니다. OSI 표준이 완성되었을 때는 이미 TCP/IP 기반의 인터넷이 사실상의 표준(de facto standard)이 된 뒤였습니다.
데이터 흐름 예시
웹 브라우저에서 https://example.com에 접속할 때 각 계층에서 어떤 일이 일어나는지 추적해 봅시다.
1. 응용 계층
브라우저가 HTTP GET 요청 생성
"GET / HTTP/1.1\r\nHost: example.com\r\n\r\n"
2. 전송 계층 (TCP)
HTTP 메시지에 TCP 헤더 추가
출발지 포트: 52341 (임의), 목적지 포트: 443 (HTTPS)
순서 번호, ACK 번호 설정
3. 인터넷 계층 (IP)
TCP 세그먼트에 IP 헤더 추가
출발지 IP: 192.168.1.100, 목적지 IP: 93.184.216.34
TTL: 64
4. 네트워크 인터페이스 계층 (이더넷)
IP 패킷에 이더넷 헤더 추가
출발지 MAC: 내 NIC, 목적지 MAC: 게이트웨이 MAC
→ 전기 신호로 변환하여 케이블로 전송"""TCP/IP 각 계층의 헤더 크기를 계산하여
전체 프레임에서 실제 데이터 비율을 확인"""
headers = {
"이더넷 헤더": 14,
"IP 헤더": 20,
"TCP 헤더": 20,
"FCS (트레일러)": 4,
}
total_overhead = sum(headers.values())
mtu = 1500 # 이더넷 MTU
max_payload = mtu - 20 - 20 # IP + TCP 헤더 제외
frame_total = mtu + 14 + 4 # 이더넷 헤더 + FCS 포함
print("=== 헤더 크기 ===")
for name, size in headers.items():
print(f" {name}: {size} bytes")
print(f"\n전체 프레임: {frame_total} bytes")
print(f"프로토콜 오버헤드: {total_overhead} bytes")
print(f"최대 페이로드: {max_payload} bytes")
print(f"데이터 효율: {max_payload/frame_total*100:.1f}%")실무에서의 계층 참조
실무에서는 OSI와 TCP/IP를 혼용합니다. 대화할 때는 OSI 번호를 쓰면서, 실제 프로토콜은 TCP/IP 기준입니다.
| 실무 표현 | 의미 |
|---|---|
| L7 로드 밸런서 | HTTP 헤더/URL 기반 트래픽 분배 (ALB) |
| L4 로드 밸런서 | IP/포트 기반 트래픽 분배 (NLB) |
| L3 스위치 | 라우팅 기능이 있는 스위치 |
| L2 VLAN | MAC 기반 가상 네트워크 분리 |
다음 절에서는 이 계층들 사이에서 데이터가 실제로 어떻게 포장되고 전달되는지, 캡슐화와 역캡슐화를 살펴보겠습니다.