OSI 7계층 모델
계층화의 필요성을 이해했으니, 이제 실제로 어떤 계층들이 존재하는지 살펴볼 차례입니다. 네트워크 계층을 설명할 때 가장 자주 쓰는 참조 모델이 OSI(Open Systems Interconnection) 7계층 모델입니다.
1984년 ISO(국제표준화기구)가 발표한 이 모델은, 통신 과정을 7개의 계층으로 나누어 각 계층의 역할을 명확히 정의합니다. 실무에서 직접 사용되는 모델은 아니지만, 네트워크를 이해하고 문제를 진단할 때 여전히 가장 널리 사용되는 참조 프레임워크입니다.
7개 계층 전체 구조
외우는 팁: 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 주소를 사용하여 로컬 네트워크 내의 목적지를 식별합니다.
오류 감지(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)
데이터의 형식 변환, 암호화, 압축을 담당하는 것으로 설명됩니다. 다만 현대 인터넷에서는 이 기능들이 TLS 라이브러리, HTTP, 애플리케이션 코드 안에 섞여 구현되는 경우가 많습니다.
| 기능 | 예시 |
|---|---|
| 형식 변환 | ASCII ↔ EBCDIC, Unicode |
| 암호화 | TLS가 제공하는 암호화 기능 |
| 압축 | gzip, Brotli |
| 직렬화 | JSON, XML, Protocol Buffers |
세션 계층과 마찬가지로 현대에는 애플리케이션 계층에 통합되는 경향이 있습니다.
7계층 — 응용 계층 (Application Layer)
사용자와 가장 가까운 계층으로, 실제 네트워크 서비스를 제공합니다. HTTP, FTP, SMTP, DNS 같은 프로토콜이 이 계층에서 동작합니다.
계층별 대표 예시 정리
| 계층 | PDU | 대표 예시 | 주요 장비 |
|---|---|---|---|
| 7. 응용 | 메시지 | HTTP, DNS, SMTP, SSH, FTP | - |
| 6. 표현 | 메시지 | 문자 인코딩, 압축, TLS의 표현 기능 | - |
| 5. 세션 | 메시지 | RPC 세션, NetBIOS 세션 | - |
| 4. 전송 | 세그먼트/데이터그램 | TCP, UDP, QUIC | - |
| 3. 네트워크 | 패킷 | IP, ICMP, IGMP | 라우터 |
| 2. 데이터 링크 | 프레임 | 이더넷 MAC, Wi-Fi MAC, PPP, VLAN | 스위치 |
| 1. 물리 | 비트 | UTP, 광섬유, 전파, PHY 규격 | 허브, 리피터 |
이더넷과 Wi-Fi는 물리 계층과 데이터 링크 계층에 모두 걸쳐 있습니다. 실제 표준은 매체와 신호 방식뿐 아니라 프레임 포맷과 MAC 동작도 함께 정의하기 때문입니다. ARP처럼 IP 주소와 MAC 주소 사이를 이어 주는 프로토콜은 L2/L3 경계에 놓인 기능으로 이해하면 좋습니다.
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: ("표현", ["JPEG", "gzip", "UTF-8"]),
5: ("세션", ["RPC", "NetBIOS"]),
4: ("전송", ["TCP", "UDP", "QUIC"]),
3: ("네트워크", ["IP", "ICMP", "OSPF"]),
2: ("데이터 링크", ["Ethernet", "Wi-Fi", "PPP"]),
1: ("물리", ["UTP", "광섬유", "전파"]),
}
BOUNDARY_CASES = {
"TLS": "표현/응용 계층 경계에서 설명되는 경우가 많음",
"ARP": "데이터 링크와 네트워크 계층 사이를 이어 주는 경계 기능",
}
def which_layer(protocol):
"""프로토콜이 속하는 OSI 계층 찾기"""
if protocol in BOUNDARY_CASES:
return f"{protocol} → {BOUNDARY_CASES[protocol]}"
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", "ARP"]:
print(which_layer(p))다음 절에서는 OSI 7계층이 현실에서 어떻게 단순화되어 사용되는지, TCP/IP 4계층 모델을 살펴봅니다.