DNS의 작동 방식

tls·2025년 10월 5일

Tech

목록 보기
3/7

2025.09.23

DNS란?

Domain Name System은 도메인 이름을 IP 주소로 바꿔주는 네트워크 서비스입니다.

예를 들어... 교보문고 광화문점을 언급할 때, 서울특별시 종로구 B1F, 종로 1라고 말하지 않습니다. 단순히 교보문고 광화문점이라고 부르죠. 이처럼 주소(IP)를 전부 외우기 힘드니 고유한 이름(도메인 네임)을 사용하는 것입니다.

IP 주소가 필요한 이유는 IP 주소가 인터넷에 연결된 기기를 식별하게 해주기 때문입니다.

맥북, 윈도우 컴퓨터 등등 다양한 제조사나 다양한 나라에서 만들어진 기기들이 모두 동일하게 인터넷으로 연결되어 통신할 수 있게 하려면 통일된 규약이 필요합니다. 이게 IP 규약입니다. 도메인 네임 문자열을 그대로 사용하면 이진법을 기반으로 작동하는 컴퓨터가 데이터를 처리할 때 불편함이 존재해 도메인 네임을 IP 주소로 변환하는 체계를 갖추게 되었습니다.

그렇다면 DNS를 이용하여 도메인 네임을 IP 주소로 어떻게 바꿔오는 걸까요?!

DNS의 작동 방식

유저가 도메인 네임(www.google.com)을 주소 창에 입력했다고 가정해볼까요.

우선 클라이언트 컴퓨터에서 캐싱된 값이 없는지 확인합니다.

1. DNS Cache

DNS를 통해 IP 주소를 찾아오는 게 인터넷 로딩 시간의 상당수를 차지하는 만큼(케빈피셜) 인터넷 사용 속도를 높이고 트래픽을 줄이기 위해 캐시가 존재합니다.

만약 캐시에 해당 IP 주소에 대한 정보가 있다면 반환하고, 없다면 DNS 서버에 요청을 보냅니다. 응답으로 받아온 IP 주소를 TTL(Time To Live, 캐시의 유효 시간) 설정을 하여 저장해두게 됩니다.

  • 애플리케이션 캐시 : 크롬 등이 자체적으로 보유
  • 운영체제 캐시 : OS의 DNS resolver가 DNS 조회 결과를 캐시

2. Local DNS Server

캐시에 정보가 없다면 클라이언트 PC는 IP 주소를 찾기 위해 Local DNS Server로 요청을 전송합니다.

Local DNS Server는 통신사(SKT, LG U+ 등)의 DNS 서버입니다. 이후의 IP 주소를 찾는 여정은 모두 이 서버가 담당하게 됩니다.

Local DNS Server에도 캐시가 있어서, 이 서버 내의 캐시에 IP 주소 값이 존재한다면 해당 값을 반환하고 없으면 Root DNS Server에 IP 주소 요청을 보내게 됩니다.

다음으로 넘어가기 전에 잠깐 짚고 넘어갈 부분이 있습니다.

Domain Name에는 계층이 존재하는데요.

7933

이미지 출처 https://thebook.io/007046/0045/

이미지처럼 www.google.com을 나눠보면
www
.google
.com
.
이렇게 네 가지로 분리할 수 있습니다.

차례대로 Sub, Second-level, Top-level, Root에 해당합니다. 아래 서버들에서 이 계층 구조를 활용하니 잘 기억해주세요.

3. Root DNS Server

이 서버에서는 Top-Level Domain(TLD) 서버들의 주소를 기억하고 있습니다.

근데 Root... TLD... 이런 이름들을 어디서 본 것 같지 않나요?

위 도메인 네임의 계층 구조와 이름이 똑같죠.

이 Root DNS Server를 통해 도메인 네임에 해당하는 TLD DNS Server로 IP를 찾으러 갑니다.

즉, Root DNS Server에서 .com에 해당하는 TLD DNS Server의 주소로 이동합니다.

4. TLD DNS Server

TLD DNS Server는 특정 도메인 확장자(.com, .net 등)를 사용하는 도메인 네임들의 정보를 가지고 있습니다.

.com TLD DNS Server는 google.com, naver.com, github.com 등 .com으로 끝나는 도메인 네임들의 정보를 가지고 있습니다.

이후 프로세스는 짐작하실 수 있으리라 생각합니다. TLD DNS Server에서는 google.com을 관리하는 Authoritative DNS Server의 주소로 보내지겠죠.

5. Authoritative DNS Server

권한 있는 DNS Server라는 뜻입니다.

해당 서버는 google.com 같은 Second-level Domain의 IP 주소, www.google.com 같은 Subdomain의 IP 주소도 가지고 있습니다.

그래서 이 서버에 접속하게 되면 최종 IP 주소를 얻을 수 있게 됩니다.

Local DNS Server로 반환된 IP 주소는 Local DNS Server에 도착해 캐싱된 뒤, 요청했던 클라이언트 PC에게 알려지게 됩니다.

DNS Query

재귀

Local DNS Server에서 Root DNS Server로 요청을 한 번 보내면, 이후 DNS Server들이 알아서 다음 계층 구조 DNS Server로 요청을 계속 보내는 방식을 뜻합니다. IP를 요청하는 쪽은 서버를 한 번만 방문하면 됩니다.

반복

Local DNS Server에서 처음 Root DNS Server로 요청을 보내고, 응답을 받고 TLD DNS Server로 요청을 보내고... 반복적으로 요청-응답을 통해 IP 주소를 얻는 방식을 말합니다. IP 주소를 요청하는 쪽이 서버를 여러 번 방문해야 합니다.

클라이언트 PC와 Local DNS Server 간에는 재귀적 쿼리, Local DNS Server와 다른 DNS Server 간에는 반복적 쿼리를 사용합니다.


기타 의문점

아니 나는 평생 주소창에 www.google.com.이라고 안 치고 www.google.com이라고 입력해 왔는데?

웹 브라우저, DNS 클라이언트는 사용자가 입력한 주소의 맨 끝에 .이 없으면 자동으로 .을 있는 것으로 간주해 DNS 쿼리를 전송했다고 합니다. 실제로 www.google.com이 아니라 www.google.com.을 입력해도 멀쩡히 구글로 이동되는 걸 볼 수 있었습니다. (사실 전 지금까지 피싱 같은 걸 우려해 .을 포함한 도메인도 모두 구글이 구매해둔 줄 알았어요.)

Root DNS Server가 다운되면 어떻게 될까?

전 세계 인터넷이 마비되거나 느려질 것 같았습니다. 하지만 찾아보니 그럴 확률이 적다고 하네요. Root DNS 서버는 전 세계에 분산되어 있으며 13개의 루트 네임 서버 클러스터가 존재하고 많은 양의 서버로 미러링되어 있기 때문에...


질문 사항이나 피드백 주실 사항 등 있으면 댓글 남겨주세요
내일도 화이팅 🍀

0개의 댓글