Foundry
네트워크
기초
핵심

DNS 조회 과정

브라우저 캐시 → Local DNS → Root → TLD → Authoritative

DNS 조회 과정

도메인 이름(www.google.com)을 IP 주소(142.250.196.110)로 변환하는 과정

전체 흐름

브라우저에 www.google.com 입력

1. 브라우저 캐시 확인
   ↓ (없으면)
2. OS 캐시 확인 (/etc/hosts)
   ↓ (없으면)
3. Local DNS 서버 (ISP)
   ↓ (없으면)
4. Root DNS 서버 (.)
   ↓ "com은 여기로"
5. TLD DNS 서버 (.com)
   ↓ "google.com은 여기로"
6. Authoritative DNS
   ↓ "142.250.196.110"
7. IP 주소 반환 + 캐싱

각 단계 상세

단계서버역할
1-2로컬 캐시이전 조회 결과 재사용
3Local DNSISP가 운영, 재귀 조회
4Root DNS전 세계 13개 (a~m)
5TLD DNS.com, .kr 등 관리
6Authoritative실제 IP 보유 서버

재귀 vs 반복 조회

[재귀 조회]
Client → Local DNS
         (Local이 대신 다 물어봄)
         ← 최종 IP 반환

[반복 조회]  
Local DNS → Root → "TLD 주소"
Local DNS → TLD  → "Auth 주소"
Local DNS → Auth → "최종 IP"
  • 클라이언트 → Local DNS: 재귀 조회
  • Local DNS → 나머지: 반복(iterative) 조회

DNS 레코드 타입

타입용도예시
A도메인→IPv4google.com → 142.250.x
AAAA도메인→IPv6google.com → 2404:...
CNAME별칭www → google.com
MX메일 서버gmail-smtp.google.com
NS네임서버ns1.google.com
TXT텍스트(인증)SPF, DKIM 설정

TTL과 캐싱

TTL(Time To Live) = 캐시 유효 시간

TTL=3600 → 1시간 동안 캐시 사용
TTL=86400 → 24시간 동안 캐시 사용

TTL이 짧으면: 변경 빠르게 반영, DNS 부하 ↑
TTL이 길면: DNS 부하 ↓, 변경 반영 느림

실무 연결

상황DNS 관련 포인트
서비스 배포DNS 전파 지연 (최대 48시간)
로드밸런싱DNS 라운드로빈 (A 레코드 여러 개)
CDNCNAME으로 CDN 서버 연결
장애 대응TTL 짧게 설정 → 빠른 전환
HTTPS인증서와 도메인 매칭 필수
면접에서 이렇게 나옵니다

Q.브라우저에 URL을 입력하면 DNS 조회는 어떤 순서로 이뤄지나요?

가까운 캐시부터 훑고 없으면 위로 올라갑니다.

순서조회 대상설명
1브라우저 캐시가장 빠르다
2OS 캐시와 hosts 파일시스템 수준
3로컬 DNS 서버ISP 나 회사 서버. 여기서 대부분 끝난다
4루트 서버최상위 도메인 담당 서버를 알려준다
5최상위 도메인 서버com 을 담당. 해당 도메인의 권한 서버를 알려준다
6권한 서버실제 IP 를 답한다

4번부터 6번은 로컬 DNS 서버가 대신 돌아다니고, 결과를 캐시해 다음 요청부터는 3번에서 끝납니다.

흔한 실수: 매 요청이 루트까지 간다고 답하는 것. 실제로는 캐시 적중률이 높아 대부분 1번에서 3번 안에서 끝납니다. 루트 서버가 전 세계 13개 주소로 운영되는데도 버티는 이유입니다.

Q.재귀 조회와 반복 조회의 차이를 설명해주세요.

누가 돌아다니는지가 다릅니다.

방식요청한 쪽받은 쪽
재귀답만 기다린다끝까지 찾아서 최종 답을 준다
반복다음에 물어볼 곳을 받아 직접 간다아는 만큼만 알려준다

실제 조합은 이렇습니다.

구간방식
클라이언트에서 로컬 DNS 서버재귀찾아서 알려달라
로컬 DNS 서버에서 루트, TLD, 권한 서버반복다음은 어디로 물어보면 되나

