GitHub ↗
CHAPTER 02 OF 10
🏗️

OSI 7-Layer Model

네트워크를 쌓아올린 7개의 층

OSI 7계층은 복잡한 네트워크 통신을 역할별로 나눈 설계도로, 각 계층이 독립적으로 작동하여 전체 시스템을 유연하게 만듭니다.

OSI 7-Layer Model cheatsheet
🍌 NANO BANANA CHEATSHEET · CH 02

Overview

개관

복잡한 건물을 기초 공사, 골조, 배관, 전기, 인테리어 순서로 나눠 짓듯이, 네트워크 통신도 역할별 계층으로 나뉩니다. OSI(Open Systems Interconnection) 모델은 이 계층 구조를 7단계로 정의한 국제 표준입니다.

계층 구조의 핵심 장점은 '독립성'입니다. Wi-Fi를 LTE로 바꿔도 HTTP 코드는 수정할 필요가 없습니다. 물리 계층(Wi-Fi↔LTE)만 바뀌고 상위 계층(HTTP)은 그대로 동작합니다. 레고 블록처럼 각 층을 독립적으로 교체할 수 있습니다.

실무에서 OSI 7계층을 항상 완벽히 외울 필요는 없지만, 문제가 생겼을 때 '어느 계층의 문제인가'를 파악하면 디버깅 속도가 극적으로 빨라집니다.

🎯 Learning Goals
  • OSI 7계층을 순서대로 나열하고 각 역할을 설명할 수 있다
  • HTTP, TCP, IP, 이더넷이 각각 어느 계층에 속하는지 알 수 있다
  • 데이터가 계층을 내려가며 헤더가 추가되는 캡슐화 과정을 이해한다
  • 왜 계층 구조가 소프트웨어 개발에 유리한지 설명할 수 있다

Sections

본문

7계층을 한눈에: 물리층부터 응용층까지

1층(물리): 전기 신호, 빛, 전파로 0과 1을 전달합니다. 이더넷 케이블, Wi-Fi 안테나, 광섬유가 여기에 속합니다.

2층(데이터 링크): 같은 네트워크 내 기기 간 통신을 담당합니다. MAC 주소로 기기를 구분합니다. 이더넷, Wi-Fi 프로토콜이 여기 있습니다.

3층(네트워크): 서로 다른 네트워크 간 경로를 찾습니다. IP 주소와 라우터가 이 층의 주인공입니다. 4층(전송): 종단 간 신뢰성 있는 데이터 전달을 담당합니다. TCP와 UDP가 여기 있습니다. 5~6층(세션·표현): 암호화, 데이터 형식 변환을 담당합니다. 7층(응용): 사용자와 직접 맞닿는 계층. HTTP, WebSocket, RTSP, FTP가 모두 여기 있습니다.

캡슐화: 계층을 내려가며 봉투를 겹겹이 싸는 과정

데이터를 보낼 때 7층(응용)에서 1층(물리)으로 내려가면서 각 계층이 자신의 헤더를 추가합니다. 이를 캡슐화(Encapsulation)라고 합니다.

예를 들어 HTTP GET 요청을 보낼 때, 7층에서 HTTP 헤더 추가 → 4층에서 TCP 헤더 추가 → 3층에서 IP 헤더 추가 → 2층에서 이더넷 헤더 추가 → 1층에서 전기 신호로 전송됩니다.

수신 측에서는 반대 순서로 헤더를 하나씩 벗겨내는 역캡슐화(Decapsulation)가 일어납니다. 택배 상자를 열면 내부 포장지, 그 안에 또 포장지, 최종적으로 상품이 나오는 것과 같습니다.

실무에서 OSI 계층이 중요한 이유

문제가 생겼을 때 계층별로 진단할 수 있습니다. 핑(ping)이 안 된다면 3층(IP) 이하 문제입니다. 핑은 되지만 HTTP가 안 된다면 7층(응용) 문제입니다. 이 구분만 알아도 디버깅 시간이 절반으로 줄어듭니다.

이 코스에서 배우는 기술들의 위치입니다: REST/HTTP/WebSocket/RTSP/WebRTC = 7층(응용), TCP/UDP = 4층(전송), IP = 3층(네트워크), Wi-Fi/이더넷 = 2층(데이터 링크), 물리 신호 = 1층(물리).

실무에서는 OSI보다 TCP/IP 4계층 모델(응용/전송/인터넷/네트워크 접근)을 더 자주 씁니다. OSI는 교육용 개념 모델, TCP/IP는 실제 인터넷의 구현 모델이라고 이해하면 됩니다.

💡 Analogy · 비유
국제 택배 회사의 처리 과정

국제 택배를 보낼 때를 생각해보세요. 상품(데이터)을 내부 포장재로 감싸고(응용 계층), 송장을 붙이고(전송/네트워크 계층), 외부 박스에 담고(데이터 링크 계층), 트럭에 실어 물리적으로 이동합니다(물리 계층).

각 단계는 독립적입니다. 물류 회사가 트럭에서 비행기로 운송 수단을 바꾸더라도(물리 계층 변경), 박스 안 송장이나 상품은 그대로입니다(상위 계층 불변). 이것이 계층 구조의 힘입니다.

