TCP/IP 프로토콜을 사용하는 인터넷 상에서 각 호스트를 식별하는 주소인 IP주소를 사람이 기억하기 쉬운 도메인 이름으로 변환하여 사용한다.
하지만 실제 통신할 때에는 통신을 하는 장비들이 호스트를 인식하고 구별할 수 있도록 도메인 이름을 IP 주소로 다시 변환해야 하는데, 이를 수행하는 것이 DNS(Domain Name System)이다.
DNS는 IP 주소를 도메인으로 변환하는 역방향 조회 기능도 가지고 있다. 역방향 조회는 특수한 상황에서 사용된다고 한다.
보통 DNS는 도메인과 IP 주소를 변환하는 시스템을 일컫기도 하고, 이 역할을 하는 서버(Domain Name Server)를 일컫기도 한다.
DNS가 저장, 관리하는 방법이라고 알면 된다.
DNS는 도메인 주소를 계층 구조로 나누어 관리한다.
전 세계에는 무수히 많은 도메인 주소가 존재하기 때문에 모든 도메인을 하나의 서버가 관리할 수 없다. 그래서 여러 대의 네임 서버들로 도메인을 관리하는데, 네임 서버들은 도메인 주소를 계층 구조로 분리하여 관리한다.
최상위에 루트 도메인 서버가 존재하고, 그 하위에 인터넷에 연결된 모든 노드가 연속으로 이어지는 계층 구조로 구성된다.
도메인 주소를 관리하기 위해 사용하는 DNS 전용 서버이다.
네임 서버는 도메인 네임 스페이스 등의 방법으로 도메인 주소를 관리하는데 보통 도메인 주소의 일부만을 분산하여 관리한다.
루트 도메인(Root Domain) 서버
루트 도메인에는 공식 명칭이 없으며, 도메인 최상위에 존재하여 도메인의 시작점이 된다.
루트 도메인 서버는 네임 스페이스에서 도메인을 해석하기 위한 출발지 역할을 수행하는 서버이다. 최상위 도메인 서버의 정보를 가지고 있으며, 전 세계에 13개의 루트 도메인이 존재한다.
최상위 도메인(TLD, Top Level Domain) DNS 서버
루트 도메인 아래의 Level로, 도메인 주소의 가장 마지막 부분이 최상위 도메인이다. 국가 코드 도메인(ccTLD, country code TLD) 또는 용도에 따른 도메인(gTLD, generic TLD)으로 구분된다.
TLD DNS 서버는 도메인 등록 기관이 관리하는 서버로, 2차 DNS 서버의 정보를 저장하고 안내하는 역할을 한다.
2차 도메인 (SLD, Second-Level Domain) DNS 서버
TLC 하위에서 관리되는 서브 도메인으로, 일반적으로 사용자가 도메인 이름 등록 기관에 등록한 도메인(PSDs, Public Suffix Domains)을 의미한다.
SLD DNS 서버는 실제 사용자의 도메인과 IP 주소의 관계를 관리하는 서버이기 때문에 권한을 가진 서버라는 의미인 Authoritaion DNS 서버라고도 한다.
권한이 없는 DNS 서버 (Recursive DNS Server)
위의 3가지 서버에 질의하여 도메인 주소를 IP 주소로 변환한 결과 데이터를 캐시(cache) 형태로 저장하는 서버이다.
네임 스페이스에 대한 권한이 없어 IP 주소와 도메인 주소를 직접적으로 매핑하여 저장하지 않고, 질의를 통해 얻은 매핑 데이터를 캐싱한다.
DNS 클라이언트의 도메인 주소-IP 주소 변환 요청을 네임 서버로 전달하고, 네임 서버로부터 데이터를 받아 클라이언트에게 제공하는 기능을 수행한다.
만약 A 네임 서버에게 DNS 요청을 보냈을 때 해당 서버에 정보가 없으면 다른 서버에 요청을 보낸다. 리졸버는 이러한 방법으로 수많은 네임 서버에게 요청하는 서버로, Recursive DNS 서버가 이러한 역할을 한다.
😁 네임 서버도 상위 네임 서버의 리졸버가 될 수 있다.
1) 사용자가 브라우저의 주소창에 'www.naver.com'을 입력하면 브라우저는 www.naver.com에 대해 DNS 조회를 수행한다.
이때 DNS 조회를 특정 통신사의 DNS 서버에게 요청하는데 DNS 질의를 대신 해주는 서버를 Recursive DNS 서버(캐시 네임 서버)라고 생각하면 된다.
😉 우리가 사용하는 인터넷을 제공해주는 통신사(KT, LG, SK 등)의 DNS 서버를 local DNS 서버, Recursive DNS 서버, 리졸버, 캐시 네임 서버 등 다양한 이름으로 부른다고 한다!
2) 캐시 네임 서버에 www.naver.com에 대한 IP 주소가 저장되어 있지 않다면 캐시 네임 서버(Recursive DNS 서버)는 루트 네임 서버에 질의한다.
3) 루트 네임 서버는 com(TLD) 네임 서버의 IP 주소를 캐시 네임 서버에게 전달한다.
4) 캐시 네임 서버는 com 네임 서버에 www.naver.com에 대한 IP 주소를 질의한다.
5) com 네임 서버는 naver(SLD) 네임 서버의 IP 주소를 캐시 네임 서버에 전달한다.
6) 캐시 네임 서버는 naver 네임 서버에 www.naver.com에 대한 IP 주소를 질의한다.
7) naver 네임 서버는 www.naver.com의 IP 주소를 캐시 네임 서버에 전달한다.
8) 캐시 네임 서버는 받은 IP 주소를 해당 도메인에 매핑시켜 캐싱하고, www.naver.com의 IP 주소를 브라우저에게 전달한다.
리졸버로부터 도메인 질의 요청을 받으면 네임 서버가 직접 name space를 탐색하여 결과값을 반환하는 방식이다.
local DNS 서버가 여러 DNS 서버에게 직접 질의하여 IP 주소를 얻는 방식이다.
출처 : https://threat.media/definition/what-is-an-iterative-dns-query/