본문 바로가기
Programming/DevOps, Tools

[정보통신] DNS는 어떻게 동작하는가

by kghworks 2023. 3. 29.

 

 DNS란 무엇이고 어떻게 동작하는지 정리해 보겠습니다. 웹 상에서 너무 국소적으로 정리해 놓거나, 호스팅 업체 글에는 본인들 상품과 연관 지어 헷갈리게 써놓은 것 같아 최대한 advanced 내용들은 제거하고 기본 상식 수준에서 정리했습니다.

 

목차

  • DNS란
  • DNS 네임 스페이스
  • DNS 구성요소와 동작 순서

DNS란

 DNS란 전화번호부와 같습니다. 우리는 휴대폰에서 전화할 때 실제 전화번호(010-xxxx-xxxx)를 입력할 수도 있지만, 간단하게 한글로 검색해서 (홍길동, 사랑하는 아들 등) 상대 전화기와 연결이 가능합니다. 마찬가지로 우리가 웹사이트 (서버)에 접속할 때 서버 고유 IP 주소를 입력하지 않고, 사이트 이름 (www.naver.com)을 입력해서 접속합니다.

 

 IP 주소 없이 사이트 이름 통해 접속할때 이 이름을 도메인이라 하며, 이 일을 해주는 서버를 DNS 서버라고 합니다.

그리고 도메인을 통해 서버에 접속하는 일련의 과정을 DNS (Domain Name System)이라고 합니다.

 

여기까지 용어를 한번 정리하고 갑니다.

  • IP : 서버 실제 주소 (222.xxx.x.xxx)
  • 도메인 : 사이트 이름 (www.example.com)
  • DNS 서버 : 사이트 이름의 IP를 가리켜주는 서버
  • DNS : 도메인을 통해 실제 IP에 접속하는 프로세스 일체

 

왜 DNS를 써야하나요?

 편하니까요. DNS가 없다면 우리 브라우저 북마크에 있는 모든 웹사이트들의 아이피 주소를 외워야 합니다.

스마트폰에 전화번호부, 단축번호가 없다면 우린 주변 모든 사람들의 전화번호를 외우고 다녀야 하는 것처럼 말이죠.

 

 DNS를 자세히 알아보기에 앞서 큰 그림을 간략하게 그려보고 가겠습니다.

 제일 간략히 설명하자면, 클라이언트가 요청한 도메인 이름 (www.naver.com)을 실제 IP 주소 (xxx.xxx.x.xxx)로 변환하는 것입니다. 그리고 상세하게 표현하면 아래와 같은데요.

 

이미지가 너무 작은 이유는 아직은 이해가 어렵기 때문입니다. 후술 할 내용들을 통해 DNS에 대한 이해와 아래와 같이 DNS에 필요한 구성요소들을 이해할 것입니다.

 

  • DNS resolver(recursive recursor, 재귀확인자)
  • DNS root Name server (name server, 권한이 있는 DNS 서버)
  • DNS TLD (Top Level Domain) server
  • Authorative Name Server

DNS 네임 스페이스 (DNS Name Space)

 DNS를 이해하기에 앞서 DNS 체계에 대한 이해를 하고 가겠습니다. 도메인네임 스페이스인데요.

우리가 보는 도메인 주소의 구조는 아래와 같습니다.

 

도메인 구조

 

이 주소구조는 트리구조로 만들 수 있습니다.

