[CS/네트워크] OSI 7계층으로 풀어보는 데이터의 대여정

선우·2025년 12월 22일

CS

목록 보기
7/20

[CS/네트워크] 07. 데이터의 대여정: 클라이언트에서 서버까지

⚡ 한 줄 요약: 클라이언트의 요청이 계층별 캡슐화를 거쳐 스위치와 라우터라는 관문을 통과해 서버에 도달하는 전체 메커니즘을 파헤칩니다.

1. 👋 들어가며: "주소창에 URL을 치면 어떤 일이 일어나나요?"

네트워크 면접에서 가장 고전적이면서도 지원자의 밑천이 가장 잘 드러나는 질문입니다.

단순히 "서버에 접속합니다"라고 대답하는 것과, 데이터가 각 계층에서 어떻게 포장되고 어떤 장비를 거치는지 논리적으로 설명하는 것은 천지 차이입니다.

  • 🧐 Why:

    • 데이터가 물리적으로 전달되는 과정을 모르면, 네트워크 병목 현상이나 통신 오류 발생 시 원인 파악이 불가능합니다.
  • 🎯 Goal:

    • 캡슐화 과정부터 스위치(L2)와 라우터(L3)의 동작 차이, 그리고 NAT의 필요성을 완벽히 이해하는 것을 목표로 합니다.

📂 2. 네트워크 전체 흐름

📌 2-1. 데이터의 변신: 계층별 데이터 명칭과 캡슐화

데이터가 클라이언트에서 생성되어 물리 계층으로 내려가는 과정은 마치 택배를 포장하는 과정과 같습니다.
각 계층을 지날 때마다 데이터 앞에 새로운 정보가 담긴 헤더(Header)가 붙으며
데이터의 이름(PDU, Protocol Data Unit)도 달라집니다.

  • 전송 계층:

    • 응용 계층에서 전달된 데이터에 포트 번호 등을 포함한 헤더가 붙습니다.
    • 이 단위의 데이터를 세그먼트라고 부릅니다.
  • 네트워크 계층:

    • 세그먼트 앞에 IP 주소 정보가 담긴 헤더가 추가됩니다.
    • 이때부터는 IP 패킷이라는 명칭을 사용합니다.
  • 데이터 링크 계층:

    • IP 패킷에 MAC 주소 헤더와 오류 감지를 위한 트레일러가 붙습니다.
    • 이 최종 포장 단계를 이더넷 프레임이라고 합니다.

💻 참고

브라우저 개발자 도구의 Network 탭에서 보는 데이터는 응용 계층의 '메시지' 형태이지만,
실제로 전송될 때는 이렇게 복잡한 포장 과정을 거칩니다.

특히 TCP 연결 오버헤드나 패킷 유실 문제를 분석할 때 이러한 하위 계층의 데이터 단위(PDU) 개념을 알고 있으면 네트워크 병목 현상을 더 깊이 이해할 수 있습니다.

📌 2-2. 보이지 않는 여정: 서버까지는 '직통'이 아니다

클라이언트에서 물리 계층을 통해 변환된 전기 신호는 서버로 곧장 연결된 고속도로를 타는 것이 아닙니다.

  • 물리적 전송:

    • 데이터는 전기, 무선, 또는 광신호로 변환되어 네트워크로 나갑니다.
  • 여러 경로를 거치는 과정:

    • 실제로는 클라이언트와 서버 사이에 수많은 라우터와 스위치가 존재하며,
      데이터는 이 장치들을 거쳐 최적의 경로를 찾아 목적지에 도착하게 됩니다.

💡 비유로 이해하기

우리가 친구에게 편지를 보낼 때, 내 손을 떠난 편지가 친구의 우체통으로 순간 이동하는 것이 아닙니다.
우체국, 물류 센터, 배달 트럭이라는 '라우터'들을 거쳐야 비로소 친구에게 전달되는 것과 같은 원리입니다.

📌 2-3. 클라이언트의 '송장' 작성: 4가지 핵심 정보

