junyeokk
Blog
Network·2025. 06. 14

만약 구글 웹페이지에 요청을 하게 된다면

image.png

학생이 노트북을 캠퍼스 네트워크에 연결하고, 웹 브라우저를 열어 www.google.com에 접속하는 상황을 가정한다. 이 간단한 요청에는 네트워크의 모든 계층(application, transport, network, link)이 관여한다. 이 슬라이드는 지금까지 배운 내용을 통합하여, 실제 요청이 어떻게 처리되는지 전체적인 과정을 조망하는 데 목적이 있다. 우리는 이 과정을 통해 각 계층에서 어떤 프로토콜이 동작하고, 그들이 어떻게 협력하여 하나의 웹 요청을 처리하는지 종합적으로 이해하게 된다.

image.png

학생이 모바일 기기(노트북, 태블릿 등)를 캠퍼스 네트워크에 처음 연결하고, 웹 브라우저를 통해 www.google.com에 접속한다. 이 요청은 단순해 보이지만, 실제로는 여러 네트워크를 거쳐 처리된다. 클라이언트는 먼저 로컬 네트워크(예: 학교 네트워크, 68.80.2.0/24)에 접속하고, 그 뒤 ISP(Comcast의 68.80.0.0/13), DNS 서버, 그리고 최종적으로 Google의 네트워크(64.233.160.0/19)에 있는 웹 서버(64.233.169.105)까지 요청을 전달하게 된다. 이 과정은 단순한 HTTP 요청처럼 보이지만, 각 계층마다 다양한 프로토콜과 라우팅, 주소 변환, 요청 처리 과정이 포함되어 있다.

📡 시나리오

image.png

학생의 노트북이 캠퍼스 네트워크에 처음 접속하면, 인터넷에 연결되기 위해 자신의 IP 주소, 기본 게이트웨이(라우터 주소), 그리고 DNS 서버 주소가 필요하다. 이를 자동으로 할당받기 위해 사용하는 프로토콜이 DHCP(Dynamic Host Configuration Protocol)이다.

노트북은 DHCP 요청 메시지를 생성하여 브로드캐스트로 전송한다. 이 메시지는 여러 계층을 거쳐 다음과 같이 캡슐화된다:

  • DHCP 메시지 → UDPIP이더넷 프레임 (MAC 브로드캐스트 주소: FF:FF:FF:FF:FF:FF)

이더넷 브로드캐스트는 LAN에 있는 모든 장치에게 도달하며, 이 중 DHCP 서버 기능이 활성화된 라우터가 메시지를 수신한다. 수신한 라우터는 프레임을 IP 계층으로 디멀티플렉싱(demux) 하고, 다시 UDP, 마지막으로 DHCP까지 계층적으로 처리하여 클라이언트에게 IP 주소 등을 할당한다.

image.png

노트북이 DHCP 요청을 보낸 후, DHCP 서버는 다음 정보를 담은 DHCP ACK 메시지를 생성한다:

  • 클라이언트에게 할당된 IP 주소
  • *기본 게이트웨이(라우터)의 IP 주소 (first-hop router)
  • DNS 서버의 이름과 IP 주소

이 DHCP ACK는 다시 다음과 같이 캡슐화되어 클라이언트에게 전송된다:

  • DHCP → UDP → IP → Ethernet → Physical

프레임은 스위치를 통해 전달되며, 이 과정에서 스위치는 프레임의 출발지 MAC 주소와 포트를 학습한다 (switch learning). 이후 클라이언트는 이 프레임을 수신하고 계층적으로 디멀티플렉싱(demux)하여 DHCP ACK 메시지를 처리한다.

image.png
  1. 클라이언트는 DNS 질의를 생성하고 UDP/IP로 캡슐화함.

  2. 하지만 그 패킷을 라우터에게 이더넷 프레임으로 전송하려면,

    라우터의 MAC 주소가 필요함 (아직 모름).

  3. 따라서 ARP 요청을 생성하여 이더넷 브로드캐스트로 전송함:

    • 목적지 MAC 주소: FF:FF:FF:FF:FF:FF (모든 장치 수신)
    • ARP 메시지에는 “이 IP 주소를 가진 장치의 MAC 주소를 알려줘”라고 적혀 있음
  4. 라우터는 자기 IP에 해당하는 요청을 수신하고, 자신의 MAC 주소를 포함한 ARP 응답을 보냄.

  5. 클라이언트는 응답을 받아, 라우터의 MAC 주소를 자신의 ARP 캐시(테이블)에 저장함.

