2025-09-22 00:52

  • DNS는 사람이 읽을 수 있는 도메인 이름(예: google.com)을 컴퓨터가 이해하는 IP 주소(예: 172.217.175.46)로 변환하는 인터넷의 핵심 시스템이다.

  • 이 시스템은 전 세계에 분산된 계층적 서버 네트워크를 통해 작동하며, 사용자가 요청한 도메인의 IP 주소를 효율적으로 찾아준다.

  • DNS는 단순 주소 변환을 넘어 이메일 라우팅, 부하 분산, 보안 강화(DNSSEC, DoH) 등 현대 인터넷의 안정성과 속도, 보안을 책임지는 중추적인 역할을 수행한다.

DNS 핸드북 인터넷의 전화번호부 모든 것을 파헤치다

인터넷을 사용하면서 우리는 매일 google.com이나 naver.com 같은 주소를 웹 브라우저에 입력한다. 너무나 자연스러운 이 과정 뒤에는 인터넷의 가장 근본적인 시스템 중 하나인 **DNS(Domain Name System)**가 숨어있다. DNS가 없다면 우리는 친구에게 “172.217.175.46으로 접속해봐”라고 말해야 할지도 모른다.

DNS는 복잡한 숫자 IP 주소의 세계와 인간 친화적인 문자 도메인의 세계를 연결하는 거대한 번역가이자 안내자다. 이 핸드북에서는 DNS가 왜 만들어졌는지, 어떤 구조로 어떻게 작동하는지, 그리고 현대 인터넷에서 어떤 중요한 역할들을 수행하고 있는지 그 모든 것을 깊이 있게 탐구한다.

1. DNS의 탄생 배경 인터넷의 성장이 낳은 필연적 해결책

초기 인터넷, 즉 ARPANET 시절에는 네트워크에 연결된 모든 컴퓨터의 이름과 IP 주소 목록을 HOSTS.TXT라는 하나의 텍스트 파일에 저장하고 관리했다. 새로운 컴퓨터가 네트워크에 추가될 때마다 스탠퍼드 연구소(SRI)에서 이 파일을 수동으로 업데이트했고, 다른 모든 컴퓨터는 이 파일을 주기적으로 다운로드하여 최신 목록을 유지해야 했다.

네트워크의 규모가 작았을 때는 이 방식이 유효했다. 하지만 인터넷이 폭발적으로 성장하면서 몇 가지 심각한 문제에 직면했다.

  • 확장성의 한계: 컴퓨터 수가 기하급수적으로 늘어나자 HOSTS.TXT 파일의 크기가 감당할 수 없을 만큼 커졌다.

  • 중앙 집중의 병목 현상: 모든 업데이트가 스탠퍼드 연구소 한 곳에서 이루어져 트래픽과 관리 부담이 집중되었다.

  • 이름 충돌: 서로 다른 조직에서 같은 컴퓨터 이름을 사용하려는 경우가 발생하면서 이름 충돌을 피할 수 없었다.

  • 동기화 지연: 파일 업데이트 후 모든 컴퓨터에 전파되기까지 시간이 걸려 정보의 일관성을 유지하기 어려웠다.

이러한 문제들을 해결하기 위해 1983년, 폴 모카페트리스(Paul Mockapetris)가 DNS를 설계했다. DNS의 핵심 아이디어는 **‘분산’**과 **‘계층’**이었다. 하나의 거대한 파일을 중앙에서 관리하는 대신, 전 세계에 흩어져 있는 여러 서버가 도메인 이름 정보를 나누어 관리하는 방식이다. 이는 인터넷의 규모가 아무리 커져도 유연하게 확장할 수 있는 기반을 마련했으며, 오늘날까지도 인터넷이 원활하게 작동하는 핵심 원리로 남아있다.

2. DNS의 작동 원리 거대한 분산 데이터베이스의 협업

DNS는 마치 거대한 전 세계적 전화번호부와 같다. 우리가 ‘구글’이라는 이름으로 ‘구글의 전화번호(IP 주소)‘를 찾는 것처럼, DNS는 google.com이라는 도메인 이름으로 해당 서버의 IP 주소를 찾아준다. 이 과정은 눈 깜짝할 사이에 일어나지만, 그 뒤에서는 여러 DNS 서버들의 유기적인 협업이 이루어진다.

DNS 쿼리(Query, 질의) 과정에 참여하는 주요 구성 요소는 다음과 같다.

  • DNS 리졸버 (Resolver / Recursive Server): 사용자와 가장 가까운 DNS 서버. 주로 인터넷 서비스 제공업체(ISP)가 운영한다. 사용자의 요청을 받아 루트 서버부터 시작해 필요한 정보를 찾아 사용자에게 최종 결과를 전달하는 ‘해결사’ 역할을 한다.

  • 루트 네임서버 (Root Name Server): 전 세계에 13개(물리적으로는 수백 개)만 존재하는 DNS 계층 구조의 최상위 서버. TLD 서버의 주소를 알려주는 ‘총괄 안내원’이다.

  • TLD 네임서버 (Top-Level Domain Name Server): .com, .net, .kr 등 최상위 도메인을 관리하는 서버. 특정 도메인(예: google.com)을 관리하는 권한 있는 네임서버의 주소를 알려주는 ‘중간 관리자’다.

  • 권한 있는 네임서버 (Authoritative Name Server): 특정 도메인(예: google.com)의 실제 IP 주소 정보를 최종적으로 보유하고 있는 ‘실무 담당자’다.

