← 아티클 목록

DNS 해석 과정 — 재귀 질의와 반복 질의로 이해하기

2028-07-10#networking#dns#네임서버

브라우저에 도메인을 치면 어떻게 IP를 찾아올까요? DNS 해석은 한 번에 답이 나오는 게 아니라, 여러 네임서버를 거쳐 좁혀가는 과정입니다. 핵심은 누가 대신 물어봐 주느냐(재귀)와 단계별로 직접 물어보느냐(반복)의 구분입니다.

해석의 단계

도메인은 오른쪽에서 왼쪽으로 좁혀집니다. www.example.com을 찾는다면 루트 → com(TLD) → example.com(권한 서버) 순으로 내려갑니다.

단계서버역할
1리졸버(캐시 서버)클라이언트 대신 전체 조회 수행
2루트 네임서버com TLD 서버 위치를 알려줌
3TLD 네임서버example.com 권한 서버 위치를 알려줌
4권한 네임서버실제 IP(A 레코드)를 응답

각 상위 서버는 답을 직접 주지 않고 "다음에 물어볼 곳"을 알려줍니다. 최종 IP는 권한 네임서버만 가지고 있습니다.

재귀 질의 vs 반복 질의

차이의 핵심은 누가 발품을 파느냐입니다.

  • 재귀 질의(recursive): 클라이언트가 리졸버에게 "끝까지 알아내서 답만 줘"라고 맡기는 방식입니다. 클라이언트는 한 번 묻고 최종 IP만 받습니다.
  • 반복 질의(iterative): 리졸버가 루트 → TLD → 권한 서버로 차례차례 직접 물어보는 방식입니다. 각 서버는 "여기로 가봐"라는 참조(referral)만 돌려줍니다.

즉 클라이언트와 리졸버 사이는 보통 재귀, 리졸버와 상위 서버들 사이는 반복입니다. 리졸버가 "대신 발품 파는 대리인" 역할을 하는 셈입니다.

캐시와 TTL

매번 루트부터 가면 느리므로 리졸버는 응답을 캐시합니다. 각 레코드에는 TTL(Time To Live)이 있어 그 시간 동안 캐시가 재사용됩니다. TTL이 지나면 다시 조회합니다.

로컬 터미널
dig +trace www.example.com

+trace는 리졸버 캐시를 건너뛰고 루트부터 단계별 참조를 그대로 보여주어, 위 4단계 흐름을 눈으로 확인하기 좋습니다.

OUTPUT
;; 루트 → com TLD 서버 참조
com.            172800  IN  NS  a.gtld-servers.net.
;; com → example.com 권한 서버 참조
example.com.    172800  IN  NS  ns1.example.com.
;; 권한 서버 → 최종 응답
www.example.com. 300    IN  A   93.184.216.34

A 레코드 줄의 300이 TTL(초)이고, 그 앞 NS 줄들이 단계별 참조입니다. 간단히 결과만 보려면 dig www.example.com +short를 씁니다.

요점 정리

  • DNS는 루트 → TLD → 권한 서버로 단계적으로 좁혀 IP를 찾습니다.
  • 재귀 질의 = "끝까지 알아내 줘"(클라이언트↔리졸버), 반복 질의 = 단계별 직접 조회(리졸버↔상위 서버).
  • 리졸버는 TTL 동안 응답을 캐시해 속도를 높입니다.
  • dig +trace로 단계별 참조를, dig +short로 최종 IP를 확인하세요.

DNS 질의와 네임서버 흐름을 dig로 직접 따라가며 익히는 실습은 네트워크 트랙에서 회원가입 없이 무료로 할 수 있습니다.