edubun
한국어

DNS: 이름을 주소로 바꾸기

루트 네임서버 13개는 12개 기관이 전 세계 2047대의 기계로 운영합니다(root-servers.org, 2026년 10월 17일).

배경DNS가 생기기 전에는 아파넷에 연결된 컴퓨터마다 HOSTS.TXT라는 텍스트 파일 하나를 똑같이 복사해 두었습니다. 모든 호스트 이름과 주소가 그 파일에 적혀 있었습니다. 스탠퍼드 연구소의 네트워크 정보 센터가 이 파일을 관리했고, 각 기관은 그때그때 새 사본을 내려받았습니다. 네트워크가 커지자 그만큼 파일도 커졌고, 바뀐 내용이 퍼지는 데 시간이 오래 걸렸고, 이름이 겹치기도 했습니다. RFC 1034는 이 문제와 그것을 대신한 설계를 설명합니다. 새 설계는 이름을 나무 모양으로 나누고, 나뭇가지마다 그 가지를 맡아 돌보는 서버를 따로 두었습니다. DNS는 1987년 RFC 1034와 RFC 1035로 발표되었습니다.

이제 HOSTS.TXT 파일을 내려받는 컴퓨터는 없습니다. 지금 우리는 주소창에 198.51.100.20이 아니라 example.com을 치고, 모든 이름이 적힌 목록을 내려받는 사람도 없습니다. 그래도 라우터는 여전히 숫자만 알아듣습니다. 그래서 브라우저가 웹사이트로 패킷을 하나라도 보내려면 먼저 이름이 주소로 바뀌어야 합니다. 이 일을 하는 것이 도메인 네임 시스템(DNS)이고, Cloudflare 안내서는 DNS를 인터넷의 전화번호부라고 부릅니다.

도메인 이름은 나무를 따라 내려가는 길입니다

www.example.com을 오른쪽부터 읽어 보세요. 맨 위에는 보이지 않는 점으로 적는 루트가 있습니다. 그 아래가 com, org, kr 같은 최상위 도메인(TLD)입니다. com 아래에 example이, 그 아래에 www가 있습니다. 점으로 나뉜 조각 하나하나를 레이블이라고 하고, RFC 1035는 레이블 하나에 63바이트, 이름 전체에 255바이트까지 허용합니다. 나뭇가지마다 맡아 운영하는 기관이 다르기 때문에 컴퓨터 한 대가 세상의 모든 이름을 알 필요가 없습니다. HOSTS.TXT가 풀지 못한 문제를 이렇게 풀었습니다. 우리나라 사이트 주소 끝에 자주 붙는 kr도 이 나무의 한 가지입니다.

DNS 나무. www.example.com은 www → example → com → 루트로 이어지는 길입니다. 왼쪽부터 쓰지만 찾을 때는 루트부터 내려갑니다.

서버 네 종류, 단계 여덟 개

Cloudflare는 조회 한 번에 등장하는 서버를 네 가지로 나눕니다. 재귀 리졸버는 보통 통신사나 공개 DNS 서비스가 운영하며, 나 대신 여기저기 물으러 다닙니다. 루트 서버는 TLD 서버들이 어디 있는지 압니다. com 서버 같은 TLD 서버는 그 아래 도메인마다 어느 서버가 기록을 갖고 있는지 압니다. 도메인의 권한 있는 서버는 그 도메인의 실제 기록을 갖고 있다가 마지막 답을 줍니다. 캐시에 아무것도 없으면 조회는 여덟 단계를 거칩니다. 내 컴퓨터가 리졸버에 묻습니다. 리졸버가 루트에 묻고, 루트는 com 서버를 알려 줍니다. 리졸버가 com에 묻고, com은 도메인의 네임서버를 알려 줍니다. 리졸버가 그 네임서버에 묻고, 네임서버가 주소로 답하면, 리졸버가 그 주소를 내게 돌려줍니다. 학교 와이파이에 붙어 있다면 이때 묻는 리졸버는 대개 그 네트워크가 DHCP로 알려 준 곳입니다.

불러오는 중

끌어서 돌리고, 휠이나 두 손가락으로 확대하세요.

다음 단계를 여덟 번 누르거나 재생을 누르세요. 그다음 다시 찾기를 누르면 브라우저 캐시가 바로 답하고 컴퓨터 밖으로 나가는 메시지가 없습니다. 1분 기다린 뒤 다시 찾으면 브라우저 사본은 지났지만 OS 캐시에 아직 남아 있습니다. 1시간을 기다리면 3600초 TTL이 모든 곳에서 끝나 처음부터 다시 조회합니다.

두 번째 조회가 바로 끝나는 까닭

