오늘도 칼퇴를 하겠다는 부질없는 마음을 먹어보는 2년차 K씨, 어김없이 야근이다. 반쯤 포기하니 저녁 시간이 다와간다. 오늘은 저녁을 시켜먹자는 말에 칼퇴도 못했겠다, 부장님이 싫어하는 피자를 시켜본다. 탕비실에서 몰래 핸드폰 번호를 뒤져봐도 D피자의 번호가 없다.
L : K님 D피자 번호 찾고 계시죠?
K : 깜짝아, 어떻게 아셨어요?
L : 척보면 척이죠. 탕비실에 D피자 번호 있는 책자 있어요. 여기요.
DNS란 Domain Name System으로 유저가 도메인을 웹브라우저에 검색하였을 때, IP로 호환해주는 역할을 한다. 위에서 D피자 번호가 있는 책자를 생각하면 편하고 더 좋은건 전화번호부다.
Naver.com을 검색했을 때, 그에 상응하는 IP주소가 전달되고 이를 이용하여 우리가 아는 네이버에 접속할 수 있게 된다.
그렇다면 DNS는 어떻게 naver.com을 통하여 네이버의 IP 주소를 얻을 수 있을까?
아래의 이미지로 DNS의 동작 방식을 이해해보고자 한다.
이때, 로컬DNS가 미리 캐시된 IP를 갖고 있다면 브라우저에 반환하지만 우리는 없다는 가정을 해본다.
로컬DNS : 여기 naver.com 주소 없는데? 기다려봐.
로컬DNS : 혹시 naver.com 이 친구 주소 아시나요?
루트 네임 서버 : 모르겠는데요. 대신 .com DNS 주소는 알고 있어서 거기에 물어보세요.
로컬DNS : 혹시 naver.com 들어보셨나요? 여기 가면 알 수도 있다던데??
TLD DNS : 잘 모르겠네요. Authoritative DNS Server 주소로 가보세요. 거긴 알 수도 있어요.
로컬DNS : 혹시 naver.com 들어보셨나요? 여기 가면 진짜 알 수도 있다던데요.
Authoritative DNS : 여기 223.130.195.95로 나오네요.
DNS 서버가 어떤 방식으로 도메인을 입력 받아, IP를 리턴하는지 알게 되었다. 그렇다면 각 서버가 하는 일은 무엇일까?
루트 네임 서버(root name server) : 최상위 레벨 도메인 영역(TLD)의 권한을 가진 네임서버들의 이름, 주소를 제공한다.
TLD DNS : 도메인의 맨 마지막에 오는 .com, .net으로 끝나는 네임 서버들의 이름, 주소를 제공한다.
DNS를 공부하다보면 자주 나오는 단어가 있다. 바로 재귀적 질의(Recursive Query)와 반복적 질의(Iterctive Query)이다.
재귀적 질의 : 캐시 영역에 저장된 도메인이 없는 경우 다른 DNS 서버와 즉각 질의이다.
반복적 질의 : 루트 네임 서버로부터 도메인의 트리형태 구조에 따라 순차적으로 반복하여 진행하는 질의이다. 로컬 DNS와 다른 DNS 서버간의 질의 형태이다.
재귀적 질의
반복적 질의