데이터가 포장(캡슐화)될 때, 클라이언트는 패킷이 길을 잃지 않도록 가장 중요한 4가지 정보를 헤더에 기입합니다.
이 정보들은 우리가 흔히 말하는 L3(네트워크 계층)와 L2(데이터 링크 계층)에서 각각 작성됩니다.

  • 네트워크 계층(L3) - "거시적 주소"

    • 출발지 IP:
      • 내 컴퓨터의 주소입니다.
    • 목적지 IP:
      • 최종 목적지인 서버의 주소입니다. 보통 DNS를 통해 알아낸 값을 적습니다.
  • 데이터 링크 계층(L2) - "미시적 주소"

    • 출발지 MAC:
      • 내 랜카드의 고유 주소입니다.
    • 목적지 MAC:
      • 주의할 점은 서버의 MAC 주소가 아니라, 내 LAN에서 외부로 나가는 문인 라우터(기본 게이트웨이)의 MAC 주소를 적는다는 것입니다.
      • 이는 ARP 프로토콜을 통해 알아냅니다.

📌 2-4. 첫 번째 관문: 스위치 A의 단순하지만 명확한 원칙

클라이언트를 떠난 전기 신호가 가장 먼저 도착하는 곳은 스위치 A입니다.
스위치는 데이터 링크 계층(L2)에서 동작하는 장비로, 네트워크 내의 원활한 흐름을 돕는 '교통 정리원' 역할을 수행합니다.

  • 물리 계층(L1): "신호를 데이터로"

    • 신호 변환:
      • 물리 계층에서 수신된 전기 신호를 디지털 데이터(0과 1의 비트)로 변환하여
        상위 계층인 데이터 링크 계층으로 전달합니다.
  • 데이터 링크 계층(L2): "읽고, 판단하고, 전달하라"

    • 목적지 확인:
      • 스위치는 전달받은 이더넷 프레임을 읽고, 오직 목적지 MAC 주소만 확인합니다.
    • 경로 결정:
      • 자신의 MAC 주소 테이블을 조회하여 해당 주소의 장비가 연결된 포트로 데이터를 전달합니다.
    • 전파:
      • 만약 테이블에 목적지 MAC 주소가 없다면, 연결된 모든 포트로 데이터를 뿌리는 브로드캐스트를 수행한 뒤 주소를 학습합니다.

💻 참고

스위치는 단순히 데이터를 전달하는 장치이므로, 데이터의 어떤 값에도 전혀 손대지 않는다는 점이 핵심입니다.
이더넷 프레임의 구조를 해체하거나 다시 만드는 '재포장' 과정 없이 그대로 토스합니다.
이 점이 '패킷을 수정할 수 있는 라우터'와 명확히 구분되는 기술적 포인트입니다.

📌 2-5. LAN의 경계: 라우터 A의 '신분 세탁'과 재포장

스위치를 통과한 전기 신호는 이제 네트워크 계층(L3) 장비인 라우터 A에 도착합니다.
라우터는 단순히 데이터를 전달하는 것을 넘어, 패킷의 정보를 읽고 목적지에 맞게 데이터를 수정(NAT)하는 능동적인 역할을 수행합니다.

  • 계층별 처리 과정: 역캡슐화와 판단

    1. 물리 계층(L1):

      • 스위치 A에서 온 전기 신호를 디지털 데이터로 변환합니다.
    2. 데이터 링크 계층(L2):

      • 이더넷 프레임의 목적지 MAC 주소가 자신의 MAC 주소와 일치하는지 확인합니다.
    3. 네트워크 계층(L3):

      • 이더넷 헤더를 제거하고 IP 패킷을 추출합니다.
      • 여기서 라우터는 목적지 IP 주소를 확인하여 이 패킷을 다음 라우터(B)로 보낼지 결정합니다.
  • 핵심 기술: NAT(Network Access Translation)
    라우터 A에서 일어나는 가장 핵심적인 일은 출발지 IP 주소를 변경하는 것입니다.

    • 작동 원리:
      • 클라이언트의 사설 IP 주소를 라우터 A가 가진 공인 IP 주소로 바꿔치기합니다.
    • 이유:
      • 사설 IP는 내부망에서만 유효하므로, 인터넷 세상(WAN)에서 통신하기 위해서는 유일한 식별자인 공인 IP가 필요하기 때문입니다.
  • 새로운 포장: 데이터 링크 계층의 재포장
    패킷을 라우터 B로 보내기 위해, 라우터 A는 새로운 L2 헤더를 입힙니다.

  • 출발지 MAC: 라우터 A의 MAC 주소로 설정합니다.

  • 목적지 MAC: 다음 목적지인 라우터 B의 MAC 주소를 기입합니다. (ARP로 확인)

  • 물리 계층 전송: 다시 전기 신호로 변환하여 라우터 B로 쏴줍니다.

