[네트워크] 데이터 통신 과정

2025. 10. 5. 15:12·CS/네트워크

통신의 기본 요소 : IP, MAC, 포트

데이터 통신을 이해하기 위해서는 먼저 통신에 사용되는 3가지 핵심 주소 체계를 알아야 한다. 

  • IP 주소 (Internet Protocol Address)
    인터넷에 연결된 장치를 식별하는 논리적인 주소이다. 네트워크 환경에 따라 변경될 수 있으며, 전체 인터넷을 통해 최종 목적지를 찾아가는 데 사용된다. 이사 가면 바뀔 수 있는 '집 주소'와 같다. 
  • MAC 주소 (Media Access Control Address) 
    네트워크 카드(NIC)에 내장된 고유한 물리적 주소이다. 제조 단계에서부터 고정되며, 같은 로컬 네트워크(LAN) 내에서 바로 옆 장치를 찾아갈 때 사용된다. 평생 변하지 않는 '주민등록번호'에 비유할 수 있다. 
  • 포트 (Port) 
    하나의 IP주소 내에서 실행되는 여러 통신 프로그램 중 특정 프로그램을 식별하는 논리적인 '창구번호'로 웹 서버(80, 443), FTP (21) 등 각 서비스는 정해진 포트를 사용한다. 

통신 과정

1. 도메인과 IP 주소 변환 (DNS 조회) 

컴퓨터는 `www.google.com`과 같은 문자 주소를 직접 이해하지 못한다. 통신을 시작하려면 해당 도메인에 매핑된 IP 주소를 알아내야 한다. 이 과정을 DNS(Domain Name System)가 담당한다. 

  1. 사용자가 브라우저에  `www.google.com` 을 입력한다. 
  2. PC는 설정된 DNS 서버(보통 통신사가 제공)에 `www.google.com`의 IP 주소를 질의한다. 
  3. DNS 서버는 해당 도메인의 IP 주소를 찾아 PC에 응답한다. 

이 단계는 실제 주소를 모를 경우, 상호 안내 서비스를 통해 주소를 알아내는 과정과 같다. 

 

2. 데이터 캡슐화 (패킷 생성) 

이제 목적지 IP 주소를 알았으므로, 보낼 데이터를 패킷(Packet) 형태로 만든다. 이 과정을 캡슐화라고 하며, 데이터에 통신이 필요한 정보(헤더)를 계층별로 덧붙인다. 

  • TCP 헤더 : 출발지 포트 번호와 목적지 포트 번호를 포함한다. 데이터가 목적지 컴퓨터의 어떤 프로그램으로 가야 하는지를 지정한다. 
  • IP 헤더 : 출발지 IP 주소와 목적지 IP 주소를 포함한다. 인터넷 전체에서 최종 목적지를 정한다. 

 

3. 내부 통신을 위한 주소 결정 (ARP) 

이 패킷을 바로 미국에 있는 구글로 던질 수는 없다. 먼저 동네에 인터넷 세상으로 나가는 관문인 '게이트웨이(공유기/라우터)'에 전달해야한다. 그래서 내 컴퓨터는 같은 내부 네트워크에 있는 공유기의 위치(MAC 주소)를 찾기 위해 ARP(Address Resolution Protocol, 주소 결정 프로토콜)을 사용한다. 

  1. PC가 내부 네트워크에 '게이트웨이 IP 주소를 가진 장치의 MAC 주소는 무엇인가?' 라는 ARP 요청을 브로드캐스트한다. 
  2. 게이트웨이는 자신의 MAC 주소를 담은 ARP 응답을 PC에 보낸다. 
  3. PC는 이제 IP 패킷을 게이트웨이의 MAC 주소로 향하는 이더넷 프레임에 담아 전송한다. 

 

4. 인터넷을 통한 패킷 전송 

게이트웨이에 도착한 패킷은 드디어 인터넷으로의 여정이 시작된다. '라우터'라고 불리는 장비들이 이 과정을 담당한다. 각 라우터는 패킷의 목적지 IP 주소를 확인하고, 자신이 가진 라우팅 테이블 정보를 이용해 최적의 다음 경로(다음 라우터)로 패킷을 전달한다. 이 과정이 수없이 반복되어 패킷은 최종 목적지인 구글 서버가 있는 네트워크까지 도달한다. 이 과정에서 IP 주소를 변하지 않지만, 각 구간을 건널뛸 때마다 MAC 주소는 계속 바뀐다. 이 과정은 마치 릴레이 경주와 같아서, 각 라우터는 오직 다음 주자의 MAC 주소만 확인하며 패킷을 넘겨준다. 

 

5. 서버의 요청 처리 및 응답 

구글 서버는 도착한 패킷을 수신하여 분석한다. IP와 TCP 헤더 정보를 통해 이 패킷이 웹 서버로 온 요청임을 인지하고, 사용자가 요청한 웹 페이지 데이터를 준비한다. 

 

그 후, 서버는 출발지와 목적지 정보를 반대로 설정한 새로운 응답 패킷들을 생성하여 사용자 PC로 다시 보낸다. 이 과정 역시 라우팅을 통해 동일하게 이루어진다. 

 

6. 데이터 수신 및 웹 페이지 렌더링 

사용자 PC는 구글 서버로부터 온 응답 패킷들을 수신한다. 웹 브라우저는 이 패킷들을 순서에 맞게 조립하고, HTML, CSS 등의 데이터를 해석하여 우리가 보는 웹 페이지 화면으로 그려준다.(렌더링) 

 

'CS > 네트워크' 카테고리의 다른 글

[네트워크] OSI 7계층  (0) 2025.10.14
[네트워크] TCP/IP 4계층  (1) 2025.08.31
[네트워크] HTTP와 HTTPS(SSL/TLS) 이해하기  (0) 2025.08.31
'CS/네트워크' 카테고리의 다른 글
  • [네트워크] OSI 7계층
  • [네트워크] TCP/IP 4계층
  • [네트워크] HTTP와 HTTPS(SSL/TLS) 이해하기
erika0915
erika0915
백엔드 개발자가 되고 싶어요 .
  • erika0915
    erikoding
    erika0915
  • 전체
    오늘
    어제
    • 분류 전체보기 (78)
      • 프로젝트 (13)
        • 끼니콩 (3)
        • 덕메랑 (3)
        • handDoc (7)
        • Haeil (0)
      • Java (9)
        • 클린코더스 (0)
      • Spring (30)
      • Redis (3)
      • CS (7)
        • 운영체제 (3)
        • 컴퓨터구조 (0)
        • 네트워크 (4)
      • DevOps (2)
      • 코딩테스트 (0)
      • Tech (14)
        • TDD (1)
        • 정리 (5)
        • 우테코 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    레디스
    스프링
    파인튜닝
    coderabbit
    Network
    Spring
    몽고디비
    MongoDB
    운영체제
    promtail
    스프링부트
    docker
    redis
    코드레빗
    자바
    AI
    도커
    CoolSMS
    깃
    jira
    OS
    java
    git
    github
    TDD
    springboot
    네트워크
    지라
    깃허브
    STT
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
erika0915
[네트워크] 데이터 통신 과정

티스토리툴바