안녕하세요, 자바파커입니다.
주소창에
example.com을 치고 엔터를 누르면, 브라우저는 바로 그 사이트로 갈까요?
아닙니다. 먼저 물어봅니다. 사람은 이름을 쓰지만 컴퓨터는 104.20.23.154 같은 숫자 주소로만 찾아갈 수 있습니다. 그래서 출발하기 전에 "이 이름, 주소가 뭐예요?"라고 묻는 단계가 있고, 그 질문을 받아 주는 곳이 DNS입니다.
이 내용을 44초 영상으로도 정리했습니다. 카페 사장님이 주소창에 이름을 치는 장면부터 보시면 바로 감이 옵니다.
DNS란 무엇인가 — 이름을 주소로 바꿔 주는 안내소
DNS(Domain Name System)는 도메인 이름을 IP 주소로 바꿔 주는 시스템입니다. 영상에서는 이렇게 비유했습니다.
| 영상 속 그림 | 실제 |
|---|---|
| 주소창에 적은 가게 이름 | 도메인 이름 (example.com) |
| 보라색 안내소 | DNS 리졸버 (통신사, 회사, 8.8.8.8 같은 공용 DNS) |
| 주문서가 받아 온 주소 카드 | IP 주소 (104.20.23.154) |
| 브라우저 옆 압정 메모 | DNS 캐시 |
| 출발하는 트럭 | 그 주소로 실제 연결(TCP, TLS, HTTP) |
핵심은 순서입니다. 주소를 받기 전에는 출발할 수 없습니다. DNS가 늦거나 막히면, 서버가 멀쩡해도 사이트가 안 열립니다.
직접 물어봤습니다 — example.com의 실제 응답
2026년 11월 12일에 example.com의 주소(A 레코드)를 Cloudflare 공용 DNS에 물어봤습니다. 일반 DNS 대신 HTTPS로 묻는 방식(DoH)을 썼지만, 받는 답은 같습니다.
curl -s -H 'accept: application/dns-json' \
'https://cloudflare-dns.com/dns-query?name=example.com&type=A'{
"Answer": [
{ "name": "example.com", "type": 1, "TTL": 298, "data": "104.20.23.154" },
{ "name": "example.com", "type": 1, "TTL": 298, "data": "172.66.147.243" }
]
}곧바로 한 번 더 물었더니 이렇게 왔습니다.
{
"Answer": [
{ "name": "example.com", "type": 1, "TTL": 292, "data": "172.66.147.243" },
{ "name": "example.com", "type": 1, "TTL": 292, "data": "104.20.23.154" }
]
}여기서 세 가지를 볼 수 있습니다.
- 이름 하나에 주소가 둘입니다. 큰 사이트는 주소를 여러 개 두고 나눠 받습니다. 순서도 바뀌어 왔습니다.
- TTL이 붙어 옵니다. "이 답을 298초 동안 기억해도 된다"는 뜻입니다.
- TTL이 줄어 있습니다. 298초가 292초가 됐습니다. 리졸버가 이 답을 이미 기억해 두고 남은 시간을 세고 있다는 뜻으로 보입니다. 0이 되면 다시 물어 새 답을 받습니다.
Windows나 macOS 터미널에서는 더 간단하게 볼 수 있습니다.
nslookup example.comAddress 줄에 나오는 숫자가 브라우저가 실제로 찾아가는 주소입니다.
DNS 조회 순서 — 안내소는 한 곳이 아니다
영상에서는 안내소를 하나로 그렸지만, 실제로는 기억해 둔 답이 있는지부터 가까운 순서로 확인합니다.
- 브라우저 캐시: 방금 갔던 사이트면 여기서 끝납니다.
- 운영체제 캐시: 다른 프로그램이 물어봤던 답도 여기 남아 있습니다.
- 리졸버(안내소): 통신사나 공용 DNS. 여기에 답이 있으면 바로 돌려줍니다.
- 리졸버도 모르면 직접 찾아갑니다.
- 루트 서버에 묻습니다. "
.com은 어디서 관리하나요?" .com서버에 묻습니다. "example.com은 누가 알고 있나요?"example.com의 권한 있는 DNS 서버가 최종 주소를 알려 줍니다.
- 루트 서버에 묻습니다. "
- 받은 답을 TTL 동안 단계마다 기억해 둡니다.
그래서 처음 가는 사이트는 조금 더 걸리고, 두 번째부터는 거의 즉시 주소가 나옵니다. 영상의 "한 번 물어본 주소는 잠시 기억해 뒀다가, 다음엔 바로 가요"가 이 부분입니다.
페이스북은 왜 6시간 동안 사라졌나 — 도로는 멀쩡했다
2021년 10월 4일, 페이스북·인스타그램·왓츠앱이 약 6시간 동안 접속되지 않았습니다. Meta가 공개한 경위는 이렇습니다.
- 백본 네트워크 점검 중 실행한 명령이 데이터센터 사이 연결을 모두 끊었습니다.
- 페이스북의 DNS 서버는 데이터센터와 연결이 끊기면 "나를 찾아오는 길"(BGP 경로) 안내를 스스로 거둬들이도록 만들어져 있었습니다.
- 그 결과 인터넷 어디에서도 페이스북의 DNS 서버를 찾을 수 없게 됐습니다.
다른 사이트로 가는 인터넷은 정상이었습니다. 영상에서 "도로는 멀쩡했는데, 안내소에 연락이 안 됐다"고 한 것이 이 장면입니다. 세계 곳곳의 리졸버가 facebook.com의 주소를 묻고 또 물었지만, 답해 줄 안내소에 닿을 수가 없었습니다.
교훈은 하나입니다. 서버가 살아 있어도, 이름을 주소로 바꾸지 못하면 사용자에게는 없는 사이트입니다.
면접에서 DNS를 답하는 법
한 줄 답변
"DNS는 도메인 이름을 IP 주소로 바꿔 주는 시스템입니다. 브라우저는 연결하기 전에 먼저 캐시를 확인하고, 없으면 리졸버에 물어 주소를 받은 뒤 TTL 동안 기억해 둡니다."
꼬리 질문에 대비할 세 가지
- "브라우저에 URL을 치면 무슨 일이 일어나나요?" → 첫 단계가 DNS 조회입니다. 주소를 받은 뒤에 TCP 연결, TLS 핸드셰이크, HTTP 요청이 이어집니다.
- "TTL이 길면 좋은 거 아닌가요?" → 조회는 줄지만, 서버 주소를 바꿨을 때 옛 주소가 그만큼 오래 남습니다. 이사 전에는 TTL을 미리 줄여 둡니다.
- "DNS는 TCP예요, UDP예요?" → 보통 질문은 UDP 53번 포트로 짧게 주고받습니다. 응답이 크거나 서버끼리 전체 기록을 옮길 때는 TCP를 씁니다.
자주 묻는 것
특정 사이트만 안 열리면 DNS 문제인가요?
그럴 수 있습니다. 같은 와이파이에서 다른 사이트는 잘 열리는데 한 곳만 안 되면, 그 사이트의 DNS나 서버 문제일 가능성이 큽니다. nslookup 사이트주소로 주소가 나오는지 먼저 보면 둘을 가를 수 있습니다.
8.8.8.8이나 1.1.1.1로 바꾸면 빨라지나요?
환경에 따라 다릅니다. 통신사 DNS가 느리거나 불안정할 때는 체감이 되기도 하지만, 대부분의 조회는 캐시에서 끝나기 때문에 늘 빨라지지는 않습니다.
도메인을 산 직후 사이트가 안 보이는 건 왜 그런가요?
새 주소가 퍼지기 전까지, 예전 답을 기억해 둔 캐시가 TTL만큼 남아 있기 때문입니다. 시간이 지나면 각 캐시가 다시 물어 새 주소를 받습니다.
정리
- DNS = 이름을 주소로 바꿔 주는 안내소. 주소를 받기 전에는 출발하지 않는다.
- 조회 순서: 브라우저 캐시 → OS 캐시 → 리졸버 → (루트 →
.com→ 권한 있는 서버). - 실제 조회에서
example.com은 주소 2개와 TTL 298초를 돌려줬고, 다시 물으니 TTL이 292초로 줄어 있었다. 남은 시간 동안만 기억한다. - 2021년 페이스북 장애: 인터넷은 멀쩡했지만 DNS 서버를 찾을 수 없어 6시간 동안 사라졌다.
주소를 받은 다음, 실제로 연결이 맺어지는 과정은 HTTPS 핸드셰이크 완전 정리에서, 그 연결이 TCP일 때와 UDP일 때의 차이는 TCP UDP 차이에서 이어서 볼 수 있습니다.
와이파이는 되는데 특정 사이트만 안 열렸던 적 있으신가요? 그때 어떻게 해결했는지 댓글로 들려주세요.