수신 측에서는 역순으로 포장을 풉니다. 외부 박스 제거 → 송장 확인 → 내부 포장재 제거 → 상품 수령. 네트워크의 역캡슐화와 완전히 같은 구조입니다.

캡슐화·역캡슐화 과정을 Python 딕셔너리로 시뮬레이션합니다. 실제 소켓 라이브러리는 이 과정을 자동으로 처리하지만, 안에서 무슨 일이 일어나는지 직접 눈으로 확인해봅니다.

python
import json

def encapsulate(app_data: str, src_ip: str, dst_ip: str,
                src_port: int, dst_port: int) -> dict:
    """응용 계층 데이터를 캡슐화하는 과정 시뮬레이션."""

    # 7층: 응용 계층 (HTTP)
    layer7 = {"method": "GET", "path": "/", "body": app_data}

    # 4층: 전송 계층 (TCP 헤더 추가)
    layer4 = {
        "tcp_header": {"src_port": src_port, "dst_port": dst_port,
                       "seq": 1000, "ack": 0, "flags": "SYN"},
        "data": layer7
    }

    # 3층: 네트워크 계층 (IP 헤더 추가)
    layer3 = {
        "ip_header": {"src_ip": src_ip, "dst_ip": dst_ip, "ttl": 64},
        "data": layer4
    }

    # 2층: 데이터 링크 계층 (이더넷 헤더 추가)
    layer2 = {
        "eth_header": {"src_mac": "AA:BB:CC:DD:EE:FF",
                       "dst_mac": "11:22:33:44:55:66"},
        "data": layer3
    }
    return layer2  # 1층(물리)으로 전기 신호 전송

def decapsulate(frame: dict) -> str:
    """수신 측에서 헤더를 벗겨내는 과정."""
    layer3 = frame["data"]           # 이더넷 헤더 제거
    layer4 = layer3["data"]          # IP 헤더 제거
    layer7 = layer4["data"]          # TCP 헤더 제거
    return layer7["body"]            # 최종 응용 데이터 반환

# ── 실행 ──────────────────────────────────────────────────
frame = encapsulate(
    app_data="Hello, World!",
    src_ip="192.168.1.5", dst_ip="93.184.216.34",
    src_port=54321,        dst_port=80
)
print("캡슐화 결과 (전송 직전 프레임):")
print(json.dumps(frame, indent=2, ensure_ascii=False))

received = decapsulate(frame)
print(f"\n역캡슐화 후 수신 데이터: {received}")

encapsulate 함수는 7→4→3→2층 순서로 각 계층의 헤더를 추가합니다. decapsulate는 반대 순서로 헤더를 벗겨냅니다. 실제 운영체제의 TCP/IP 스택이 정확히 이 과정을 수행하며, 우리가 쓰는 requests, socket 라이브러리가 이 복잡한 과정을 한 줄 코드로 추상화해줍니다.

🏭 현업에서의 평가
OSI 모델은 네트워크 엔지니어링·백엔드 면접의 기본 소양 확인 질문에 자주 등장합니다. '어느 계층에서 문제가 발생했는가'를 빠르게 판단하는 능력이 실무에서 매우 중요합니다.

✅ 시니어가 보는 것

  • TCP/UDP가 4계층, HTTP/WebSocket이 7계층에 있다는 것을 즉시 대답
  • 계층화의 이점: 독립성, 교체 용이성을 구체적 예시로 설명
  • 캡슐화/역캡슐화 개념 이해

⚠️ 레드 플래그

  • OSI를 외우기만 하고 '왜 계층으로 나누는가'를 설명하지 못함
  • TCP와 HTTP가 같은 계층이라고 생각하는 경우

🎤 예상 인터뷰 질문

  1. HTTP는 OSI 몇 계층인가요? TCP는요? 그 차이가 무엇을 의미하나요?
  2. Wi-Fi를 LTE로 바꿔도 HTTP 코드가 동작하는 이유를 OSI 계층으로 설명해보세요.
숙달 vs 익숙함: 숙달: 특정 문제를 보고 즉시 '이건 3층 문제, 이건 7층 문제'라고 진단 가능. 익숙함: 계층을 나열할 수 있지만 실제 트러블슈팅에 활용하지 못함.

Key Takeaways

핵심 정리

계층화의 이유

복잡한 통신을 역할별로 나눠 각 계층이 독립적으로 작동 → 유지보수 용이

7계층 위치

HTTP/WebSocket/RTSP = 7층(응용), TCP/UDP = 4층(전송), IP = 3층(네트워크)

캡슐화

데이터가 7층→1층으로 내려가며 각 계층이 헤더를 추가하는 과정

역캡슐화

수신 측에서 1층→7층으로 올라가며 헤더를 하나씩 제거하는 과정

독립성의 힘

Wi-Fi→LTE 변경해도 HTTP 코드 수정 불필요 (물리층만 변경, 응용층 불변)

TCP/IP 4계층

실무에서는 OSI 7층보다 TCP/IP 4층 모델(응용/전송/인터넷/네트워크 접근)을 더 자주 사용