주소창에 글자 쳤을 뿐인데… DNS 작동 원리, 단계별로 다 알려드립니다

주소창에 'google.com' 쳤을 뿐인데, 뒤에서 무슨 일이 벌어지는 걸까요?

DNS 작동 원리를 처음 접했을 때 저도 솔직히 멘붕이었습니다. 'IP 주소로 변환해준다'는 설명은 들었는데, 그래서 어떻게요? 가 항상 물음표로 남았거든요. 그냥 주소창에 글자 몇 자 쳤을 뿐인데 0.1초도 안 돼서 페이지가 뜨잖아요. 그 짧은 시간 안에 사실 꽤 복잡한 일이 벌어지고 있습니다.

이 글에서는 도메인을 입력한 순간부터 웹페이지가 뜨기까지 총 7단계를 친구한테 설명하듯 풀어드릴게요. 어려운 네트워크 용어가 나오면 바로 옆에 쉬운 비유를 붙여드릴 테니 걱정 안 하셔도 됩니다.

DNS = 인터넷 전화번호부 (이름 보고 번호 찾아주는 시스템)

실제로 웹 개발 공부를 시작하면서 도메인을 직접 연결해봤는데, DNS 설정을 잘못 건드려서 사이트가 2시간 동안 날아간 적이 있어요 ㅠ;; 그때 제대로 공부해두길 잘했다 싶었습니다. 이 글 끝까지 읽으시면 그런 실수는 안 하실 수 있을 거예요!

주소창에 'google.com' 쳤을 뿐인데, 뒤에서 무슨 일이 벌어지는 걸까요?

DNS 작동 원리, 7단계로 완전 해부하기

DNS가 뭔지 딱 한 줄로 정리하면

DNS(Domain Name System)는 사람이 읽기 쉬운 도메인 이름(예: google.com)을 컴퓨터가 이해하는 IP 주소(예: 142.250.196.110)로 바꿔주는 시스템입니다. 핸드폰 연락처에 '엄마'라고 저장해두면 번호 안 외워도 전화할 수 있잖아요. DNS가 딱 그 역할이에요.

도메인 = 사람이 쓰는 이름 / IP 주소 = 컴퓨터가 쓰는 번호

실제로 일어나는 7단계 과정

1. 브라우저 캐시 확인 브라우저가 제일 먼저 하는 일은 "나 이 도메인 전에 방문한 적 있나?" 확인입니다. 크롬은 기본적으로 최근 방문한 도메인의 IP를 짧게는 60초, 길게는 몇 시간씩 저장해둬요. 캐시에 있으면 바로 접속, 없으면 다음 단계로 넘어갑니다.

2. OS(운영체제) 캐시 확인 브라우저 캐시에 없으면 이번엔 운영체제한테 물어봅니다. 윈도우나 맥에도 DNS 캐시가 따로 있거든요. 여기서도 못 찾으면 3단계로 넘어가요.

3. hosts 파일 확인 운영체제 안에 'hosts'라는 텍스트 파일이 있는데, 여기에 수동으로 도메인-IP 매핑을 적어둘 수 있어요. 개발자들이 로컬 테스트할 때 많이 쓰는 방법입니다. (윈도우 기준 C:\Windows\System32\drivers\etc\hosts에 있어요)

4. 리졸버(Recursive Resolver)에게 질문 세 군데 다 없으면 이제 진짜 DNS 조회가 시작됩니다. 인터넷 공급자(KT, SKT 등)나 구글(8.8.8.8), 클라우드플레어(1.1.1.1) 같은 리졸버 서버에 "이 도메인 IP가 뭐야?" 하고 물어봐요. 리졸버는 사서처럼 대신 찾아주는 역할입니다.

5. 루트 네임서버 조회 리졸버도 모르면 루트 네임서버에 물어봅니다. 루트 서버는 전 세계에 딱 13개 클러스터(실제 서버 수는 훨씬 많음)가 있고, ".com이면 이쪽 서버한테 물어봐" 식으로 방향만 알려줘요.

6. TLD 네임서버 조회 루트가 알려준 TLD(Top Level Domain) 서버, 즉 .com 담당 서버에 다시 물어봅니다. 여기서 "google.com은 구글 네임서버한테 물어봐" 라고 알려줘요.

