본문 바로가기
팀 프로젝트/최종 프로젝트

사용자가 사이트에 요청을 보내는 과정(DNS)

by pon9 2025. 2. 27.

프로젝트 아키텍처를 그리다가 문득 사용자가 우리 사이트에 요청을 보낼 때 클라우드 외부에서 어떤 과정을 거치는지 궁금해져서 정리하게 되었다

aws 클라우드 구성은 우리 프로젝트에 적용된 EC2관련 기술들 (VPC, ALB, ASG)만 대강 그려놨다

 

 

DNS란?

DNS는 도메인 이름을 IP주소로 변환하는 시스템이다.

쉽게 말해서, 내가 산 cheerha.link같은 도메인 이름을 컴퓨터가 이해할 수 있는 IP주소로 바꿔주는 역할을 한다.

 

DNS는 도메인 이름을 입력하면 해당 도메인의 IP주소를 찾아 반환하는 과정을 수행한다.

이 과정은 크게 4단계로 이루어져있다

1. 사용자가 브라우저에 도메인을 입력한다 -> cheerha.link

2. DNS 서버에 요청한다(정방향 조회) -> cheerha.link의 IP주소가 뭐야?

3. DNS 서버가 IP 주소 반환 -> ALB의 IP를 줌

4. 사용자의 브라우저가 해당 IP로 요청 전송 -> 웹사이트 접속 완료

 

반대로 IP주소를 도메인으로 변환할 수도 있다.(역방향 조회라고 하며, 네트워크 보안이나 로그 분석 등에 이용된다)

 

 

DNS 요청이 AWS에 들어가기까지의 과정

1. 브라우저 캐시 확인

사용자가 cheerha.link 같은 도메인을 주소창에 입력하면 브라우저 내부 캐시를 우선 확인한다.

같은 도메인에 재접속하는 경우라면 바로 캐시된 IP로 요청이 갈 수 있다.

 

2. OS캐시 확인

브라우저에 없으면 OS 레벨에 저장된 DNS 캐시를 확인한다.

 

3. 로컬 DNS서버 확인

OS에도 없으면 로컬 DNS서버(ISP 등)로 조회 요청을 보낸다

 

4. 재귀적 DNS 조회(사실 3번 과정도 여기 속한다)

로컬 DNS서버에도 없으면 계속 재귀적으로 상위 DNS서버에 요청을 반복해서 최종적으로 도메인에 대한 NS레코드를 호스팅 중인 Route53까지 쭉 올라간다

여기서 cheerha.link에 매핑된 IP주소를 찾고, 응답을 받으면 로컬 DNS서버가 캐싱해 두고 브라우저에게 알려준다

 

5. IP주소를 받은 뒤 실제 요청

이제 브라우저가 도메인명 대신 IP주소(내 경우엔 ALB의 퍼블릭IP)로 HTTP/HTTPS 연결을 시도하게 되고, 그 결과 EC2에 요청이 분배된다

사용자가 HTTP로 요청을 보내면 HTTPS로, HTTPS로 요청을 보내면 오토스케일링그룹으로 요청을 보낸다.

 

 

재귀적 DNS 조회

IP주소는 단순히 한 번의 요청만으로 바로 알 수 없고,

계층적인 구조를 통해 여러 DNS서버를 거치면서 최종적으로 IP주소를 찾게된다.

이렇게 사용자가 요청한 DNS서버가 직접 최종 IP주소를 찾을 때 까지 다른 DNS서버들에 계속 요청을 보내는 방식을

"재귀적 DNS 조회" 라고 한다.

1. 클라이언트가 C.B.A도메인의 IP주소를 찾기 위해 DNS서버에 질의(Resolution Request)를 보낸다

 

2. 루트 네임서버에 요청한다. 루트 네임서버는 A(최상위 도메인, TLD)를 담당하는 네임서버의 주소를 반환해 준다

 

3. TLD네임서버에 요청한다. TLD 네임서버는 B(2차 도메인)의 네임서버 정보를 반환해준다

 

4. 2차 도메인의 네임서버에 요청한다. B 네임서버는 C(서브 도메인)를 담당하는 네임서버의 주소를 반환해준다

 

5. 이제 최종적으로 C.B.A를 담당하는 네임서버에게 요청을 보낸다. C.B.A 도메인을 담당하는 네임서버는 실제 IP 주소를 알고 있으며, 이를 반환해준다. 이 최종 네임서버는 AWS에선 Route53이다.

 

Route53에서 설정할 수 있는 다양한 레코드 타입을 통해, 다양한 방식으로 리소스를 연결 가능하다

대표적으로 A는 도메인을 특정 IPv4 주소와 매핑해준다.