조회할 때마다 여덟 단계를 거친다면 DNS는 느려지고, 루트 서버는 쏟아지는 질문에 파묻힐 겁니다. 그래서 한 번 받은 답은 브라우저, 운영체제, 리졸버에 캐시로 남겨 둡니다. 기록마다 도메인 주인이 정한 유효 시간(TTL)이 초 단위로 붙어 있습니다. TTL 3600은 「이 답을 한 시간 동안 다시 써도 된다」는 뜻입니다. TTL을 짧게 두면 사이트를 다른 서버로 빨리 옮길 수 있고, 길게 두면 조회 횟수가 줄어듭니다. 루트 서버도 여러 곳에 퍼져 있습니다. a부터 m까지 이름이 붙은 루트 서버 13개는 2026년 10월 17일 기준 2047개의 인스턴스로 돌아가고 있었습니다.

질문 두 종류, 포트 하나

조회 한 번 안에는 성격이 다른 질문 두 가지가 섞여 있습니다. 내 컴퓨터는 리졸버에 재귀 질의를 보냅니다. 「마지막 답이나 오류를 달라」는 뜻입니다. 리졸버는 루트, TLD, 권한 있는 서버에 차례로 반복 질의를 보내고, 각 서버는 자기가 가진 것 가운데 가장 나은 답을 줍니다. 그 답은 대개 다음에 물어볼 서버를 알려 주는 정도입니다. DNS 메시지는 53번 포트로 갑니다. 질문도 답도 패킷 하나에 들어가니 보통 UDP를 쓰고, 큰 답이나 서버끼리 기록을 넘길 때는 TCP를 씁니다. RFC 7766은 TCP 지원을 제대로 된 DNS 구현이라면 빠짐없이 갖춰야 할 기능으로 정했습니다. 실제 조회도 직접 볼 수 있습니다. 대부분의 컴퓨터에서 nslookup example.com을 치면 어느 리졸버에 물었는지와 돌려받은 주소가 나옵니다.

레코드에는 주소 말고도 담기는 것이 있습니다

레코드담는 것예
AIPv4 주소www.example.com → 198.51.100.20
AAAAIPv6 주소 (RFC 3596)www.example.com → 2001:db8::20
CNAME대신 찾을 다른 이름shop.example.com → example.com
MX도메인의 메일 서버example.com → mail.example.com
NS권한 있는 네임서버example.com → ns1.example.com
  1. 캐시가 없을 때 www.example.com을 찾습니다. 리졸버가 묻는 서버를 순서대로 놓으세요.
  2. www.example.com의 마지막 답을 주는 서버는 어느 것입니까?
    • example.com의 권한 있는 서버
    • 루트 서버
    • com TLD 서버
    • 웹 서버
  3. Cloudflare 설명에서 캐시가 없는 조회는 몇 단계입니까?
  4. IPv6 주소를 담는 레코드는 무엇입니까?
    • AAAA
    • A
    • MX
    • CNAME
  5. 어떤 레코드의 TTL이 3600입니다. 캐시는 몇 분 동안 다시 쓸 수 있습니까?
  6. RFC 1035에서 레이블 하나(example 같은)의 최대 길이는 몇 바이트입니까?
  7. 이름이 붙은 루트 서버는 몇 개입니까?
  8. 10초 전에 찾은 이름을 브라우저 캐시가 60초 동안 보관합니다. 지금 다시 찾으면 컴퓨터 밖으로 나가는 DNS 메시지는 몇 개입니까?
  9. MX 레코드는 무엇에 씁니까?
    • 도메인의 메일 서버를 알려 줌
    • 웹 페이지를 저장함
    • IPv6 주소를 담음
    • 다른 레코드의 TTL을 정함
  10. DNS는 무엇을 대신했습니까?
    • 모든 컴퓨터에 복사한 HOSTS.TXT 파일 하나
    • 전화망
    • IP 주소
    • 라우터
자주 하는 실수
  • 「DNS 서버에 웹 페이지가 저장돼 있다.」 DNS는 주소, 메일 서버, 다른 이름 같은 레코드로만 답합니다. 페이지는 DNS가 알려 준 주소의 웹 서버에서 따로 받아 옵니다. 전화번호부에 가게 전화번호는 있어도 가게 물건은 없는 것과 같습니다.
  • 「사이트 주소를 바꾸면 모두가 곧바로 새 주소로 간다.」 브라우저, 운영체제, 리졸버는 TTL이 끝날 때까지 옛 답을 계속 씁니다. TTL이 3600이면 최대 한 시간 동안 옛 주소로 가는 사람이 생길 수 있습니다. 그래서 사이트를 옮기기 전에 TTL을 미리 짧게 줄여 두기도 합니다.
  • 「루트 서버는 컴퓨터 13대다.」 이름이 a부터 m까지 13개이고, 운영 기관은 12곳입니다. 2026년 10월 17일에는 전 세계 2047개 인스턴스에서 답하고 있었습니다.
  • 「내 컴퓨터가 루트 서버에 직접 묻는다.」 내 컴퓨터는 재귀 리졸버에 한 번 물을 뿐입니다. 루트에서 TLD 서버, 권한 있는 서버까지 다니는 일은 리졸버가 하고, 결과만 돌려줍니다.
