OSI 7계층 모델
계층화의 필요성을 이해했으니, 이제 실제로 어떤 계층들이 존재하는지 살펴볼 차례입니다. 네트워크 계층 모델 중 가장 먼저 등장한 것이 OSI(Open Systems Interconnection) 7계층 모델입니다.
1984년 ISO(국제표준화기구)가 발표한 이 모델은, 통신 과정을 7개의 계층으로 나누어 각 계층의 역할을 명확히 정의합니다. 실무에서 직접 사용되는 모델은 아니지만, 네트워크를 이해하고 문제를 진단할 때 여전히 가장 널리 사용되는 참조 프레임워크입니다.
7개 계층 전체 구조
┌─────────────────────────────────────────────────┐
│ 7. 응용 계층 (Application) │ ← 사용자와 직접 상호작용
├─────────────────────────────────────────────────┤
│ 6. 표현 계층 (Presentation) │ ← 데이터 형식 변환, 암호화
├─────────────────────────────────────────────────┤
│ 5. 세션 계층 (Session) │ ← 연결 관리
├─────────────────────────────────────────────────┤
│ 4. 전송 계층 (Transport) │ ← 프로세스 간 신뢰 전송
├─────────────────────────────────────────────────┤
│ 3. 네트워크 계층 (Network) │ ← 라우팅, IP 주소
├─────────────────────────────────────────────────┤
│ 2. 데이터 링크 계층 (Data Link) │ ← 프레이밍, MAC 주소
├─────────────────────────────────────────────────┤
│ 1. 물리 계층 (Physical) │ ← 비트 ↔ 전기/광 신호
└─────────────────────────────────────────────────┘외우는 팁: All People Seem To Need Data Processing (7→1) 또는 Please Do Not Throw Sausage Pizza Away (1→7).
각 계층의 역할
1계층 — 물리 계층 (Physical Layer)
0과 1로 이루어진 비트를 실제 전기 신호, 빛, 전파 등의 물리적 신호로 변환하여 전송합니다. 케이블의 종류, 핀 배치, 전압 레벨, 주파수 같은 것들이 이 계층에서 정의됩니다.
| 속성 | 물리 계층에서 정의 |
|---|---|
| 전송 매체 | UTP, 광섬유, 전파 |
| 신호 유형 | 전기, 빛, 전자파 |
| 데이터 속도 | 100Mbps, 1Gbps, 10Gbps |
| 커넥터 | RJ-45, SC, LC |
| 인코딩 | NRZ, Manchester, 4B/5B |
이 계층은 데이터가 무슨 의미인지는 전혀 관여하지 않고, 오직 비트를 매체에 실어 보내는 것만 담당합니다.
2계층 — 데이터 링크 계층 (Data Link Layer)
같은 네트워크 안에 있는 장치들 사이에서 데이터를 안정적으로 전달합니다. 비트들을 프레임(Frame)이라는 단위로 묶고, MAC 주소를 사용하여 로컬 네트워크 내의 목적지를 식별합니다.
이더넷 프레임 구조
┌──────────┬──────────┬──────┬─────────┬─────┐
│ 목적지MAC│ 출발지MAC│ 타입 │ 페이로드│ FCS │
│ 6바이트 │ 6바이트 │ 2B │ 46-1500 │ 4B │
└──────────┴──────────┴──────┴─────────┴─────┘오류 감지(CRC/FCS)도 이 계층에서 수행합니다. 프레임이 전송 도중 손상되었는지 수학적으로 검증합니다. 주요 장비는 스위치입니다.
3계층 — 네트워크 계층 (Network Layer)
서로 다른 네트워크 간의 통신을 담당합니다. IP 주소를 기반으로 목적지까지의 최적 경로를 결정하는 라우팅이 핵심 역할입니다. 데이터 단위는 패킷(Packet)입니다.
인터넷에서 데이터가 여러 라우터를 거쳐 목적지까지 도달할 수 있는 것은 이 계층 덕분입니다. 주요 장비는 라우터입니다.
4계층 — 전송 계층 (Transport Layer)
출발지와 목적지의 프로세스 간 통신을 관리합니다. 네트워크 계층이 어떤 컴퓨터로 보낼까를 결정한다면, 전송 계층은 그 컴퓨터의 어떤 프로그램에 전달할까를 결정합니다.
| 프로토콜 | 신뢰성 | 연결 | 순서 보장 | 용도 |
|---|---|---|---|---|
| TCP | O | 연결형 | O | 웹, 이메일, 파일 전송 |
| UDP | X | 비연결형 | X | 스트리밍, 게임, DNS |
포트 번호를 사용하여 프로세스를 식별합니다. HTTP=80, HTTPS=443, SSH=22.
5계층 — 세션 계층 (Session Layer)
통신 세션의 수립, 관리, 종료를 담당합니다. 두 시스템 간의 대화를 조율하는 역할입니다. 현대 인터넷에서는 이 계층이 독립적으로 구현되는 경우가 드물고, 대부분 애플리케이션 계층에 흡수되어 있습니다.
6계층 — 표현 계층 (Presentation Layer)
데이터의 형식 변환, 암호화, 압축을 담당합니다.
| 기능 | 예시 |
|---|---|
| 형식 변환 | ASCII ↔ EBCDIC, Unicode |
| 암호화 | SSL/TLS 암호화 |
| 압축 | gzip, Brotli |
| 직렬화 | JSON, XML, Protocol Buffers |
세션 계층과 마찬가지로 현대에는 애플리케이션 계층에 통합되는 경향이 있습니다.
7계층 — 응용 계층 (Application Layer)
사용자와 가장 가까운 계층으로, 실제 네트워크 서비스를 제공합니다. HTTP, FTP, SMTP, DNS 같은 프로토콜이 이 계층에서 동작합니다.
계층별 대표 프로토콜 정리
| 계층 | PDU | 대표 프로토콜 | 주요 장비 |
|---|---|---|---|
| 7. 응용 | 메시지 | HTTP, DNS, SMTP, SSH, FTP | - |
| 6. 표현 | 메시지 | TLS, JPEG, MPEG, ASCII | - |
| 5. 세션 | 메시지 | RPC, NetBIOS | - |
| 4. 전송 | 세그먼트/데이터그램 | TCP, UDP, QUIC | - |
| 3. 네트워크 | 패킷 | IP, ICMP, IGMP | 라우터 |
| 2. 데이터 링크 | 프레임 | 이더넷, Wi-Fi(802.11), ARP | 스위치 |
| 1. 물리 | 비트 | 이더넷(물리), USB, Bluetooth | 허브, 리피터 |
이더넷이 물리 계층과 데이터 링크 계층에 모두 등장합니다. 이것은 이더넷이 케이블 규격(물리)과 프레임 포맷(데이터 링크) 모두를 정의하기 때문입니다.
OSI 모델의 한계와 의의
한계
OSI 모델은 1984년에 발표되었지만, 당시에 이미 TCP/IP가 인터넷에서 널리 사용되고 있었습니다. OSI는 이론 먼저, 구현 나중 전략을 취했지만, 현실은 이미 TCP/IP라는 구현 먼저 전략이 승리한 상태였습니다.
5~6계층은 현대 네트워크에서 독립 계층으로 존재하지 않습니다. TLS는 응용과 전송 사이 어딘가에 있고, 세션 관리는 HTTP의 Cookie/Session이나 WebSocket이 직접 처리합니다.
의의
그럼에도 OSI 모델은 여전히 중요합니다.
- 공통 언어: L7 로드 밸런서, L3 스위치 같은 용어는 모두 OSI 계층 번호를 사용합니다.
- 문제 진단 프레임워크: 이 문제가 몇 계층에서 발생한 것인가?라는 사고 방식은 네트워크 트러블슈팅의 기본입니다.
- 학습 도구: 7개로 세분화되어 있어 각 기능의 역할을 명확히 이해할 수 있습니다.
실무에서 L7 레벨에서 트래픽을 분석한다고 하면, HTTP 헤더, URL, 쿠키 등을 기반으로 라우팅한다는 뜻입니다. L4 로드 밸런서는 IP와 포트 번호만 보고 트래픽을 분배합니다.
OSI_LAYERS = {
7: ("응용", ["HTTP", "DNS", "SMTP", "SSH"]),
6: ("표현", ["TLS", "JPEG", "gzip"]),
5: ("세션", ["RPC", "NetBIOS"]),
4: ("전송", ["TCP", "UDP", "QUIC"]),
3: ("네트워크", ["IP", "ICMP", "OSPF"]),
2: ("데이터 링크", ["Ethernet", "Wi-Fi", "ARP"]),
1: ("물리", ["UTP", "광섬유", "전파"]),
}
def which_layer(protocol):
"""프로토콜이 속하는 OSI 계층 찾기"""
for layer_num, (name, protocols) in OSI_LAYERS.items():
if protocol in protocols:
return f"{protocol} → L{layer_num} {name} 계층"
return f"{protocol} → 알 수 없음"
for p in ["HTTP", "TCP", "IP", "Ethernet", "DNS", "TLS"]:
print(which_layer(p))다음 절에서는 OSI 7계층이 현실에서 어떻게 단순화되어 사용되는지, TCP/IP 4계층 모델을 살펴봅니다.