도메인 네임 시스템(Domain Name System, DNS)은 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행할 수 있도록 하기 위해 개발되었다. -위키백과
즉 사용자가 알아보기 쉬운 도메인 이름 (예를 들어 www.naver.com와 같은 주소)을 머신의 IP주소(예를 들어 195.0.1.22)로 이어주는 시스템이다. 이런 요청을 쿼리라고 한다.
쉽게 생각해서 우리가 네이버 사이트에 들어간다 치자. 그럼 195.0.1.22와 www.naver.com 중 어느게 외우기 쉬울까? 당연히 문자열인 후자다. 하지만 컴퓨터는 우리의 반대로 숫자열을 더 빨리 습득한다. 이를 위해 전처리기와 같은 역할을 할 시스템이 필요해졌다. 이게 DNS의 역할이다.
출처 : https://raventools.com/marketing-glossary/root-domain/
우선 동작방식을 배우기 전에 도메인의 구조부터 알아보자!
도메인은 계층 구조를 지니고 있다. 따라서 하위 단계부터 검색이 진행된다.
예를 들어 .com -> .example -> www 순이다.
출처 : https://gentlysallim.com/dns란-뭐고-네임서버란-뭔지-개념정리/
브라우저에서 Nesite.com을 검색하고, 사용하고 있는 통신사인 KT DNS 서버에게 도메인 주소에 해당하는 IP 주소를 요청함
(브라우저 기본 DNS 설정이 통신사 DNS 서버이기 때문)
ISP 서버에선 캐시 데이터가 없다는 걸 확인하고 루트 DNS 서버에게 어디로 가야 하는지 요청함(캐시가 있다면 8.로 건너 뜀.)
루트 서버는 TLD DNS 서버 주소만 관리하기 때문에, ***.com 도메인을 보고는 COM 최상위 도메인을 관리하는 TLD DNS 서버 주소를 안내함.
ISP 서버는 COM 서버에게 어디로 가야 하는지 다시 요청함.
COM 서버는 가비아 DNS 서버에서 해당 도메인이 관리되고 있는 걸 확인하고 안내함.
ISP 서버는 가비아 서버에게 또 다시 요청함.
가비아 서버는 “Nesite.com = 12.123.123.123”이라는 정보를 확인하고 이 IP를 알려줌. 동시에 ISP 서버는 해당 정보를 캐시로 기록해 둠.
ISP 서버는 브라우저에게 힘들게 알아 낸 12.123.123.123 주소를 안내함.
브라우저는 12.123.123.123 IP 주소를 갖고 있는 호스팅 서버에게 웹사이트를 출력하라고 요청함.
드디어 보임.