[웹 서비스와 데이터의 이해] 웹사이트에 접속할 때 일어나는 과정 - 컴퓨터공학적 설명

Hyunjun Kim·2025년 4월 22일
0

Data_Engineering

목록 보기
49/153

4. 웹사이트에 접속할 때 일어나는 과정 - 컴퓨터공학적 설명

4.1 배경지식 OSI 7 Layer


이미지 출처 : https://avahack.medium.com/networking-for-devops-bf2a0aca5813

4.2 과정

4.2.1 전체 네트워크 흐름

[1] 사용자가 naver.com 접속 요청

요청: Leon requested naver.com GET /
역할 주체: 사용자 브라우저

  • 사용자가 브라우저에 URL을 입력하면, HTTP 프로토콜 기반의 GET 요청을 생성하려고 시도한다. 아직 IP 주소가 없으므로 도메인 이름을 IP로 변환해야 한다.

[2] 도메인 기반 요청 시도

요청: naver.com GET / (IP: ?)
역할 주체: 브라우저 / OS

  • 브라우저 또는 OS 내부에서 DNS 캐시를 확인하고, IP 주소가 없다면 외부 DNS 서버에 질의할 준비를 한다. 이 과정은 DNS 리졸버를 호출하는 전 단계이다.

[3] DNS 질의 전송

요청: Get IP of naver.com
역할 주체: 로컬 DNS 리졸버 (보통 ISP 제공)

  • DNS 프로토콜(UDP, 포트 53)을 사용하여 naver.com의 IP 주소를 질의한다. 이 요청은 루트 → TLD → 권한 DNS 서버로 전달되는 방식일 수도 있고, 캐시된 값이 반환될 수도 있다.

[4] DNS 응답 수신

요청: IP 1.1.1.9 (from DNS)
역할 주체: DNS 서버

  • DNS 시스템은 도메인 이름에 대응하는 IP 주소(예: 1.1.1.9)를 반환한다. 브라우저는 이 IP를 사용해 HTTP 요청을 전송할 준비를 한다.

[5] HTTP 요청 전송 시작

요청: 1.1.1.9 GET /
역할 주체: 사용자 OS → 로컬 라우터

  • TCP/IP 스택을 통해 실제 HTTP 요청 패킷이 생성된다. 이 패킷은 로컬 네트워크의 게이트웨이(라우터)로 전달되며, 목적지 IP는 DNS에서 받은 1.1.1.9이다.

[6] 2계층 주소 확인 (MAC 주소 확인)

요청: ARP 또는 L2 주소 확인
역할 주체: 로컬 라우터 (L2 계층 포함)

  • 동일 네트워크인지 여부 판단 후, 대상이 외부 IP라면 라우터의 MAC 주소를 확인하여 다음 홉으로 보낼 준비를 한다.

[7] 패킷 전송 → ISP 방향

요청: 1.1.1.9 GET /
역할 주체: 로컬 라우터

  • 내부 네트워크에서 생성된 요청 패킷을 외부 ISP로 전달한다. L3 라우팅 테이블을 참고하여 외부로 나가는 기본 게이트웨이로 포워딩한다.

[8] L3 라우팅 수행

요청: 1.1.1.9 GET /
역할 주체: ISP 라우터 (인터넷 백본 또는 엣지 라우터)

  • IP 주소 기반으로 목적지까지의 최적 경로를 계산하여 다음 홉으로 전달. 이 단계에서 여러 ISP 라우터를 경유할 수 있으며, 목적지 AS(Autonomous System)를 찾는다.

[9] 목적지 방향으로 전달

요청: 1.1.1.9 GET /
역할 주체: 상위 ISP 라우터 또는 트랜짓 라우터

  • 패킷은 전 세계 인터넷을 통해 목적지 IDC(1.1.1.9가 위치한 곳) 방향으로 전달된다. 이때는 보통 BGP(Border Gateway Protocol)에 의해 경로가 결정된다.

