icon

안동민 개발노트

2장 : 네트워크 모델과 계층 구조

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

이 계층은 데이터가 무슨 의미인지는 전혀 관여하지 않고, 오직 비트를 매체에 실어 보내는 것만 담당합니다.

같은 네트워크 안에 있는 장치들 사이에서 데이터를 안정적으로 전달합니다. 비트들을 프레임(Frame)이라는 단위로 묶고, MAC 주소를 사용하여 로컬 네트워크 내의 목적지를 식별합니다.

이더넷 프레임 구조
┌──────────┬──────────┬──────┬─────────┬─────┐
│ 목적지MAC│ 출발지MAC│ 타입 │ 페이로드│ FCS │
│ 6바이트  │ 6바이트  │  2B  │ 46-1500 │ 4B  │
└──────────┴──────────┴──────┴─────────┴─────┘

오류 감지(CRC/FCS)도 이 계층에서 수행합니다. 프레임이 전송 도중 손상되었는지 수학적으로 검증합니다. 주요 장비는 스위치입니다.

3계층 — 네트워크 계층 (Network Layer)

서로 다른 네트워크 간의 통신을 담당합니다. IP 주소를 기반으로 목적지까지의 최적 경로를 결정하는 라우팅이 핵심 역할입니다. 데이터 단위는 패킷(Packet)입니다.

인터넷에서 데이터가 여러 라우터를 거쳐 목적지까지 도달할 수 있는 것은 이 계층 덕분입니다. 주요 장비는 라우터입니다.

4계층 — 전송 계층 (Transport Layer)

출발지와 목적지의 프로세스 간 통신을 관리합니다. 네트워크 계층이 어떤 컴퓨터로 보낼까를 결정한다면, 전송 계층은 그 컴퓨터의 어떤 프로그램에 전달할까를 결정합니다.

프로토콜신뢰성연결순서 보장용도
TCPO연결형O웹, 이메일, 파일 전송
UDPX비연결형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_quiz.py
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계층 모델을 살펴봅니다.

목차