📌 2-6. 목적지 네트워크의 관문: 라우터 B의 역할

외부 네트워크에서 날아온 패킷을 받은 라우터 B는 자신이 관리하는 내부 네트워크(사설망)에 해당 서버가 있는지 확인하고 길을 안내합니다.

  • 라우터 B에서의 계층별 처리 과정:

    1. 물리 계층(L1):

      • 라우터 A(혹은 중간 라우터)로부터 온 전기 신호를 디지털 데이터로 변환합니다.
    2. 데이터 링크 계층(L2):

      • 이더넷 프레임의 목적지 MAC 주소가 자신의 것인지 확인하여 패킷을 수용합니다.
    3. 네트워크 계층(L3):

      • 이더넷 헤더를 벗겨내고 IP 패킷을 추출합니다.
      • NAT 주소 변환:
        • 라우터 A와 반대로, 외부에서 들어온 패킷의 주소 정보를 내부 네트워크에 맞게 처리합니다.
      • 라우팅 결정:
        • 목적지 IP 주소가 자신의 내부 네트워크에 속해 있음을 확인하고, 서버와 연결된 스위치 B로 패킷을 보내기로 결정합니다.
    4. 데이터 링크 계층(L2) 재캡슐화:

      • 패킷을 서버로 전달하기 위해 새로운 헤더를 붙입니다.
      • 출발지 MAC: 라우터 B의 MAC 주소로 설정합니다.
      • 목적지 MAC: 최종 목적지인 서버의 MAC 주소를 기입합니다.
        (이때도 ARP를 사용하여 주소를 알아냅니다.)
    5. 물리 계층(L1):

      • 다시 전기 신호로 변환하여 스위치 B를 향해 전송합니다.

📌 2-7. 서버 바로 앞의 안내자: 스위치 B의 역할

라우터 B를 통과한 데이터는 서버가 연결된 최종 장비인 스위치 B에 도달합니다.
스위치는 데이터 링크 계층 장비로서, 목적지 서버의 정확한 포트를 찾아 데이터를 밀어주는 역할을 수행합니다.

  • 스위치 B의 계층별 처리 과정:

    1. 물리 계층(L1):

      • 라우터 B로부터 전달된 전기 신호를 수신합니다.
      • 수신된 신호를 디지털 데이터(0과 1의 비트)로 변환하여 데이터 링크 계층으로 올립니다.
    2. 데이터 링크 계층(L2):

      • 전달받은 이더넷 프레임을 읽고 목적지 MAC 주소를 확인합니다.
      • 자신이 관리하는 MAC 주소 테이블을 조회하여 해당 주소를 가진 장비(서버)가 어느 포트에 연결되어 있는지 확인합니다.
      • 목적지 MAC 주소가 서버의 주소와 일치하면, 해당 서버가 연결된 포트로 데이터를 전달합니다.
      • 만약 테이블에 해당 주소가 없다면, 연결된 모든 포트로 데이터를 뿌리는 브로드캐스트를 수행하여 서버를 찾습니다.
    3. 물리 계층(L1):

      • 목적지 포트가 결정되면 데이터를 다시 전기 신호로 변환합니다.
      • 변환된 신호를 서버에 연결된 포트를 통해 최종적으로 전송합니다.