[10] 동일하게 전달

요청: 1.1.1.9 GET /
역할 주체: IDC 인접 ISP 라우터

  • 목적지 IP가 IDC의 주소 대역으로 매칭되면, 해당 IDC의 외부망(Edge Router, 방화벽 등)으로 패킷이 진입한다. 이 단계 이후부터는 내부 IDC에서 처리하게 된다.

[11] 외부 → IDC 진입:

2.2.2.9 sent GET / to your 1.1.1.9
역할 주체: 방화벽(Firewall), Load Balancer, Edge Router

  • 외부 클라이언트가 IDC 내부의 특정 IP(1.1.1.9)로 접근하는 단계.
  • 이 요청은 IDC 외부망에서 내부망으로 진입하는 트래픽.
  • 보통 이때는 방화벽이 포트 80 허용 여부를 검사하거나, 로드 밸런서가 적절한 서버에 요청을 분산할 수도 있음.
  • Edge 라우터 또는 인터넷 라우터가 패킷을 내부망으로 전달하는 입구 역할을 수행함.

[12] 내부 라우터가 요청을 애플리케이션 서버로 전달:

2.2.2.9 sent GET / to your port 80
역할 주체: Platform Router 또는 L3/L4 Switch

  • 요청이 IDC 내부 네트워크로 들어온 후, 내부의 웹 서버 또는 애플리케이션 서버의 포트 80으로 전달됨.
  • 라우터나 스위치가 요청 대상 서버를 정확히 찾고 포트 80으로 라우팅.
  • 즉, HTTP 요청이 실제 애플리케이션(Web Server)까지 도달하도록 내부 망에서 IP 기반으로 경로를 정해주는 역할을 함.
  • 이때 L4 스위치(포트 기반)나 서비스 라우팅 기능이 있다면 세부적으로 제어 가능.

[13] 응답 처리 및 전송:

Respond index.html(resource of /) to 2.2.2.9
역할 주체: 웹 서버 (Apache, Nginx 등) + 네트워크 라우터

  • 내부 서버가 요청받은 리소스(/)에 대해 적절한 응답(index.html)을 생성.
  • 웹 서버는 이 응답을 생성하여 TCP/IP를 통해 외부 클라이언트(2.2.2.9)로 전송.
  • 다시 내부 라우터 → 엣지 라우터 → 인터넷을 통해 응답이 반환됨.
  • 이후의 전송 과정은 클라이언트의 TCP 스택에서의 일반적인 처리 흐름과 동일하게 진행.

4.2.2 전체 네트워크 흐름 요약: 1~13 단계

단계동작 내용주체 (행동 주체)역할 및 설명
1Leon requested naver.com GET /사용자 (브라우저)도메인 기반 요청 시작. URL을 브라우저에 입력함.
2naver.com GET / (IP: ?)브라우저 / OS아직 IP를 모름 → DNS 조회 필요.
3Get IP of naver.com (DNS)로컬 DNS 리졸버DNS 쿼리 전송. 도메인 이름에 대한 IP 주소 질의 수행.
4IP 1.1.1.9 (from DNS)DNS 서버naver.com의 실제 IP를 응답 (예: A record).
51.1.1.9 GET / 요청 생성로컬 네트워크의 라우터IP 주소를 받은 후 HTTP 요청을 생성하여 라우터로 전달.
6L2 주소 확인로컬 라우터 (L2)목적지가 동일 네트워크인지 판단. ARP/MAC 주소 조회.
71.1.1.9 GET / 패킷 전송라우터외부 목적지(IP)로 패킷을 전송. ISP로 라우팅 시작.
8L3 목적지 확인 → 라우팅 테이블에서 다음 홉 결정ISP 라우터 (L3)목적지 IP 기반으로 다음 홉 결정, 라우팅 수행.
9목적지로 패킷 전송중간 ISP 라우터패킷을 더 상위 ISP 또는 목적지 IDC로 전달.
10(8과 동일)상위 ISP 라우터동일하게 다음 홉으로 전달 (Transit 또는 Peering).
112.2.2.9 sent GET / to your 1.1.1.9IDC 엣지 라우터 / 방화벽외부 요청 수신. 방화벽이 포트 검사, 정책 적용 후 내부로 전달.
12내부 라우팅 → 포트 80으로 전달IDC 내부 L3 라우터 또는 L4 스위치내부 네트워크 내 적절한 웹 서버의 포트 80으로 요청 전달.
13index.html 응답 생성 및 송신웹 서버 (Apache/Nginx) + 내부 라우터요청된 리소스를 생성하고, 응답 패킷을 외부 클라이언트에게 전송.





