우리가 브라우저 주소창에 google.com을 입력할 때, 컴퓨터는 이 이름을 이해하지 못합니다. 컴퓨터는 숫자로 이루어진 IP 주소만을 알고 있기 때문입니다. 이 사이의 가교 역할을 하며 이름을 주소로 바꿔주는 시스템이 바로 DNS(Domain Name System)입니다
DNS의 계층적 구조
DNS는 전 세계에 흩어져 있는 수많은 서버가 협력하는 계층형 분산 데이터베이스입니다. 도메인 이름의 계층에 따라 관리 주체가 나뉩니다
- Root DNS 서버: DNS 계층의 최상위 서버입니다. TLD 서버의 위치를 안내합니다
- TLD(Top-Level Domain) 서버:
.com,.net,.org와 같은 최상위 도메인을 관리합니다 - Authoritative(권한 있는) DNS 서버: 실제 도메인의 IP 정보를 가지고 있는 최종 목적지입니다
- Recursive(재귀적) Resolver: 사용자의 요청을 받아 위 서버들을 차례로 방문하며 답을 찾아주는 가이드 역할을 합니다
도메인 이름의 구성: FQDN
도메인 이름은 오른쪽에서 왼쪽으로 갈수록 하위 계층을 의미합니다. 전체 구조를 명확히 표현한 이름을 FQDN(Fully Qualified Domain Name)이라고 부릅니다
| 계층 | 예시 | 설명 |
|---|---|---|
| Root | . |
모든 도메인의 끝에 생략된 마침표 |
| TLD | com |
최상위 도메인 |
| SLD | google |
차상위 도메인 (사용자가 등록한 이름) |
| Subdomain | www |
특정 서비스나 호스트를 지칭 |
DNS 쿼리 과정: 재귀적 쿼리 흐름
사용자가 주소를 입력했을 때 IP를 찾아가는 과정은 ‘재귀적 쿼리’와 ‘반복적 쿼리’의 조합으로 이루어집니다
sequenceDiagram
autonumber
participant U as 사용자(PC)
participant R as Recursive Resolver
participant RT as Root Server
participant TLD as TLD Server (.com)
participant AUTH as Authoritative Server
U->>R: google.com 주소 알려줘
R->>RT: google.com 어디 있어?
RT-->>R: .com TLD 서버로 가봐
R->>TLD: google.com 어디 있어?
TLD-->>R: google의 DNS 서버로 가봐
R->>AUTH: google.com 주소 뭐야?
AUTH-->>R: 142.250.206.206이야
R-->>U: IP 주소는 142.250.206.206이야
사용자는 Resolver에게 한 번만 물어보지만(재귀적), Resolver는 여러 서버를 직접 방문하며 답을 구합니다(반복적)
주요 DNS 레코드 종류
DNS는 단순히 IP 주소만 저장하는 것이 아니라, 다양한 목적의 정보를 리소스 레코드(Resource Record) 형태로 관리합니다
| 레코드 | 설명 | 용도 |
|---|---|---|
| A | 도메인을 IPv4 주소로 매핑 | 가장 기본적인 주소 연결 |
| AAAA | 도메인을 IPv6 주소로 매핑 | 차세대 IP 주소 연결 |
| CNAME | 도메인에 대한 별칭 지정 | blog.site.com을 site.com으로 연결 |
| MX | 메일 수신 서버 지정 | 이메일 서비스 연동 |
| TXT | 텍스트 정보 저장 | 소유자 인증, 보안 설정(SPF/DKIM) |
DNS 캐싱과 TTL
모든 요청을 매번 Root 서버부터 찾아가면 인터넷 속도가 매우 느려질 것입니다. 이를 해결하기 위해 캐싱(Caching)을 사용합니다
- Recursive Resolver 캐싱: 이전에 찾은 결과를 일정 시간 보관합니다
- 브라우저/OS 캐싱: 사용자의 컴퓨터 내부에서도 최근 접속한 주소를 기억합니다
- TTL(Time To Live): DNS 레코드가 캐시에 머물 수 있는 유효 시간을 의미합니다. TTL이 길면 서버 부하가 줄지만, IP 변경 시 전파 속도가 느려질 뿐입니다
보안의 핵심: DNSSEC
DNS는 설계 당시 보안보다 효율성을 중시했기에 데이터 위조에 취약합니다. 이를 보완하기 위해 디지털 서명을 추가한 DNSSEC 기술이 도입되어 데이터의 신뢰성을 보장합니다
정리
- DNS는 도메인 이름을 IP 주소로 바꾸는 분산 데이터베이스 시스템입니다
- Root, TLD, Authoritative 서버가 계층적으로 정보를 관리합니다
- 효율성을 위해 계층별 캐싱과 TTL 설정을 활용합니다
다음 글에서는 우리가 매일 사용하는 웹 프로토콜인 HTTP/1.1과 HTTP/2의 차이를 분석합니다