[기술 딥다이브] DNS: 도메인 이름이 IP 주소가 되기까지


한 줄 요약: DNS는 재귀 해석기가 루트→TLD→권한 있는 서버로 계층을 따라가며 이름을 IP로 바꾸고, 그 결과를 TTL 동안 캐싱하는 시스템이다.

브라우저에 blog.app.gslump.com을 입력하면, 컴퓨터는 그 이름을 IP 주소로 변환합니다. 이 변환을 DNS(Domain Name System)가 수행합니다. 인터넷의 전화번호부라고 불리는 이유입니다. 어떻게 작동하는지 풀어 설명하겠습니다.

도메인의 계층 구조: 루트, TLD, 권한 있는 서버

도메인은 역트리(뒤집힌 트리) 구조입니다. blog.app.gslump.com이라면 다음과 같이 분해됩니다:

  • .(루트): 최상위, 보통 생략됨
  • com: TLD(Top-Level Domain), 최상위 도메인
  • gslump.com: 권한 있는 서버가 관리하는 영역
  • app.gslump.com, blog.app.gslump.com: 하위 도메인

각 계층마다 그 아래를 관리하는 권한 있는 서버(authoritative server)가 존재합니다.

재귀적 해석기(recursive resolver): 대신 찾아주는 서버

브라우저가 도메인을 전달하면, 먼저 재귀적 해석기에 조회합니다. 보통 ISP나 Google DNS(8.8.8.8), Cloudflare DNS(1.1.1.1) 같은 서버입니다. 이 해석기가 대신 계층을 따라가며 IP를 찾습니다. 사용자는 한 번만 조회하면 됩니다.

조회 과정: root에서 TLD를 거쳐 authoritative로

  1. 해석기가 루트 서버에 ’gslump.com을 아는가?’라고 조회합니다. 루트는 ’com TLD 담당 서버’를 알려줍니다.
  2. 해석기가 com TLD 서버에 ’gslump.com을 아는가?’라고 조회합니다. TLD는 ’gslump.com 권한 있는 서버’를 알려줍니다.
  3. 해석기가 gslump.com 권한 있는 서버에 ’blog.app.gslump.com을 아는가?’라고 조회합니다. 거기서 비로소 IP를 받습니다.

캐싱과 TTL: 한 번 찾으면 잠시 기억

매번 위 과정을 전부 거치면 느려집니다. 그래서 각 단계(브라우저, 운영체제, 해석기, 권한 있는 서버)가 결과를 캐싱합니다. TTL(Time To Live)이라는 시간 동안 기억하고, 만료되면 다시 조회합니다. TTL이 짧으면 변경이 빠르게 전파되지만 조회가 많아지고, 길면 빠르지만 전파가 느려집니다.

DNS over HTTPS/TLS: 암호화된 DNS

기존 DNS는 평문(암호화 없음)으로 동작합니다. 중간에서 누가 어떤 도메인을 조회하는지 확인할 수 있습니다. 그래서 DoH(DNS over HTTPS)와 DoT(DNS over TLS)가 등장했습니다. DNS 조회 자체를 암호화합니다. Chrome과 Firefox 등 주요 브라우저가 기본 지원을 시작했습니다.

어떻게 연결되는가

한 줄로 요약하면: 재귀적 해석기가 루트에서 TLD를 거쳐 권한 있는 서버까지 계층을 따라가며 IP를 찾고, 결과를 TTL 동안 캐싱하는 시스템입니다. ’이름에서 IP로’의 변환 하나에 전 세계 서버들이 계층적으로 협력하는 것이 DNS의 본질입니다.

출처: 위키백과: Domain Name System · RFC 1035: DNS

이미지: Pavel.satrapa, Wikimedia Commons (CC-BY-SA 2.5) — 원본