7. 권한 있는 네임서버(Authoritative NS)에서 최종 답변 드디어 google.com을 실제로 관리하는 네임서버에 도착! 여기서 정확한 IP 주소를 받아서 브라우저에게 전달합니다. 브라우저는 그 IP로 서버에 접속해 페이지를 받아오는 거예요.

DNS 레코드 종류도 알아두면 좋아요

레코드 종류역할예시
A 레코드도메인 → IPv4 주소google.com → 142.250.x.x
AAAA 레코드도메인 → IPv6 주소최신 IPv6 환경 대응
CNAME도메인 → 다른 도메인www → 루트 도메인 연결
MX 레코드메일 서버 지정이메일 수신 경로 설정
TXT 레코드텍스트 정보 저장도메인 소유권 인증, SPF 등

TTL(Time To Live)이라는 숫자도 중요한데요, 이건 "이 정보를 몇 초 동안 캐시해도 돼?" 하는 유효기간입니다. 도메인 이전 직전에는 TTL을 300(5분)으로 낮춰두는 게 정석이에요. 저도 사이트 이전할 때 이걸 몰라서 48시간 동안 일부 사용자한테 구 서버로 연결되는 걸 경험했습니다 ㅠ

DNS 작동 원리, 7단계로 완전 해부하기

직접 DNS 설정 바꿔보면서 배운 것들 (실패담 포함)

제가 처음 개인 블로그에 커스텀 도메인을 붙이려고 했을 때 이야기입니다. 도메인은 가비아에서 샀고, 호스팅은 다른 업체였는데요. DNS 설정이 뭔지도 모르고 무작정 네임서버를 바꿨다가 사이트가 2시간 넘게 먹통이 됐어요.

제가 실제로 겪은 DNS 전파 지연 상황

당시 상황을 재구성하면 이렇습니다.

1. 가비아 관리 페이지에서 네임서버를 호스팅 업체 NS로 변경 2. 30분 뒤 확인 → 여전히 구 서버로 연결됨 3. 1시간 뒤 → 내 PC에서는 됨, 친구 폰에서는 안 됨 4. 2시간 뒤 → 대부분 정상, 일부 통신사 사용자는 아직 구 서버

이게 바로 DNS 전파(Propagation) 때문이에요. 전 세계 수천 개의 리졸버 서버가 각자 다른 TTL 캐시를 갖고 있어서, 변경 사항이 모두에게 동시에 반영되지 않습니다. 보통 24~48시간이 걸리는데, 미리 TTL을 낮춰두면 훨씬 빠르게 전파됩니다.

직접 DNS 조회 확인하는 법 (터미널에서 5분이면 됨)

윈도우 CMD나 맥 터미널을 열고 아래 명령어를 쳐보세요.

  • nslookup google.com → 구글 DNS 조회 결과 확인
  • nslookup google.com 8.8.8.8 → 구글 공개 DNS(8.8.8.8)로 직접 조회
  • ipconfig /flushdns (윈도우) → 로컬 DNS 캐시 초기화
  • sudo dscacheutil -flushcache (맥) → 맥 DNS 캐시 초기화

저는 사이트 이전할 때마다 nslookup으로 어느 IP로 연결되는지 직접 확인하는 버릇이 생겼어요. 캐시 때문에 내 PC에서만 안 보이는 건지, 실제로 전파가 안 된 건지 구분할 수 있어서 진짜 유용합니다.

DNS 서버를 직접 바꾸면 뭐가 달라지나요?

인터넷 공급자 기본 DNS 대신 구글(8.8.8.8)이나 클라우드플레어(1.1.1.1)로 바꾸면 체감 속도가 달라질 수 있어요. 제가 클라우드플레어 1.1.1.1로 바꿨을 때 DNS 응답 시간이 기존 통신사 DNS 대비 약 30~50ms 빨라졌습니다. 체감은 미미하지만, 프라이버시 측면에서 클라우드플레어는 쿼리 로그를 24시간 내 삭제한다고 공식 발표하고 있어서 그 이유로 쓰는 분들도 많아요.

DNS 서버 변경 = 전화 교환원 바꾸기 (더 빠른 교환원으로 갈아타는 것)

직접 DNS 설정 바꿔보면서 배운 것들 (실패담 포함)

자주 묻는 질문 — DNS에 대해 진짜 많이 물어보시는 것들