이미지 출처 : https://www.webnic.cc/domain-names/what-is-a-domain-name-server-dns-and-how-it-works/


웹사이트 접속 시 서버-클라이언트 모델 동작 과정

  1. 입력한 주소(예: naver.com)를 운영체제가 알고 있는 DNS에 조회한다. 주소에 맞는 IP주소를 얻어온다.
  1. 네트워크 통신에 필요한 메시지를 구성한다.

    • OSI 7계층을 따라 상위 계층부터 하위 계층으로 데이터에 헤더를 추가한다.

    • [Application / Presentation / Session Layer]

      • 응용 계층 프로토콜(예: HTTP, HTTPS 등)을 통해 요청 데이터를 생성한다.
      • 응용 계층 프로토콜에 맞는 헤더를 붙여 데이터를 구성한다
    • [Transport Layer]

      • TCP/UDP 프로토콜을 사용하여 세그먼트를 생성하고 포트 번호를 포함한다.
    • [Network Layer]

      • IP 헤더를 붙여 Datagram을 생성한다.
      • Source IP: 클라이언트의 IP 주소
      • Destination IP: DNS를 통해 얻은 서버의 IP 주소

        Network Layer에서는 자신의 IP 주소를 source-ip 영역에, DNS를 통해 조회한 서버의 IP 주소를 target-ip 필드에 넣어 IP 패킷을 만든다.

    • [Data Link Layer]

      • 프레임을 생성하고, MAC 주소를 포함한다.
      • 동일 네트워크 여부를 ARP 등을 통해 확인한다.
      • Frame을 붙인다
    • [Physical Layer]

      • Data Link Layer에서 생성된 프레임을 전기적 신호나 광신호로 변환하여 전송할 준비를 마친다.
  2. 송신자의 호스트 또는 로컬 라우터는 프레임을 검사하여

    • 대상이 같은 네트워크에 있는지 판단한다.
    • 아니라면 인접한 ISP 라우터로 메시지를 전송한다.
  3. ISP 라우터는 다음을 수행한다.

    • Physical, Data Link, Network 계층을 분석하여 Destination IP를 파악한다.
    • 자신의 라우팅 테이블을 확인하여 목적지 IP에 가까운 다음 홉(Gateway 또는 상위 라우터)으로 메시지를 전달한다.
  4. 목적지 IP를 포함한 메시지가 대상 서버가 있는 네트워크에 도달하면,

    • 로컬 라우터는 해당 IP 주소를 가진 서버 컴퓨터로 메시지를 전송한다.
  5. 서버 컴퓨터의 운영체제는 다음을 수행한다.

    • OSI 계층 순서대로 (L1~L7) 헤더를 제거하며 데이터를 처리한다.
    • 해당 포트 번호에 연결된 프로세스(Application)에 메시지를 전달한다.
    • 애플리케이션은 Application Layer 데이터를 해석하여 클라이언트의 요청을 처리한다.
  6. 서버가 클라이언트에게 응답을 보내는 경우,

    • 동일한 원리(1~6 단계의 역방향)로 응답 데이터를 전송한다.

profile
Data Analytics Engineer 가 되

0개의 댓글