Web Request Processing Flow

이재영·2025년 3월 27일
1

인터넷을 사용하면서 우리는 웹사이트에 접속하고, 온라인 게임을 플레이하며, 서버를 구축하기도 한다.
이 모든 과정에서 IP, 라우터, NAT, DNS 등이 유기적으로 연결되어 작동한다.
이런 개념들을 접할때마다 이거는 기억하고 저거는 까먹는거 같아... 전체적인 흐름을 통해 개념들을 조금이나마 익히고자
사용자가 웹사이트에 접속하는 순간부터 서버에서 응답을 받기까지, 이 개념들이 언제 어떻게 사용되는지를 흐름을 따라가보겠다.


네트워크 전반적인 흐름

단계설명주체/서버
1브라우저에 URL 입력 후 엔터사용자(브라우저)
2DNS 서버에 도메인(example.com) IP 주소 요청브라우저 → DNS 서버
3DNS 서버가 IP 주소(예: 203.0.113.45) 반환DNS 서버 → 브라우저
4브라우저가 IP 주소로 HTTP 요청 전송브라우저 → LB
5LB(Elastic Load Balancer)가 요청을 여러 웹 서버로 분배LB → 웹 서버(서버들)
6요청이 라우터 및 인터넷을 거쳐 LB에 도달네트워크 인프라
7LB가 웹 서버 중 하나를 선택하여 요청 전달LB → 웹 서버
8웹 서버가 요청을 수신 후 WAS(웹 애플리케이션 서버)로 전달웹 서버 → WAS
9WAS가 데이터베이스에서 정보 조회 후 웹페이지 생성WAS + 데이터베이스
10생성된 웹페이지를 웹 서버에 전달WAS → 웹 서버
11웹 서버가 응답을 LB로 전송웹 서버 → LB
12LB가 응답을 사용자에게 전송LB → 브라우저
13브라우저가 응답을 렌더링하여 화면에 표시브라우저


하나씩 설명 . . .

우선 개념들은 LB를 제외한 환경에서의 각 설명과 역할로 정리하겠음

1. 인터넷의 주소 체계: IP 주소

인터넷에서 모든 기기는 서로를 구별하기 위해 **IP 주소(Internet Protocol Address)**를 가진다. IP 주소에는 두 가지 유형이 있다.

  • 공인 IP (Public IP): 인터넷에서 직접 접근 가능한 주소

  • 사설 IP (Private IP): 내부 네트워크에서만 사용되는 주소 (예: 192.168.x.x, 10.x.x.x)

가정이나 회사에서 여러 기기를 인터넷에 연결하려면 라우터가 필요하다!


2. 내부 네트워크를 관리하는 라우터

라우터는 하나의 공인 IP를 사용해 여러 기기가 인터넷을 사용할 수 있도록 한다. 내부 네트워크에서 각 기기에 사설 IP를 할당하며, 외부와의 통신을 위해 **NAT(Network Address Translation)**을 수행한다. (NAT에 대해선 밑에서 설명)

예를 들어, 다음과 같은 네트워크 구성을 가정해 보자...

  • 공인 IP: 123.45.67.89 (ISP에서 할당)

  • 라우터 IP: 192.168.0.1

  • PC1: 192.168.0.10

  • 스마트폰: 192.168.0.11

라우터는 이 내부 기기들이 인터넷을 사용할 수 있도록 NAT를 통해 IP 주소를 변환한다.


3. NAT (Network Address Translation): 내부 IP를 공인 IP로 변환

NAT는 내부 네트워크에서 여러 기기가 하나의 공인 IP를 공유할 수 있도록 도와준다.

  1. 내부 기기(예: 192.168.0.10)가 인터넷에 접속하면, 라우터는 공인 IP(123.45.67.89)로 변환하여 요청을 보낸다.

  2. 응답이 도착하면, 라우터는 NAT 테이블을 확인하여 해당 기기(192.168.0.10)로 데이터를 전달한다.

이 과정 덕분에 가정 내 모든 기기가 인터넷을 사용할 수 있지만, NAT 환경에서는 외부에서 내부로 직접 접근하는 것이 어려워지는 문제가 발생한다. 이를 해결하기 위해 포트 포워딩이 필요합니다.


4. 포트 포워딩: 외부에서 내부 서버로 접근하기

내부 네트워크에 있는 특정 서버(예: 개인 웹 서버)에 외부에서 접속하려면 포트 포워딩을 설정해야 한다.

예를 들어, 내가 192.168.0.10에서 웹 서버(포트 8080)를 운영한다고 가정해 보자...

  1. 외부 사용자가 123.45.67.89:8080으로 접속하면, 라우터가 요청을 받는다.

  2. 라우터는 포트 포워딩 설정을 확인하여 요청을 192.168.0.10:8080으로 전달한다.

  3. 내부 웹 서버가 요청을 처리하고 응답을 반환한다.

이를 통해 NAT 환경에서도 특정 내부 서버로 접근할 수 있다!


5. DNS (Domain Name System): 도메인을 IP로 변환

우리는 https://example.com과 같은 도메인을 사용하지만, 실제로는 IP 주소(203.0.113.45)로 변환해야 서버와 통신할 수 있습니다. 이 역할을 담당하는 것이 DNS 서버이다.

DNS의 동작 과정

  1. 사용자가 https://example.com을 입력하면, 브라우저가 DNS 서버에 IP 주소를 요청한다.

  2. DNS 서버가 203.0.113.45를 반환한다.

  3. 브라우저가 해당 IP로 요청을 보낸다.

DNS 덕분에 우리는 복잡한 IP 주소를 외울 필요 없이 google.com과 같이 직관적인 도메인을 사용할 수 있다.


6. 로드 밸런서(LB)와 서버 구조

우선 이게 왜 필요하냐..?
대형 웹사이트는 하나의 서버만으로 트래픽을 감당하기 어렵기 때문에 **로드 밸런서**를 사용하여 요청을 여러 서버에 분산시킨다.

  1. 사용자가 https://mywebsite.com에 접속하면, DNS가 LB의 IP 주소를 반환한다.

  2. LB가 요청을 받아 트래픽을 여러 웹 서버로 분산한다.

  3. 웹 서버가 요청을 WAS(Spring, Express.js)로 전달한다.

  4. WAS가 데이터베이스에서 정보를 조회하여 응답을 생성한다.

  5. 응답이 웹 서버를 거쳐 사용자의 브라우저로 전달된다.

LB를 제거하면, DNS가 특정 웹 서버를 직접 가리키게 되어 부하 분산이 어려워질 수 있다.


정리

IP 주소: 인터넷상의 주소 (공인/사설 IP)
라우터: 내부 네트워크의 사설 IP 할당 및 인터넷 연결 관리
NAT: 사설 IP를 공인 IP로 변환하여 인터넷 연결 지원
포트 포워딩: 외부에서 내부 서버로 접근할 수 있도록 설정
DNS: 도메인 이름을 IP 주소로 변환하는 시스템
LB: 웹 서버 트래픽을 분산하여 부하를 줄이는 역할

이 모든 개념들이 유기적으로 연결되면서 우리가 매일 사용하는 인터넷이 원활하게 동작하는 것이라 보면 된다!

profile
chmod 000

0개의 댓글