DNS란?
DNS(Domain Name System)는 도메인 이름을 IP 주소로 변환해주는 시스템이다.
인터넷에서 모든 장치는 IP 주소(예: 142.250.196.110)로 통신하지만, 인간은 숫자보다 의미 있는 이름(예: google.com)을 기억하기 쉽다. 이때 브라우저가 도메인을 입력하면, DNS가 해당 도메인에 대응하는 IP 주소를 찾아준다.

즉, DNS는 "사람이 이해하기 쉬운 도메인 이름"을 "컴퓨터가 이해할 수 있는 네트워크 주소(IP)"로 바꿔주는 인터넷의 전화번호부이다.
DNS의 기본 구조
DNS는 전세계에 분산되어 있는 계층적 네임 서버 구조로 이루어져 있다.
하나의 중앙 서버가 아닌, 전 세계 수백만 대의 서버가 역할을 분담한다.
| 계층 | 설명 | 예시 |
| Root DNS Server | 최상위 루트 도메인을 관리 (.com, .net, .org 등으로 분기) | “.” (dot) |
| TLD DNS Server | 최상위 도메인(Top-Level Domain)을 관리 | .com, .kr, .org |
| Authoritative DNS Server | 실제 도메인(IP 매핑 정보)을 저장 | google.com → 142.250.x.x |
이 계층 구조는 트리(Tree) 형태로 되어 있으며,
브라우저가 도메인을 해석할 때 상위 계층부터 순차적으로 탐색한다.

DNS 조회 과정(DNS Resolution)
브라우저에서 사용자가 www.example.com을 을 입력하면,
DNS는 다음과 같은 과정을 거쳐 IP 주소를 찾는다.
1. 브라우저 캐시 확인
: 브라우저는 이전에 방문했던 사이트의 DNS 응답(IP 주소)을 일정 시간 저장한다.
만약 같은 도메인을 일정 시간(TTL) 내에 다시 방문한다면, DNS 서버에 재질의하지않고 내부 캐시에서 바로 IP를 반환하며,
이 단계에서 IP 주소를 찾지 못할 경우 'OS 캐시'를 확인한다.
2. OS 캐시 확인(로컬)
: 이제 브라우저는 운영체제(윈도우즈나 맥, 리눅스)의 DNS 시스템에 질의한다. 운영체제는 DNS 캐시를 따로 관리하고 있으며,
- Widows : ipconfig /displaydns
- macOS : sudo killall -INFO mDNSRsponder
등으로 확인 가능하다.
그리고 이 시점에서 hosts 파일도 함께 검사한다.
- Widows : C:\Windows\System32\drivers\etc\hosts
- macOS / Linux : /etc/hosts
hosts 파일은 DNS보다 우선순위가 높은 수동 매핑 규칙이다.
예를들어 hosts 파일에 아래와 같이 적혀있다면 :
142.250.196.110 google.com
→ DNS 서버를 거치지 않고 이 IP로 직접 접속한다.
이 단계에서도 IP를 찾지 못한다면 '실제 네트워크 질의'가 실행된다.
3. 로컬 DNS 서버(Resolver)로 질의
: "KT, SK, LGU+ 같은 통신사 DNS 서버"
여기서 말하는 "로컬 DNS 서버"는 우리가 직접 설정하지 않아도 통신사(ISP)가 자동으로 제공하는 DNS 서버이다.
예를 들어:
- KT: 168.126.63.1, 168.126.63.2
- SK브로드밴드: 210.220.163.82
- LGU+: 164.124.101.2
즉, 우리가 KT 인터넷을 쓰고있다면, 우리집 공유기 또는 PC의 DNS 설정에 저 KT DNS 주소가 등록돼 있어서
이 DNS 서버가 우리의 질의를 받아 처리한다.
이 서버의 역할은 "DNS Resolver(재귀 질의자)"로, 우리를 대신해 IP 주소를 찾아오는 것이다.
4. Root DNS 서버 질의
: 로컬 DNS(예 : KT DNS)가 www.example.com의 IP를 모를때, 가장 먼저 루트 네임 서버(Root DNS Server)에 질의한다.
- 루트 서버는 전 세계에 13개 그룹 (A~M root)으로 운영됨.
- 미국, 유럽, 아시아에 분산되어 있음.
- 루트 서버는 “.com, .org, .kr” 같은 최상위 도메인을 관리하는 서버의 주소를 알려준다.
즉, KT DNS가 루트 서버에 이렇게 물어보는 것이다 :
".com 도메인을 관리하는 TLD 서버가 어디야?"
→ 루트 서버가 ".com TLD 서버는 이 주소들이야 ~" 하고 응답한다.
5. TLD(Top-Level Domain) 서버 질의
: 이제 KT DNS는 루트 서버가 알려준 .com TLD 서버로 질의한다.
"www.example.com의 네임서버(NS)는 어디야?"
TLD 서버는 example.com을 관리하는 Authoriative 서버의 주소를 알려준다.
예를들어 응답이 이렇게 온다 :
example.com → ns1.example.com, ns2.example.com
6. Authoritative(권한 있는) DNS 서버 질의
: KT DNS는 example.com의 Authoritative DNS 서버에게 직접 묻는다.
"www.example.com의 실제 IP주소가 뭐야?"
Authoritative 서버는 해당 도메인에 대한 실제 A레코드 (IPv4 주소)를 가지고있으며 이를 응답으로 반환한다.
응답 예시 :
www.example.com → 142.250.196.100
이 응답이 바로 최종 IP 주소다.
7. 응답 전달 및 캐싱
- KT DNS 서버는 이 응답(IP 주소)을 클라이언트에게 반환하고,
- 동시에 자체 캐시에 일정 시간(TTL) 저장한다.
→ 같은 도메인 요청이 또 들어오면 빠르게 응답 가능. - PC(운영체제)와 브라우저도 이 IP를 다시 캐시한다.
최종적으로 브라우저는 이 IP를 받아 TCP 연결을 시작하고,
HTTP 요청(GET /index.html HTTP/1.1)을 서버로 전송한다.
DNS 질의 방식 : 재귀(Recursive) vs 반복(Iterative)
DNS 서버 간의 질의는 두 가지 방식으로 이루어진다.
| 질의 방식 | 설명 |
| 재귀 질의 (Recursive Query) | 로컬 DNS 서버가 사용자를 대신해 전체 탐색 수행. 최종 IP 주소를 반환함. |
| 반복 질의 (Iterative Query) | 각 서버가 자신이 아는 다음 단계 서버 주소만 알려줌. 클라이언트가 직접 반복 요청. |
일반적으로 브라우저와 로컬 DNS 간에는 재귀질의,
DNS 서버 간에는 반복 질의가 사용된다.
DNS 캐싱
DNS는 매 요청마다 모든 서버를 탐색하지 않는다.
조회된 결과를 일정 기간 저장하여 반복 요청 시 즉시 응답한다.
- 브라우저 캐시 : 브라우저 내부에 저장된 최근 조회 도메인
- OS 캐시 : 운영체제 레벨의 DNS 테이블
- 로컬 DNS 서버 캐시 : ISP DNS가 최근 응답을 저장
- TTL(Time To Live) : 캐시 유효기간 (예: 300초, 1시간 등)
이 메커니즘을 통해 DNS 요청 트래픽을 줄이고 응답 속도를 향상시킬 수 있다.
DNS 레코드
도메인 하나에는 웹사이트, 이메일, 인증, 클라우드 서비스 등 여러 인터넷 서비스가 연결될 수 있다.
이때 각 서비스가 "이 도메인으로 접근할 때 어떤 서버로 연결되어야 하는가?", "이 도메인을 이용하는 서비스는 어디서 동작하는가?"를 정의하는 정보가 바로 DNS 레코드이다.
즉, DNS 레코드는 도메인 이름과 그 도메인에 연관된 서비스 위치를 연결하는 설정값이다.
이 레코드들은 해당 도메인을 관리하는 Authoritative DNS 서버(권한 있는 네임서버)에 저장되며,
레코드 종류에 따라 제공하는 정보가 달라진다.
| 유형 | 설명 | 예시 |
| A (Address) | 도메인 → IPv4 주소 매핑 | example.com → 93.184.216.34 |
| AAAA (IPv6) | 도메인 → IPv6 주소 매핑 | example.com → 2606:2800:220:1:248:1893:25c8:1946 |
| CNAME (Canonical Name) | 별칭 도메인 → 실제 도메인 매핑 | www → example.com |
| MX (Mail Exchange) | 이메일 서버 정보 | 10 mail.example.com |
| NS (Name Server) | 도메인의 네임서버 정보 | ns1.example.com |
| TXT (Text) | SPF, DKIM, 도메인 검증 등 문자열 데이터 | "v=spf1 include:_spf.google.com ~all" |
따라서 DNS 레코드는 도메인과 그에 연결된 모든 인터넷 서비스의 동작을 결정하는 핵심 구성 요소이다.
DNS 보안 확장(DNSSEC)