DNS 쿼리 과정: www.google.com을 찾아가는 여정

  1. 사용자 요청 및 캐시 확인: 사용자가 브라우저에 www.google.com을 입력하면, 컴퓨터는 먼저 자체 캐시(기록)에 해당 주소가 있는지 확인한다. 없으면 설정된 DNS 리졸버(예: KT, SKT DNS 서버)에게 IP 주소를 물어본다.

  2. 리졸버의 쿼리 시작: DNS 리졸버는 자신의 캐시에 정보가 있는지 확인한다. 없으면, 가장 높은 곳인 루트 네임서버에게 ” www.google.com의 IP 주소 아세요?”라고 물어본다.

  3. 루트 서버의 응답: 루트 서버는 전체 주소를 모른다. 대신 .com을 담당하는 TLD 네임서버의 주소를 알려주며 “거기에 가서 물어보세요”라고 응답한다.

  4. TLD 서버의 응답: 리졸버는 전달받은 TLD 네임서버에게 다시 ” www.google.com 주소 아세요?”라고 묻는다. TLD 서버 역시 전체 주소는 모르지만, google.com 도메인을 관리하는 권한 있는 네임서버의 주소를 알려주며 “이제 저곳이 최종 담당자니 물어보세요”라고 응답한다.

  5. 권한 있는 네임서버의 최종 응답: 마지막으로 리졸버는 google.com의 권한 있는 네임서버에게 ” www.google.com의 IP 주소가 뭔가요?”라고 묻는다. 이 서버는 해당 도메인의 모든 정보를 가지고 있으므로 “IP 주소는 172.217.175.46 입니다”라고 최종 답변을 해준다.

  6. 결과 전달 및 캐싱: 리졸버는 이 IP 주소를 사용자 컴퓨터에게 전달하고, 다음 요청을 위해 일정 시간(TTL, Time To Live 값에 따라) 동안 이 정보를 자신의 캐시에 저장한다.

  7. 접속: 사용자 컴퓨터는 마침내 얻은 IP 주소를 통해 www.google.com 서버에 접속하여 웹페이지를 받아온다.

이 모든 과정이 밀리초(ms) 단위로 일어나기 때문에 우리는 지연을 거의 느끼지 못한다. 특히 캐싱(Caching) 덕분에 한번 조회된 주소는 다시 여러 단계를 거치지 않고 리졸버나 PC의 캐시에서 바로 응답할 수 있어 DNS 조회 속도를 획기적으로 높인다.

3. DNS 레코드의 종류 도메인의 상세 정보 명세서

권한 있는 네임서버는 단순히 IP 주소만 저장하지 않는다. 도메인과 관련된 다양한 정보들을 레코드(Record) 형식으로 저장하고 관리한다. 각 레코드는 저마다의 목적을 가지며, 이를 통해 웹사이트 연결, 이메일 전송 등 다양한 서비스가 가능하다.

레코드 종류이름기능 및 설명예시
AAddress Record도메인 이름을 IPv4 주소(32비트)에 매핑한다. 가장 기본적이고 필수적인 레코드다.example.com. IN A 93.184.216.34
AAAAIPv6 Address Record도메인 이름을 IPv6 주소(128비트)에 매핑한다. ‘쿼드 A’라고 읽는다.example.com. IN AAAA 2606:2800:220:1...
CNAMECanonical Name Record특정 도메인 이름의 별칭(Alias)을 정의한다. 하나의 IP 주소에 여러 도메인을 연결할 때 유용하다.www.example.com. IN CNAME example.com.
MXMail Exchange Record해당 도메인의 이메일을 처리하는 메일 서버를 지정한다. 우선순위(Priority) 값을 가진다.example.com. IN MX 10 mail.example.com.
NSName Server Record해당 도메인에 대한 권한을 가진 네임서버를 지정한다. TLD 서버가 이 정보를 참조한다.example.com. IN NS ns1.example.com.
TXTText Record도메인에 대한 텍스트 정보를 저장한다. 주로 SPF(메일 발신자 정책 프레임워크), DKIM(도메인키 인증 메일) 등 보안 목적으로 사용된다.example.com. IN TXT "v=spf1 include:_spf.google.com ~all"
SRVService Record특정 서비스(예: 인터넷 전화, 메신저)를 제공하는 서버의 호스트와 포트 정보를 지정한다._sip._tcp.example.com. IN SRV 10 60 5060 bigbox.example.com.
PTRPointer RecordIP 주소에 해당하는 도메인 이름을 알려준다. (역방향 조회, Reverse DNS lookup) A 레코드와 반대 역할을 한다.34.216.184.93.in-addr.arpa. IN PTR example.com.