선생님 메모그림을 그리기 전에 이름 몇 개를 같이 오른쪽부터 읽어 보세요. 학생들이 아는 포털이나 학교 홈페이지 주소가 좋습니다. 이 읽는 습관을 먼저 들여야 나무 그림이 거꾸로 서지 않습니다. 학생 그림에서 자주 빠지는 상자가 리졸버입니다. 컴퓨터와 따로 떨어진 상자로 그리고, 컴퓨터에서 나가는 화살표는 모두 거기서 멈추게 하세요. 시뮬레이터의 여덟 단계를 한 번 돌린 뒤 곧바로 다시 찾기를 누르면, 메시지가 하나도 나가지 않는 두 번째 조회가 캐시를 설명해 줍니다. 터미널을 쓸 수 있다면 학생들이 아는 사이트에 nslookup을 쳐 보는 것만으로도 그림이 실제가 됩니다.
핵심 정리
  • DNS는 이름을 주소로 바꾸며, 이름은 나무를 따라 오른쪽부터 읽습니다.
  • 재귀 리졸버 → 루트 → TLD → 권한 있는 서버. 캐시가 없으면 여덟 단계입니다.
  • 답은 레코드의 TTL(초) 동안 브라우저, OS, 리졸버에 캐시됩니다.
  • A는 IPv4, AAAA는 IPv6, CNAME은 별칭, MX는 메일, NS는 네임서버입니다.
이 과정의 출처 (28)
  • (checked 2026-10-17; reordered 2026-10-19: standards first, then official documentation, then operators and papers, history sources last)
  • IETF RFCs (rfc-editor.org): RFC 768 UDP (1980, 8-byte header)
  • RFC 791 IPv4 (1981, 32-bit addresses, "does not provide a reliable communication facility", TTL field "measured in units of seconds" but every module must decrease it by at least one, so it is only an upper bound)
  • RFC 792 ICMP (Time Exceeded)
  • RFC 801 NCP/TCP transition plan (1 January 1983)
  • RFC 894 Ethernet (1500-byte payload)
  • RFC 1034 and RFC 1035 DNS (1987, HOSTS.TXT kept by SRI-NIC, labels up to 63 octets and names up to 255, TTL in seconds)
  • RFC 1122 (127.0.0.0/8 loopback)
  • RFC 1918 private addresses (10/8, 172.16/12, 192.168/16)
  • RFC 2131 DHCP, RFC 3022 NAT, RFC 3596 AAAA records, RFC 3849 and RFC 5737 documentation addresses, RFC 4271 BGP-4, RFC 4291 IPv6 text form, RFC 6298 TCP retransmission timer (initial RTO 1 second)
  • RFC 6335 port ranges (0-1023, 1024-49151, 49152-65535)
  • RFC 7766 DNS over TCP, RFC 8200 IPv6 (128-bit addresses, Hop Limit)
  • RFC 8446 TLS 1.3 (one round-trip handshake)
  • RFC 9000 QUIC and RFC 9114 HTTP/3, RFC 9110 HTTP semantics (status code classes)
  • RFC 9293 TCP (three-way handshake, sequence numbers)
  • IANA: ip-parameters registry (recommended default TTL 64)
  • IPv4 free pool depleted 3 February 2011 (NRO and ARIN announcements)
  • Official documentation: MDN Web Docs "How does the Internet work?" (45 cables for 10 computers, switches, routers, MAC and IP addresses, internet and web)
  • "What is a URL?", "HTTP response status codes" (developer.mozilla.org)
  • Cloudflare Learning Center: "What is DNS?" (four kinds of DNS server, 8 steps of an uncached lookup, browser and OS caches, TTL)
  • "What is HTTP/3?" (cloudflare.com/learning)
  • Google Chrome Help, "Browse in Incognito mode" (support.google.com/chrome/answer/95464, checked 2026-10-19: Incognito limits what is saved to the device; websites and organisations that manage your network, like your school, employer or internet service provider, may be able to observe your activity)
  • Operators and papers: root-servers.org (13 root name servers run by 12 organisations, 2047 instances on 2026-10-17)
  • Jacobson and Karels 1988, Congestion Avoidance and Control (loss mostly congestion)
  • History blocks only: UCLA Samueli School of Engineering, Internet50 (first ARPANET message "LO", UCLA to SRI, 29 October 1969, 22:30)
  • historyofinformation.com and Wikipedia ARPANET (Kline)
  • Spiceworks/SRI history (HOSTS.TXT kept by SRI-NIC)
  • Numbers (2^32, 2^96, 45 and 6 cables, packet counts, round-trip times)

확인한 날: 2026-10-17