3편: OSI 7계층을 실제 데이터 흐름으로 전체 연결하기

2026. 6. 24. 18:39Computer Science/네트워크

브라우저에 claude.ai를 입력하는 순간

브라우저 주소창에 claude.ai를 입력하고 엔터를 누른다.

이 순간부터 "안녕하세요"라는 데이터는 계층을 내려가면서 하나씩 포장되고, 네트워크를 건너고, 반대로 하나씩 벗겨진다.

 

내 컴퓨터에서 데이터가 계층 별 프로토콜에 맞게 포장되는 전체적인 흐름은 아래와 같다 

요청 데이터: 안녕하세요
       ↓ L7에서 "HTTP"로 포장 "요청/응답을 이 형식으로 담아라"
메시지: [HTTP 헤더 | 안녕하세요]
       ↓ L4에서 "TCP"로 포장 "PORT, 순서번호를 이 형식으로 담아라"
세그먼트: [TCP 헤더 | HTTP 헤더 | 안녕하세요]
       ↓ L3에서 "IP"로 포장 "출발/목적지 IP를 이 형식으로 담아라"
패킷: [IP 헤더 | TCP 헤더 | HTTP 헤더 | 안녕하세요]
       ↓ L2에서 "Ethernet"으로 포장 "출발/목적지 MAC을 이 형식으로 담아라"(논리적 약속)
프레임: [MAC 헤더 | IP 헤더 | TCP 헤더 | HTTP 헤더 | 안녕하세요]
       ↓ L1에서 물리규격으로 신호 변환 "그 데이터를 전기신호로 이렇게 표현해라"
비트:      010101010...

 

 

각 계층을 지날 때마다 프로토콜에 맞게 헤더가 하나씩 추가되고, 데이터 단위의 이름도 바뀐다. (실무에서는 통틀어 패킷이라 부름) 

 

이제 각 단계에서 어떤 프로토콜이, 어떤 약속으로, 무엇을 만드는지 따라가보자.


내 컴퓨터에서 요청 데이터를 보낼 때: L7 → L1

L7 — HTTP 프로토콜로 메시지 생성

  • 목적: 서버에게 "이 데이터 주세요"를 요청하는 형식 정의
  • 누가: 브라우저 (애플리케이션)
  • 프로토콜:  HTTP (HyperText Transfer Protocol)
  • 만드는 것: 메시지 (Message)

브라우저가 HTTP 약속대로 요청 메시지를 만든다.

[HTTP 메시지]

GET /chat HTTP/1.1        ← 메서드, 경로, 버전
Host: claude.ai           ← 어느 서버인지
Content-Type: text/plain  ← 데이터 형식

안녕하세요                ← 실제 데이터

 

브라우저의 역할은 여기까지다.

"이 메시지를 claude.ai로 보내줘"라고 운영체제에 부탁하고 끝이다.

 

L6, L5 — 암호화, 세션 관리

  • 목적: 데이터를 암호화하고, 연결 상태를 관리
  • 누가: 브라우저 / 라이브러리
  • 프로토콜:  TLS (HTTPS의 암호화 담당) - "보내기 전에 이 방식으로 암호화하자"

HTTPS라면 HTTP 메시지가 여기서 암호화된다. (평문 → 암호문으로 변환)

브라우저나 라이브러리가 자동으로 처리해주기 때문에 개발자가 직접 신경 쓸 일은 거의 없다.

 

L4 — TCP 프로토콜로 세그먼트 생성

  • 목적: 데이터를 신뢰성 있게 전달하고, 기기 내 어느 프로그램으로 보낼지 구분
  • 누가: 운영체제 (소프트웨어)
  • 프로토콜: TCP (Transmission Control Protocol)
  • 만드는 것: 세그먼트 (Segment)

운영체제가 HTTP 메시지에 TCP 헤더를 붙인다.

[세그먼트]
┌──────────────────────────┐
│ 출발 PORT: 52341          │
│ 목적 PORT: 443            │  ← TCP 헤더
│ 순서 번호: 1               │
├──────────────────────────┤
│ HTTP 메시지                │  ← 데이터
└──────────────────────────┘


PORT가 붙어 목적지 서버에 도착했을 때 "어느 프로그램으로 줄지" 알 수 있게 되었고, 

순서 번호가 붙어 패킷이 뒤섞여 도착해도 올바른 순서로 조립할 수 있다.

 

L3 — IP 프로토콜로 패킷 생성

  • 목적: 다른 네트워크에 있는 목적지까지 경로 탐색
  • 누가: 운영체제 (소프트웨어)
  • 프로토콜: IP (Internet Protocol)
  • 만드는 것: 패킷 (Packet)

운영체제가 세그먼트에 IP 헤더를 붙인다.

[패킷]
┌──────────────────────────┐
│ 출발 IP: 123.45.67.89     │
│ 목적 IP: 142.250.74.206   │  ← IP 헤더
│ TTL: 64                  │
├──────────────────────────┤
│ 세그먼트 (TCP + HTTP)      │  ← 데이터
└──────────────────────────┘

 

 

