도메인을 입력하면 서버에 접속된다는 것은 알지만, 그 과정이 어떻게 이루어지는지는 잘 모르는 경우가 많다.
“google.com을 입력하면 어떻게 IP 주소를 찾아서 연결되는 걸까?”
이 과정을 담당하는 것이 바로 DNS(Domain Name System)이다.
결론부터 말하면 DNS는 도메인을 IP 주소로 변환해주는 인터넷의 주소 변환 시스템이다.

DNS가 필요한 이유는 사람이 IP 주소를 기억할 수 없기 때문이다
인터넷에 연결된 모든 서버는 IP 주소를 가지고 있다. 하지만 이 IP는 숫자로 이루어져 있기 때문에 사람이 기억하기 어렵다.
예를 들어:
- 142.250.206.14
이 숫자를 외워서 사이트에 접속하는 것은 사실상 불가능하다.
그래서 도메인을 입력하면 DNS가 자동으로 IP를 찾아준다.
전체 흐름은 이렇게 이루어진다
DNS는 단순히 한 번에 IP를 알려주는 것이 아니라 여러 단계를 거친다.
도메인 입력 → DNS 조회 → IP 반환 → 서버 접속
하지만 이 과정 안에는 더 세부적인 단계가 숨어 있다.
1. 브라우저는 먼저 DNS 캐시를 확인한다
가장 먼저 하는 일은 “이미 알고 있는 주소인지” 확인하는 것이다.
브라우저와 운영체제는 이전에 방문한 도메인의 IP를 저장해두는 캐시를 가지고 있다.
만약 캐시에 정보가 있다면:
- DNS 서버에 요청하지 않고
- 바로 해당 IP로 접속한다
그래서 같은 사이트를 다시 방문하면 훨씬 빠르게 열리는 것이다.
2. DNS 서버에 요청을 보내기 시작한다
캐시에 정보가 없다면 이제 외부 DNS 서버에 요청을 보낸다.
이때 사용하는 것이 보통:
- 인터넷 제공업체(ISP)의 DNS
- 또는 Google DNS (8.8.8.8)
이 DNS를 ‘재귀 DNS 서버’라고 부른다.
3. 루트 DNS 서버에 질의한다
재귀 DNS 서버도 IP를 모르면 루트 DNS 서버에 질문을 한다.
루트 DNS는 인터넷 DNS 구조의 가장 위에 있는 서버다.
하지만 루트 DNS는 직접 IP를 알려주지 않는다.
대신 이렇게 말해준다.
“.com을 담당하는 서버로 가봐”
4. TLD 서버(.com, .net 등)로 이동한다
그 다음은 TLD(Top-Level Domain) 서버로 요청이 전달된다.
예를 들어 google.com이라면:
- .com을 담당하는 DNS 서버로 이동
여기서도 아직 IP는 모른다.
대신 이렇게 안내한다.
“google.com을 담당하는 서버는 여기야”
5. 권한 DNS 서버에서 실제 IP를 받는다
이제 마지막 단계다.
권한 DNS 서버(authoritative DNS)에 도착하면:
- 해당 도메인의 실제 IP 주소를 반환한다
예:
- google.com → 142.250.xxx.xxx
이제 브라우저는 이 IP를 이용해서 서버에 접속한다.
6. 결과는 캐시에 저장되어 다음부터 빨라진다
이 과정은 처음 한 번만 느리다.
IP를 찾은 후에는:
- 브라우저 캐시
- 운영체제 캐시
- DNS 서버 캐시
에 저장된다.
그래서 다음부터는 훨씬 빠르게 접속된다.
DNS 구조를 한 줄로 정리하면
캐시 → 재귀 DNS → 루트 DNS → TLD DNS → 권한 DNS → IP 반환
이 흐름만 이해하면 DNS는 끝이다.
왜 DNS는 이렇게 복잡하게 구성되어 있을까
이 구조는 단순히 복잡한 것이 아니라 효율성과 안정성을 위한 것이다.
- 전 세계 분산 구조 → 장애 발생 시에도 안정적
- 캐시 활용 → 빠른 응답 속도
- 계층 구조 → 관리 효율성
즉, 인터넷 전체가 안정적으로 동작하기 위한 설계다.
비유로 이해하면 더 쉽다
DNS는 전화번호를 찾는 과정과 비슷하다.
- 도메인 = 사람 이름
- IP 주소 = 전화번호
- DNS = 전화번호부
이름을 입력하면 전화번호를 찾아주는 것과 같은 원리다.
한 줄로 정리하면
DNS는 도메인을 IP 주소로 변환하기 위해 캐시와 여러 단계의 DNS 서버를 거쳐 최종적으로 서버 주소를 찾아주는 인터넷의 핵심 시스템이다.