기본 DNS는 응답 데이터의 무결성을 보장하지 못한다. 중간자가 DNS 응답을 조작하면, 사용자는 가짜 사이트로 유도될 수 있다.
이를 방지하기 위해 DNSSEC(DENS Security Extensions)이 도입되었다.
DNSSEC은 각 DNS 응답에 디지털 서명을 추가하여 데이터가 변조되지 않았음을 검증한다.
이를 통해 DNS 요청의 위변조 공격(DNS Spoofing, Cache Poisoning)을 차단한다.
정리 및 요약
DNS는 인터넷의 모든 통신이 시작되는 이름 해석(Name Resolution) 시스템이다.
도메인 입력 → DNS 조회 → IP 주소 획득 → HTTP 요청으로 이어지는 흐름은 브라우저 동작의 가장 첫 단계이자 핵심 기반이다.
요약하면 :
- DNS의 역할 : 도메인을 IP 주소로 변환
- 구조 : Root → TLD → Authoritative 계층
- 과정 : 브라우저/OS 캐시 확인 → 재귀 질의 수행 → IP 반환 → 캐싱 저장
- 핵심 개념 : 레코드(A, MX, CNAME 등), TTL, DNSSEC
'Study > 인터넷 & 네트워크 기초' 카테고리의 다른 글
| 웹소켓(WebSocket)의 원리와 동작 방식 (0) | 2025.11.10 |
|---|---|
| 소켓의 동작 원리 (0) | 2025.11.10 |
| 3. 브라우저의 작동 원리 (0) | 2025.11.03 |
| 2. HTTP의 작동 원리 (0) | 2025.11.03 |
| 1. 인터넷의 작동 원리 (0) | 2025.11.03 |