4. 심화 탐구 현대 DNS의 진화

DNS는 탄생 이래로 인터넷 환경 변화에 맞춰 끊임없이 진화해왔다. 특히 보안, 개인정보보호, 성능 최적화 측면에서 중요한 발전이 이루어졌다.

가. DNSSEC: DNS 정보의 신뢰를 보장하다

기본적인 DNS 프로토콜은 보안에 취약했다. 해커가 DNS 응답을 가로채 위조된 IP 주소를 보내면, 사용자는 정상적인 사이트처럼 보이는 피싱 사이트로 접속하게 될 수 있다. 이를 DNS 스푸핑(Spoofing) 또는 **DNS 캐시 포이즈닝(Cache Poisoning)**이라 한다.

**DNSSEC(Domain Name System Security Extensions)**은 이러한 위협에 대응하기 위해 만들어졌다. DNSSEC은 공개키 암호화 기술을 이용해 DNS 응답에 디지털 서명을 추가한다. DNS 리졸버는 이 서명을 검증함으로써 수신한 DNS 정보가 중간에 변조되지 않았고, 신뢰할 수 있는 출처에서 온 것임을 확인할 수 있다. 이를 통해 DNS 데이터의 무결성인증을 보장한다.

나. DoH & DoT: DNS 쿼리를 암호화하다

사용자가 어떤 웹사이트를 방문하는지에 대한 정보는 매우 민감한 개인 정보다. 하지만 전통적인 DNS 쿼리는 암호화되지 않은 평문(Plain Text)으로 전송되기 때문에, 인터넷 서비스 제공업체(ISP)나 중간의 네트워크 관리자가 사용자의 인터넷 활동을 쉽게 엿볼 수 있었다.

**DoT(DNS over TLS)**와 **DoH(DNS over HTTPS)**는 DNS 쿼리 자체를 암호화하여 이러한 프라이버시 문제를 해결하는 프로토콜이다.

  • DoT: DNS 통신을 TLS 암호화 채널을 통해 전송한다. 전용 포트(853번)를 사용한다.

  • DoH: DNS 통신을 웹 트래픽 암호화에 사용하는 HTTPS 프로토콜에 숨겨서 전송한다. 표준 HTTPS 포트(443번)를 사용하므로, 네트워크 관리자가 DNS 트래픽을 식별하고 차단하기 더 어렵다.

이 기술들은 사용자의 온라인 프라이버시를 강화하는 중요한 수단으로 자리 잡고 있다.

다. 지능형 DNS: 성능을 최적화하다

DNS는 단순한 주소 변환을 넘어 트래픽을 효율적으로 관리하는 지능형 시스템으로 발전했다.

  • DNS 기반 로드 밸런싱 (Load Balancing): 하나의 도메인 이름에 여러 개의 서버 IP 주소(A 레코드)를 등록해두고, DNS 쿼리가 들어올 때마다 다른 IP 주소를 응답해주는 방식(예: 라운드 로빈). 이를 통해 특정 서버에 트래픽이 몰리는 것을 방지하고 부하를 분산시킬 수 있다.

  • 지오DNS (GeoDNS): DNS 서버가 쿼리를 보낸 사용자의 지리적 위치(IP 주소 기반)를 파악하여 가장 가까운 서버의 IP 주소를 알려주는 기술이다. 예를 들어, 한국 사용자가 글로벌 서비스에 접속하면 한국에 있는 데이터 센터로, 미국 사용자는 미국 데이터 센터로 연결해준다. 이는 접속 속도를 높이고 사용자 경험을 크게 향상시킨다.

결론: 보이지 않는 인터넷의 지휘자

DNS는 화려한 웹사이트나 애플리케이션처럼 우리 눈에 직접 보이지는 않는다. 하지만 이 시스템이 단 몇 분이라도 멈춘다면, 우리는 즐겨 찾는 웹사이트에 접속할 수 없고, 이메일을 보낼 수도 없으며, 사실상 인터넷의 거의 모든 활동이 마비될 것이다.

단순한 HOSTS.TXT 파일에서 시작된 DNS는 분산과 계층이라는 천재적인 아이디어를 바탕으로 인터넷의 폭발적인 성장을 가능하게 했다. 그리고 오늘날에는 보안(DNSSEC), 프라이버시(DoH/DoT), 성능 최적화(GeoDNS)와 같은 시대적 요구에 부응하며 끊임없이 진화하고 있다. DNS는 보이지 않는 곳에서 수십억 개의 주소를 지휘하며 현대 인터넷을 떠받치고 있는, 가장 중요하고 위대한 발명품 중 하나임이 틀림없다.