DNS

DNS 구성 요소 – ② 도메인 네임 서버(Domain Name Server)

과거, 다른 호스트에 접속하여 정보를 이용하기 위해서는 그 호스트 정보(숫자 주소와 이름)를 내 호스트가 알고 있어야 했습니다. 이를 위해 모든 개별 호스트의 관리자들은 자기 호스트의 정보를 NIC에게 제공하고, NIC은 이렇게 모아지는 전체 호스트 정보를 하나의 파일(hosts.txt)로 저장하여, 개별 호스트 관리자가 다운로드 받아 자신의 호스트에 저장하고 사용하도록 하였습니다.

이러한 방식으로 인해, 호스트 수가 증가할수록 hosts.txt 파일의 크기가 커짐은 물론, 모든 호스트가 파일을 다운로드 하기 위해 NIC 한 곳으로 접속하게 되어 일종의 병목 현상이 발생하게 됩니다. 무엇보다 가장 중요한 문제는 개별 호스트의 변화된 정보를 신속하게 반영할 수 없다는 점과 특정 호스트에서 다른 호스트와 동일한 호스트 이름을 설정했을 경우 소위, ‘이름 충돌’이 일어나 접속에 문제가 발생할 수 있다는 점이었습니다.

이는 결국, ‘호스트 정보의 분산 관리’ 및 ‘호스트 정보 검색의 자동화’라는 방향성을 제시합니다. 전자는 호스트 정보의 체계적 배치를 통한 인간의 관리적 목표를 달성하였고 후자는 이렇게 체계적으로 조직된 호스트 정보를 통해 접속의 효율성을 더한다는 기술적 목표를 이룹니다.

관리적 목표의 결정체가 바로, 개별 기관에서 책임을 가지고 관리하는 호스트들을 개별 영역(domain)으로 분류하는 것이었습니다. 예를 들어 가비아(gabia)는 여러 호스트를 관리하는 기관으로 하나의 영역이 됩니다. 그리고 이렇게 구분된 영역들은 그 기관의 특성에 따라 더 큰 영역으로 다시 분류됩니다. 우리에게 너무나 익숙한 .com, .org가 바로 기관의 특성에 따른 영역 분류입니다. 마지막에는 이 모든 영역을 관리하는 ICANN 산하의 IANA가 있습니다. 이들 각 영역은 점(.)으로 구분하여 표시합니다. 이를 문자로 표현하면 다음과 같습니다.

호스트 이름(WWW). 흐스트 관리 기관 영역(GABIA). 최상위 영역(COM)

→ WWW.GABIA.COM이 됩니다.

역사적으로 살펴 보면 ‘도메인(domain)’의 탄생은 이처럼 호스트 정보 관리 주체를 분류하는 과정으로 볼 수 있습니다. 그러나 새로운 도메인의 도입이라는 미래 확장성의 측면에서 보면, 가장 상위 영역이 생성되면(예: 최근의 .link와 같은 각종 신규 도메인) 이젠 그 상위 영역의 하위 영역으로 여러 기관이 등록할 수 있습니다. 그리고 각 기관들은 자기 영역 내에서 호스트를 운영할 수 있게 됩니다.

각 관리 기관이 책임지는 영역의 호스트 정보가 담긴 데이터를 흔히 ‘zone 파일’이라고 합니다. 가령 위에서 가비아(관리 기관)가 관리하는 영역(GABIA.COM)의 zone파일에는 www, domain, hosting등의 호스트 이름과 주소가 담긴 정보가 들어있습니다. 그리고 이러한 zone 파일을 보관하고 있다가, 다른 호스트로부터 가비아의 www호스트를 찾는 요청이 있으면 이를 찾아 주는 역할을 하는 것이 바로 ‘Domain Name Server’입니다. 즉 가비아 영역(GABIA.COM) 내에 있는 호스트 정보를 제공하는 서버가 바로 가비아 네임 서버(ns.gabia.com, ns1.gabia.com)입니다.

우리는 표면적으로 홈페이지(WWW)라는 관문을 통해 연결되어있는 각종 서비스를 이용하지만, 사실은 앞서 언급했듯 해당 서비스를 제공하는 것은 ‘WWW 서버, 메일 서버, 도메인 서버, 호스팅 서버’입니다. 즉, 각 서버들의 정보(IP와 서버 이름)를 가지고 있는 도메인 네임 서버(Domain Name Server)가 작동하고 있는 것이지요.

이제 하위 영역의 관리자는 자기 영역의 호스트 정보를 관리하면서 상위 영역으로 네임서버 정보만을 제공합니다. 최상위 영역의 관리자 또한 IANA에 자기 영역 전체 호스트 정보가 아니라 운영하는 네임서버 정보만을 제공하면 됩니다. 정리하면 다음과 같습니다.


IANA 네임 서버(루트 네임 서버): 최상위 영역의 네임 서버 정보 관리

최상위 영역(gTLD, ccTLD) or 1단계 도메인: 차상위 영역(개별 기관) 네임 서버 정보 관리

차상위 영역(Gabia와 같은 회사나 개별 기관) or 2단계 도메인: 자기 영역의 네임 서버 관리

(일부를 제외하고, 3~4단계 이하로 영역을 추가로 설정하는 경우는 거의 없습니다)


그리고 차상위 영역의 네임서버에는 개별 호스트 정보가 zone 파일 안에 담겨 있습니다.

이제 주소 창에 www.gabia.com을 치고 가비아 홈페이지로 접근을 시도하면 내 PC(클라이언트)의 각종 프로그램들은 바쁘게 움직이기 시작합니다. 홈페이지가 나타나는 짧은 시간 안에 웹브라우저는 미리 작동하도록 설계된 ‘리졸버’라는 프로그램으로 하여금 가장 가까운 네임서버의 존 파일 정보에 www.gabia.com이 있는지 확인합니다. 없으면 IANA의 영역 네임 서버에 www.gabia.com의 위치를 질의합니다. IANA가 가지고 있는 정보는 .COM이라는 최상위 영역의 네임서버 정보이므로 거기에서 찾아보라고 합니다. 최상위 영역의 네임서버는 GABIA의 네임서버 정보를 가지고 있으므로 호스트 이름과 그 IP 주소(ns.gabia.com 43.201.170.100)의 정보를 제공합니다. 마지막으로 이렇게 얻은 정보를 통해 가비아 웹서버에 접속하여 정보를 요청하면 가비아의 홈페이지(www.gabia.com)가 브라우저에 나타납니다.

이러한 과정을 그림으로 표현하면 다음과 같습니다.

dns 작동 방식

dns 작동 방식

* 그러나 1번의 질의 시, ISP 네임서버에 WWW.GABIA.COM의 최근 방문 기록이 남아 있는 경우, 즉 www.gabia.com의 호스트 정보를 가지고 있는 경우에는 곧바로 가비아의 www 서버를 찾아 접속이 가능합니다(8번). 대부분의 네임서버 제공 업체에서는 일명 ‘캐시 서버’라 하여 한 번 방문이 있었던 웹페이지의 정보를 일정 시간 저장하였다가 재요청이 있는 경우 즉시 응답합니다. 실제로 많은 경우 특정 웹사이트를 주로 방문하기 때문에 이러한 캐시 서버의 역할이 중요합니다.