목적지 IP가 붙었다. 이제 전 세계 어디로 가야 하는지 알 수 있다. 이 IP 헤더는 네트워크를 건너는 내내 변하지 않는다.

L2 — Ethernet 프로토콜로 프레임 생성

  • 목적: 같은 네트워크 안에서 바로 다음 장비를 찾아가기
  • 누가: 네트워크 카드 + 드라이버 (하드웨어 + 소프트웨어)
  • 프로토콜:  Ethernet
  • 만드는 것: 프레임 (Frame)

네트워크 카드가 패킷에 MAC 헤더를 붙인다.

[프레임]
┌──────────────────────────┐
│ 출발 MAC: DD:EE:FF:...    │
│ 목적 MAC: AA:BB:CC:...    │  ← MAC 헤더 (공유기 MAC)
├──────────────────────────┤
│ 패킷 (IP + TCP + HTTP)    │  ← 데이터
└──────────────────────────┘

 

여기서 중요한 점이 있다. 목적지 MAC은 최종 목적지(클로드 서버)가 아니라 바로 다음 장비(공유기)의 MAC이다.

MAC은 같은 네트워크 안에서만 쓰이기 때문에, 라우터를 거칠 때마다 새로 교체된다.

L1 — 신호로 변환, 전송

  • 목적: 0과 1을 물리적인 신호로 변환해서 전송
  • 누가: 네트워크 카드 (하드웨어)
  • 프로토콜: Ethernet 물리 규격, 와이파이(802.11) 등 
  • 만드는 것: 비트 (Bit)

네트워크 카드가 프레임을 0과 1로 변환하고, 물리적인 신호로 바꿔서 전송한다.

[프레임] → 01001000 01101100 ... → ~~~전기/전파 신호~~~

 

이 순간부터 데이터는 내 컴퓨터를 떠난다.


네트워크를 건너는 동안 라우터에서 동작 

신호가 라우터에 도착하면 라우터는 이렇게 동작한다.

L1: 신호를 받아서 비트로 변환
L2: MAC 헤더 확인 → "내 MAC 맞네, 벗긴다"
L3: IP 헤더 확인 → "목적지가 어디지? 저쪽으로 보내자" (라우팅 테이블 참고)
L2: 새 MAC 헤더 붙이기 → 다음 라우터 MAC으로 교체
L1: 다시 신호로 변환해서 전송

 

 

라우터는 L3까지만 열어본다. TCP도, HTTP도 절대 보지 않는다. IP만 확인하고 다음 경로로 넘긴다.

 

네트워크를 건너는 내내

  • IP 헤더   →  변하지 않음 (목적지는 항상 같으니까)
  • MAC 헤더  →  라우터를 거칠 때마다 교체 (다음 장비 MAC으로)

서버에서 요청 데이터를 받을 때: L1 → L7

서버에 도착하면 이번엔 반대 방향으로 헤더를 하나씩 벗긴다.

L1: 신호 수신 → 비트로 변환 → 프레임 복원
L2: MAC 헤더 확인 → "내 MAC 맞네" → MAC 헤더 벗기기 → 패킷
L3: IP 헤더 확인  → "내 IP 맞네"  → IP 헤더 벗기기  → 세그먼트
L4: TCP 헤더 확인 → PORT 443 확인, 순서 번호 검증
                  → TCP 헤더 벗기기 → HTTP 메시지
L6: 복호화 → 암호문을 평문으로
L7: HTTP 메시지 해석 → "GET /chat, 안녕하세요 받았다!"

 

서버가 응답을 만들면 이번엔 반대로 L7→L1 방향으로 다시 포장해서 내 컴퓨터로 보낸다.


핵심 정리

① 각 계층마다 프로토콜이 있고, 그 약속대로 헤더를 만든다

L7  HTTP      →  요청/응답 형식 약속
L4  TCP       →  PORT, 순서, 신뢰성 약속
L3  IP        →  주소, 경로 탐색 약속
L2  Ethernet  →  같은 망 안 기기 식별 약속
L1  물리 규격   →  신호 변환 약속

 

② 각 장비는 자기 담당 계층만 열어본다

라우터  →  L3(IP)까지만
스위치  →  L2(MAC)까지만
서버    →  L7까지 전부

 

③ IP는 유지되고, MAC은 교체된다

IP 헤더   →  출발지부터 목적지까지 변하지 않음
MAC 헤더  →  라우터를 거칠 때마다 다음 장비 MAC으로 교체

 

 

OSI 7계층은 외울 대상이 아니다.

각 계층마다 "어떤 문제를 해결하려고, 어떤 프로토콜로, 무엇을 만드는가"를 이해하면 자연히 따라온다.

 

그리고 이 계층 구조 덕분에 브라우저가 바뀌어도 라우터는 신경 안 써도 되고, 라우터가 바뀌어도 브라우저는 신경 안 써도 된다.

각자 자기 약속만 지키면 되기 때문이다.

 

이것이 OSI 7계층을 배우는 진짜 이유이다.