Q. DNS 캐시를 지우면 인터넷이 느려지나요?

A. 일시적으로 첫 접속이 약간 느려질 수 있어요. 캐시가 없으니 처음 방문하는 사이트마다 DNS 조회를 새로 해야 하거든요. 하지만 보통 수십 ms 수준이라 체감하기 어렵고, 오래된 캐시 때문에 잘못된 서버로 연결되는 문제를 고칠 때는 꼭 해줘야 합니다.

Q. 도메인 바꿨는데 왜 어떤 사람은 새 사이트가 보이고 어떤 사람은 옛날 사이트가 보이나요?

A. 앞서 설명한 DNS 전파 지연 때문입니다. 각 리졸버 서버가 갖고 있는 캐시 TTL이 다 다르거든요. TTL이 86400(24시간)으로 설정돼 있다면 그 리졸버는 최대 24시간 동안 구 IP를 계속 알려줄 수 있어요. 미리 TTL을 300~600으로 낮춰두는 게 최선입니다.

Q. HTTPS와 DNS는 무슨 관계인가요?

A. DNS는 IP 주소를 찾아주는 역할이고, HTTPS는 그 IP 서버와 통신할 때 데이터를 암호화하는 역할입니다. 역할이 달라요. 다만 최근엔 DNS 쿼리 자체도 도청될 수 있다는 문제 때문에 'DNS over HTTPS(DoH)'라는 방식이 등장했어요. 클라우드플레어 1.1.1.1이나 구글 8.8.8.8 모두 DoH를 지원합니다.

Q. 무료 DNS와 유료 DNS, 실제로 차이가 있나요?

A. 개인 블로그나 소규모 사이트라면 무료 DNS(클라우드플레어 무료 플랜 등)로도 충분합니다. 유료 플랜은 주로 응답 속도 SLA 보장, DNSSEC 고급 설정, 트래픽 분산(지오 라우팅) 같은 기업용 기능이 추가돼요. 제 개인 프로젝트 5개는 전부 클라우드플레어 무료로 잘 굴러가고 있습니다.

오늘 당장 DNS 한 번 직접 확인해보세요!

여기까지 읽으셨으면 이제 DNS 작동 원리가 꽤 머릿속에 그려지실 거예요. 어렵게 느껴졌던 게 사실 전화번호부 찾는 것과 별로 다르지 않죠?

오늘 배운 핵심만 딱 세 줄로 정리하면:

  • DNS는 도메인을 IP로 바꿔주는 인터넷 전화번호부이며, 브라우저 캐시 → OS 캐시 → 리졸버 → 루트 → TLD → 권한 서버 순으로 7단계를 거칩니다.
  • DNS 전파는 최대 48시간 걸릴 수 있으며, 이전 전 TTL을 300~600으로 낮춰두는 게 핵심 팁입니다.
  • 공개 DNS(1.1.1.1 또는 8.8.8.8)로 바꾸면 응답 속도와 프라이버시 측면에서 이점이 있습니다.

지금 바로 해볼 수 있는 것 하나 추천드릴게요. 터미널이나 CMD를 열고 nslookup 내가좋아하는사이트.com 을 쳐보세요. 어떤 IP로 연결되는지, 어느 DNS 서버가 응답했는지 바로 볼 수 있습니다. 이거 한 번 해보면 DNS가 훨씬 친근하게 느껴질 거예요.

궁금하신 점이나 직접 겪으신 DNS 관련 경험이 있으시면 댓글로 남겨주세요! 비슷한 상황 겪으신 분들한테 분명 도움이 됩니다 😊 이 글이 도움이 되셨다면 구독도 눌러주시면 감사하겠습니다!

오늘 당장 DNS 한 번 직접 확인해보세요!

이 블로그의 인기 게시물

이메일 답장 10개를 5분 만에 끝내는 ChatGPT 활용법 (프롬프트 공개)

엑셀 수식, 저도 몰랐어요 - AI한테 맡겼더니 다 되더라고요

AI한테 맡겼더니 오히려 일이 늘었던 이유, 이 단계를 건너뛰어서였어요

ChatGPT에 질문만 던지고 있다면, 지금 절반도 못 쓰고 있는 거예요

출근길 10분으로 하루 할 일을 AI가 자동 정리하는 아침 루틴