📌 2-8. 서버의 데이터 수신과 응답 준비

서버는 스위치 B로부터 전달받은 전기 신호를 물리 계층부터 시작해 역순으로 끌어올리며(역캡슐화) 응용 계층의 데이터를 확인합니다. 이후 클라이언트의 요청에 맞는 응답 데이터를 생성하고, 이를 다시 보낼 준비를 합니다.

  • 응답 데이터의 헤더 설정 (캡슐화 시작)
    서버는 다시 캡슐화 과정을 거치며 응답 패킷의 송장을 작성합니다. 이때 설정되는 정보는 다음과 같습니다.

    • 목적지 MAC 주소:

      • 현재 서버가 속한 LAN에서 외부(WAN)와 연결되는 관문인 라우터 B의 MAC 주소를 목적지로 설정합니다.
      • 이 주소는 ARP를 통해 알아냅니다.
    • 출발지 MAC 주소:

      • 서버 본인의 MAC 주소로 설정합니다.
    • 출발지 IP 주소:

      • 서버 본인의 IP 주소로 설정합니다.
    • 목적지 IP 주소:

      • 서버가 받은 요청 패킷의 '출발지 IP 주소'를 그대로 가져와 목적지로 설정합니다.

📌 2-9. 헷갈리기 쉬운 포인트 / 오해 정리

  • 전기 신호는 서버에 직접 꽂힌다?

    • 오해입니다. 물리 계층에서 신호가 생성되면 마치 광속으로 서버에게 닿을 것 같지만, 중간 경로(Hop)를 하나씩 거칠 때마다 지연(Latency)이 발생하며 경로가 유실될 수도 있습니다.
  • 목적지 MAC 주소는 서버의 MAC 주소를 적으면 된다?

    • 오해입니다. 클라이언트가 처음 패킷을 보낼 때 적는 목적지 MAC 주소는 서버가 아니라, 내 LAN 안에서 데이터를 받아올 첫 번째 라우터(기본 게이트웨이)의 주소입니다.
    • 서버의 MAC 주소는 패킷이 수많은 라우터를 거쳐 서버가 속한 마지막 네트워크에 도착했을 때 비로소 사용됩니다.
  • 라우터는 데이터를 절대 건드리지 않는다?

    • 오해입니다. 스위치는 데이터를 수정하지 않지만, 라우터는 네트워크 계층에서 IP 헤더 정보를 NAT로 수정하고 이더넷 프레임 헤더를 직접 새로 만듭니다.

🎁 3. 정리

🔑 요약

이번 포스팅에서 다룬 데이터의 여정을 6단계로 압축하면 다음과 같습니다.

  1. 클라이언트 (캡슐화):

    • 데이터를 세그먼트(L4) → 패킷(L3) → 프레임(L2)으로 포장하고, 목적지 IP와 게이트웨이의 MAC 주소를 설정합니다.
  2. 스위치 A (전달):

    • 데이터를 변조하지 않고 오직 MAC 주소 테이블을 확인하여 라우터로 신호를 보냅니다.
  3. 라우터 A (경로 선택 & NAT):

    • 이더넷 헤더를 교체하고, NAT를 통해 사설 IP를 공인 IP로 변환하여 외부망으로 보냅니다.
  4. 라우터 B (수신):

    • 외부에서 들어온 패킷을 받아 내부 네트워크의 서버를 찾고, 목적지 MAC 주소를 서버의 주소로 재포장합니다.
  5. 스위치 B (최종 배달):

    • 서버가 연결된 정확한 포트로 데이터를 밀어줍니다.
  6. 서버 (수신 및 응답):

    • 역캡슐화를 통해 요청을 처리하고, 다시 역순으로 응답 패킷을 만들어 여정을 시작합니다.

0개의 댓글