도메인 트리 구조

 이때 트리의 레벨 별로 설명해 보자면,

  • root 도메인 : 네임스페이스 상 최상위 도메인. 출발지 역할. 전 세계 13개의 원본 DNS root Name server 존재 (http://www.iana.org/domains/root/servers)
  • 최상위 도메인 (Top Level Domain, TLD) : 국가 혹은 일반 최상위 도메인 (.kr, .jp, .net, .com, .org 등)
  • sub domain : 2차 이상 도메인, 최상위 도메인이 관리하는 하위 도메인 (google, naver, .ac, .go, .co 등)
  • 하위노드는 무제한으로 만들 수 있으나 도메인 전체길이는 제한이 있음 (255 byte)

 

이렇게 도메인에 대한 데이터 (정보, 주소)는 계층적 형태의 구조체계로 저장되어 관리됩니다. 도메인에 대한 정보와 주소를 관리하고, 유지하는 책임과 권한을 영역(Domain)으로 나눠 분리해 둡니다. 위 트리의 레벨이 영역이 되는 것이죠. 그리하여 이렇게 분리하는 체계를 DNS 네임 스페이스라고 말합니다. 도메인(IP)이 요청되면 이 체계에 따라 해당 도메인 정보에 해당하는 영역 (도메인)으로 가서 주소를 찾습니다.

 

 


DNS 구성요소와 동작 순서

DNS 프로세스

 

DNS resolver (DNS recursive resolver, DNS recursor, 재귀 확인자)

 클라이언트가 도메인 (example.com)을 요청하면 이 DNS resover (이하 리졸버)가 먼저 받습니다. 리졸버는 후에 기술할 DNS name server들과 클라이언트의 중계자입니다. 클라이언트로부터 DNS 쿼리를 받으면 캐시 된 데이터를 응답하고 종결하거나, 캐싱이 없다면 DNS 네임 서버 (root, TLD, Authoragtive 순)로 요청합니다.

즉, 리졸버에 이미 캐시 된 IP 주소가 있다면 더 이상 진행하지 않고 클라이언트에게 IP 주소를 응답해 주고 끝납니다.

 

Local DNS Server (기지국 서버)

 DNS 리졸버는 요청을 받으면 처음 Local DNS server에 들릅니다. 여긴 각 인터넷 통신사들의 DNS 서버로서 여기에서 IP를 찾지 못한다면 루트네임서버에게 찾으러 갑니다. 사용자 회선이 KT라면 자동으로 KT DNS 서버에 들를 것이고, SK면 SK DNS 서버에 먼저 들를 것입니다.

인터넷 회사 별 기지국 서버 현황

 

DNS 쿼리 (DNS Name 서버에 IP 주소를 묻는 행위)

 클라이언트가 요청한 도메인를 바탕으로 실제 IP를 찾는 일련의 과정을 DNS를 조회한다고도 표현합니다. 이 조회과정은 상세하게 "DNS 쿼리" (이하 쿼리)를 발생시키면서 진행됩니다. 이 DNS 쿼리들을 최적화된 프로세스를 거쳐 이동거리를 줄이는 것이 DNS의 지향점입니다. 가장 이상적인 쿼리는 캐시 된 레코드 데이터를 반환하고 종결되는 것입니다.

  • Recursive Query (재귀적 질의) : 레코드 (사용자가 요청한 IP 주소)를 반환하는 것입니다. 클라이언트가 요청한 레코드를 응답하거나 레코드가 없을 때는 오류메시지를 사용하여 응답하도록 요구합니다.
  • Iterative Query (반복적 질의) : 반복적으로 다른 DNS 서버에게 쿼리를 보내게 해서 응답을 하도록 요청한다. 자세히는 쿼리 한 DNS 서버가 일치하는 데이터가 없을 경우 하위 수준의 도메인네임 스페이스에 해당하는 DNS서버 참조를 반환한다. 클라이언트는 반환받은 참조주소로 쿼리 한다.

 

DNS 캐싱 (DNS 리졸버)

 요청한 데이터를 클라이언트와 가까운 곳에 저장해서 DNS쿼리를 줄일 수 있고, 로드시간이 향상되게 합니다. 즉 도메인에 대한 IP 주소를 캐싱해두고 있는 것입니다.

  • 브라우저 DNS 캐싱 : 최신 웹브라우저들은 기본적으로 일정 시간 동안 DNS 레코드를 캐시하고 있습니다.
  • 운영체제 수준의 DNS 캐싱 (DNS 클라이언트) : 브라우저에 없다면 운영체제의 캐싱 데이터를 찾습니다. 애플리케이션 (브라우저 등)으로부터 요청을 받으면 먼저 자체 캐시를 검사합니다. 있다면 반환하고 없다면 DNS 리졸버로 요청을 보냅니다. 본인 PC에 캐싱해 둔 DNS 데이터는 ipconfig/displaydns 명령어로 아래와 같이 확인 가능합니다.

ipconfig/displaydns 화면

 

DNS root Name server (name server, 권한이 있는 DNS 서버)

 리졸버가 질의하는 첫 DNS 서버입니다. 도메인 이름을 IP 주소로 변환해 주는 첫 단계입니다. 네임서버는 도메인 확장자 (.com, .kr, .org 등)에 따라 해당하는 TLD 서버를 요청하도록 응답해 줍니다. 루트 네임 서버는 13개가 존재하고, 전 세계에 각 사본이 존재합니다.

 

DNS TLD server ( Top Level Domain server, TLD 네임 서버)

 TLD 서버는. com, .net 처럼 url의 마지막 점 이후에 오는 도메인 확장자 별로 관리하는 서버입니다. example.com을 요청했다면 첫 번째 루트네임 서버로 가고, 루트 네임 서버는 .com 도메인을 관장하는 TLD 서버로 요청하도록 응답합니다. 즉 .com 으로 끝나는 모든 웹사이트 정보를 하나의 TLD 서버가 갖고 있습니다. 그리고 최종적으로 Authorative Name Server의 주소를 가지고 있어 example.com의 IP를 알려주는 Authorative Name Server를 응답해 줍니다.

 

 

Authorative Name Server (권한이 있는 네임 서버)

 쿼리의 종착지입니다. 요청한 리졸버에게 도메인의 IP주소를 반환합니다. 일반적으로 도메인 (호스팅) 업체들의 네임서버입니다. 개인이나 회사가 별도의 DNS를 구축했다면 그 서버 또한 여기에 해당합니다. IP를 응답받은 리졸버는 Local DNS Server 데이터를 캐싱해 두고 클라이언트에게 전달합니다.

 

 

정리

 도메인을 IP 주소로 효율적으로 연결해 주는 시스템인 DNS가 있습니다. DNS는 도메인 네임을 영역별로 관리하는 DNS 네임 스페이스 체계로 관리가 됩니다. 도메인을 요청했을 때 캐싱된 도메인 주소가 없다면 DNS Resolver를 통해 각 도메인 영역별로 순서대로 도메인 주소를 쿼리 해갑니다. (제일 먼저 Local DNS 서버에 들릅니다)


참고

https://www.cloudflare.com/ko-kr/learning/dns/what-is-dns/

https://aws.amazon.com/ko/route53/what-is-dns/

 

DNS란 무엇입니까? – DNS 소개 - AWS

12개월 동안 AWS 프리 티어에 액세스하고 연중무휴 24시간 고객 서비스, 지원 포럼 등을 비롯한 AWS Basic Support의 기능을 사용할 수 있습니다. 현재 Amazon Route 53는 AWS 프리 티어에서 제공되지 않는다

aws.amazon.com

https://learn.microsoft.com/ko-kr/windows/win32/dns/dns-start-page

 

DNS(Domain Name System) - Win32 apps

Microsoft Windows 로케이터 서비스인 DNS(도메인 이름 시스템)는 IP 기반 네트워크에서 컴퓨터를 찾는 업계 표준 프로토콜입니다.

learn.microsoft.com

https://library.gabia.com/contents/domain/4137/

 

가비아 라이브러리

IT 콘텐츠 허브

library.gabia.com

 

댓글