이렇게 나눈 이유는 부하와 캐시 때문입니다. 루트 서버가 모든 클라이언트의 재귀 요청을 받으면 감당할 수 없습니다. 로컬 서버가 대신 돌고 결과를 캐시하면 같은 도메인 요청이 거기서 끝납니다.

흔한 실수: 둘을 순서 개념으로 이해하는 것. 재귀와 반복은 책임을 누가 지는가의 차이입니다.

Q.DNS 캐싱은 어디서 이뤄지고, TTL의 역할은 무엇인가요?

여러 층에서 이뤄지고, TTL 이 각 층의 보관 기간을 정합니다.

보관 기간
브라우저자체 정책. 보통 수십 초에서 수 분
운영체제TTL 을 따른다
로컬 DNS 서버TTL 을 따른다. 여기가 가장 크게 작용한다

TTL 은 권한 서버가 응답에 실어 보내는 값으로 이 답을 얼마 동안 재사용해도 되는지를 알려줍니다.

TTL 이 길면   조회 부하와 지연이 준다. 대신 변경 반영이 느리다
TTL 이 짧으면 변경이 빨리 퍼진다. 대신 조회가 잦아진다

그래서 서버 이전 며칠 전에 TTL 을 낮춰두고, 이전이 끝나고 안정되면 다시 올리는 절차를 씁니다. 낮춘 값이 퍼지는 데도 기존 TTL 만큼 걸리기 때문에 미리 해야 합니다.

흔한 실수: 변경 직후 TTL 을 낮추는 것. 이미 옛 값을 받아간 서버들은 원래 TTL 이 끝날 때까지 그대로입니다.

Q.DNS 레코드 타입 A, CNAME, MX의 차이를 설명해주세요.

타입가리키는 것
AIPv4 주소example.com 은 93.184.x.x
AAAAIPv6 주소
CNAME다른 도메인 이름www 는 example.com 을 가리킨다
MX메일 서버와 우선순위메일은 mail.example.com 으로
TXT임의 문자열도메인 소유 확인, 메일 인증 정보
NS이 도메인의 권한 서버

CNAME 은 이름을 다시 조회해야 하므로 왕복이 한 번 더 듭니다. 그리고 루트 도메인에는 CNAME 을 둘 수 없습니다. 같은 이름에 다른 레코드(MX, NS)가 함께 있어야 하는데 CNAME 은 그것을 금지하기 때문입니다.

그래서 루트 도메인을 CDN 이나 로드밸런서에 붙일 때는 제공자별 대체 방식(A 레코드 자동 갱신, ALIAS 유형)을 씁니다.

흔한 실수: 루트 도메인에 CNAME 을 걸려다 실패한 뒤 원인을 못 찾는 것. 표준 제약이라 서비스마다 우회 수단을 확인해야 합니다.

Q.DNS Round Robin 로드밸런싱의 한계는?

DNS 는 주소를 알려줄 뿐 서버 상태를 모릅니다.

한계내용
헬스 체크 없음죽은 서버 주소도 그대로 준다
캐시 때문에 전환이 느리다TTL 이 남아 있으면 옛 주소로 계속 간다
부하가 고르지 않다클라이언트마다 연결 지속 시간과 요청량이 다르다
클라이언트 선택여러 주소를 받고 무엇을 쓸지는 클라이언트가 정한다
세션 유지 불가같은 사용자가 다음에 다른 서버로 갈 수 있다

그래서 실무에서는 DNS 로 지역이나 데이터센터를 고르고, 그 안에서 로드밸런서가 실제 분배와 헬스 체크를 맡는 2단 구조를 씁니다.

TTL 을 짧게 잡으면 전환은 빨라지지만 조회가 늘고, 일부 해석기는 짧은 TTL 을 무시하기도 해서 한계가 남습니다.

흔한 실수: DNS 라운드 로빈을 장애 대응 수단으로 쓰는 것. 서버가 죽어도 주소가 계속 나가 일부 사용자가 실패합니다.

먼저 스스로 답해보고 아래 답변과 견줘보세요. 막히는 부분은 문제로 확인할 수 있어요.

더 깊이 공부하기

읽었으면 문제로 확인해보세요

네트워크 문제를 풀면 틀린 문제가 자동으로 노트에 쌓입니다. 가입 없이 5문제를 먼저 풀어볼 수도 있어요.