image.png
  1. DNS 요청 생성 및 캡슐화

    클라이언트는 www.google.com에 대한 IP 주소를 확인하기 위해 DNS 질의 메시지를 생성한다.

    이 메시지는 다음과 같이 계층별로 캡슐화된다:

    • DNS → UDP → IP → Ethernet → Physical
  2. 첫 번째 홉까지의 전송

    Ethernet 프레임은 클라이언트가 ARP를 통해 알아낸 기본 게이트웨이(라우터)의 MAC 주소를 목적지로 설정하고 LAN 스위치를 통해 전송된다.

  3. 라우터를 통한 ISP 네트워크로의 전달

    라우터는 IP 헤더의 목적지 주소(=DNS 서버의 IP 주소)를 참조하여, 이 IP 패킷을 캠퍼스 네트워크에서 Comcast ISP(68.80.0.0/13) 쪽으로 포워딩한다.

  4. ISP 내부 라우팅

    IP 패킷은 ISP 네트워크를 거치며, 여러 라우터 간 라우팅 테이블에 따라 전달된다. 이 라우팅 테이블은 RIP, OSPF, IS-IS, BGP 등의 프로토콜로 사전에 구성되어 있다.

  5. DNS 서버 수신 및 처리

    목적지 DNS 서버에 도달하면, 해당 IP 패킷이 계층적으로 디멀티플렉싱(demux) 되어 DNS 메시지로 전달되고, 서버는 www.google.com에 해당하는 IP 주소를 찾아 응답을 생성한다.

  6. 응답 전송

    DNS 응답은 다시 UDP/IP로 캡슐화되어 클라이언트의 IP 주소를 목적지로 하여 역방향으로 전달된다.

image.png
  1. 클라이언트 → 웹 서버: SYN 전송
    • 클라이언트는 Google 웹 서버(64.233.169.105)를 대상으로 TCP 연결을 요청한다.
    • 이를 위해 SYN 플래그가 설정된 TCP 세그먼트를 생성하고, 이를 IP/Ethernet 계층으로 캡슐화해 전송한다.
    • 이 패킷은 Comcast 네트워크, ISP 라우터들 등을 거쳐 Google 네트워크로 도달한다.
  2. 웹 서버 → 클라이언트: SYN-ACK 응답
    • Google 웹 서버는 SYN 세그먼트를 수신한 뒤, 연결을 수락하고자 하면 SYN + ACK 플래그가 설정된 TCP 세그먼트로 응답한다.
  3. 클라이언트 → 웹 서버: 최종 ACK 전송
    • 클라이언트는 SYN-ACK를 수신하고, 그에 대한 응답으로 ACK 세그먼트를 보냄으로써 연결이 완전히 설정된다.

→ 슬라이드에는 생략되었지만, 이 ACK가 3번째 단계다.

image.png
  1. HTTP 요청 전송
    • 클라이언트는 이미 수립된 TCP 연결 위에 HTTP 요청 메시지를 작성해 전송한다.

      예: GET / HTTP/1.1, Host: www.google.com

    • 이 요청은 TCP 세그먼트에 담기고, 다시 IP 계층을 거쳐 Ethernet 프레임으로 캡슐화된다.

    • 라우팅 경로는 Comcast 네트워크 등 중간 ISP들을 거쳐 Google의 웹 서버로 전달된다.

  2. 웹 서버 응답 (HTTP Reply)
    • Google 웹 서버는 요청을 처리하고, HTML 콘텐츠를 포함한 HTTP 응답 메시지를 생성한다.

      예: HTTP/1.1 200 OK + 웹 페이지 내용

    • 이 응답도 TCP/IP/Ethernet 계층을 통해 거슬러 클라이언트에게 전달된다.

  3. 웹 페이지 표시
    • 클라이언트는 응답을 수신하고, HTML 문서를 파싱하여 웹 브라우저에 최종적으로 웹 페이지를 렌더링한다.
    • 이후 필요한 추가 리소스들(이미지, CSS, JS 등)이 있으면 이와 동일한 절차로 반복 요청이 이루어진다.