본문 바로가기

ICT이야기

DNS 기본 개념과 구성요소


행복한옥수수 입니다.

오늘은 DNS 의 기본 개념을 알아보고 그 구성은 어떻게 되어 있는지 알아보도록 하겠습니다.

▶ 도메인 네임

도메인 네임은 인터넷 사용에 있어, 사람들이 기억하기 어려운 IP Address 를 대신해 문자로 구성된 이름을 사용할 수 있도록 하는 일정의 네이밍 체계입니다. 영문으로 domain name 이라고 하고 한글로 적으면 도메인 네임 이라고 합니다. 

 도메인 네임 시스템(DNS) 구성

도메인 네임 시스템(DNS)은 인터넷 도메인 네임을 위한 제반 체계를 통칭하는 용어입니다. 흔히 DNS 라고 부르는데 네임서버를 지칭하는 것으로 이해하고 있지만 도메인 네임서버는 도메인 네임 시스템을 구성하고 있는 일부 요소일 뿐이라는 것을 기억하시기 바랍니다.


도메인 네임 시스템은 초기 인터넷에서 호스트 네임별 IP 주소 정보를 시스템의 hosts.txt 파일로 관리하던 것을 보다 체계적으로 관리할 수 있도록 하기 위한 일정의 데이터베이스 시스템으로써 개발되었습니다. 도메인 네임 시스템은 각 사이트에서 자신의 도메인 데이터 영억을 자체 관리하고, 분산 관리하는 모든 도메인들이 단일한 전체 도메인 체계에 통할될 수 있는 구조로 설계된 분산구조의 데이터베이스 시스템 입니다.

도메인 네임 시스템은 다음의 세 가지 요소로 구성됩니다.

ⓐ 도메인 네임 공간(Domain Name Space) 과 리소스 레코드(Resource Record) 

도메인 네임 시스템에서 사용할 데이터 자료구조를 정의하는 사항에 해당합니다. 도메인 네임 공간은 도메인 네임을 중복되지 않게 네임을 생성하여 사용하도록 정의된 도메인 네임 구성 체계입니다. 흔히 최상위에 루트 도메인으로 부터 뻗어나가는 트리 구조의 도메인 네임 체계가 이에 해당합니다. 도메인 네임 시스템에서 하나의 도메인 네임은 유일한 값을 갖습니다.

리소스 레코드는 도메인 네임에 설정할 수 있는 데이터 타입입니다. 데이터 베이스 시스템으로써의 도메인 네임 시스템은 도메인 네임을 키값으로 하여 이를 도메인 네임에 필요한 데이터를 설정하게 됩니다. 도메인 네임의 데이터는 사전에 약속된 데이터 타입과 포맷으로 적용해야 합니다. 리소스 레코드는 이렇게 도메인 네임에 설정할 수 있는 데이터의 종류를 정의한 것입니다. 리소스 레코드 타입에는 잘 알려진 IPv4 주소의 A타입 레코드 외에도 다양한 레코드 타입이 정의되어 있습니다.

ⓑ 네임서버(Name Server)

네임서버는 도메인의 데이터를 보유하고, 외부 인터넷으로부터 도메인 네임과 그 네임에 대한 데이터 질의를 수신했을 때, 보유한 데이터를 검색하여 조회하고 있는 데이터로 응답하는 역할을 담당하도록 구현한 서버 프로그램입니다. 여기에서의 네임서버는 도메인 존만 설정하고 리커시브 기능을 갖지 않는 순수한 네임서버를 의미합니다. 네임서버는 주로 내부 메모리에 데이터 베이스 구조를 구현하여 존 파일을 통해 읽어 들인 데이터를 도메인 존 데이터로 저장합니다. 외부의 별도 데이터베이스 시스템에서 도메인 존 데이터를 관리하고, 네임서버는 데이터베이스 시스템으로부터 도메인 존 데이터를 읽어 들여 DNS 응답에 사용하도록 구현한 네임서버도 있습니다.

ⓒ 리졸버(Resolver)

리졸버는 도메인 네임의 데이터 조회기능을 수행하는 S/W 라이브러리 형태의 루틴을 가리킵니다. 리졸버는 응용 어플리케이션으로부터 도메인 네임과 조회대상 레코드 타입을 입력받아 인터넷 상에서 해당 도메인이 설정되어 있는 네임서버를 자동으로 추적 탐색하여 원하는 데이터를 응답받아 최종 결과를 응용 어플리케이션으로 되돌려 주는 기능을 합니다. 도메인 네임 시스템이 분산구조 방식의 데이터베이스이기 때문에, 데이터가 하나의 시스템이 아니라 인터넷 각 네임서버에 흩어져 산재하고 있어 이를 조회하기 위한 리졸버가 필요합니다.

원래 리졸버는 호스트 시스템에 구현되는 요소로 상정되었으나, 각 호스트의 리졸버에 의한 DNS 질의응답 트래픽이 과다하게 발생하는 문제가 있었습니다. 현재는 인터넷 백본 용량에 비해 DNS 트래픽은 미미한 수준이지만, 1980년대 당시 인터넷 복본은 56Kbps ~ 1.5Mbps 정도였고 이 중에서 DNS 트래픽은 약 20% 이상을 차지하고 있었습니다. DNS 트래픽 발생을 감소시키기 위해 리커시브 네임서버(캐싱 네임서버)를 사용하게 됩니다.

현재 인터넷에서는 리졸버를 DNS 질의응답 트래픽의 질감 및 질의응답 절차의 효율성을 위해 데이터 캐싱 기능을 갖는 별도의 시스템인 리커시브 네임서버로 주로 구현하여 구성하고 있습니다. 이 경우에도 호스트에는 응용 어플리케이션의 조회요청을 처리할 리졸버가 필요합니다. 리커시브 네임서버를 사용하는 경우, 호스트에는 단순화된 리졸버 기능만을 갖는 스터브 리졸버 루틴을 적용합니다.

위 그림은 도메인 네임 시스템의 세 가지 구성 요소를 구체적으로 표현한 예시 그림입니다.


등록한 도메인 영역에서 필요한 도메인 네임을 생성하고 이 도메인 네임에 대한 데이터를 데이터의 성격에 맞게 리소스 레코드 타입과 그 포맷을 적용하여 설정합니다. 이는 주로 존 파일 포맷으로 작성합니다. 존 파일 포맷은 인터넷 표준으로 정의되어 있으므로, 대부분의 DNS 표준을 구현한 네임서버는 존 파일을 인식하여 처리할 수 있습니다.

작성된 도메인 존의 데이터는 네임서버에 반영함으로써 인터넷에서 조회 가능한 상태가 됩니다. 원격의 리졸버는 도메인이 설정된 네임서버를 추적하여 원하는 도메인 네임의 데이터를 질의합니다. 


이상 DNS 의 기본 개념과 구성요소에 대해 알아보았는데 우리가 아무 생각없이 주소창에 입력하고 엔터를 누르는 간단한 행위를 인터넷 상에서는 아주 복잡한 과정을 거쳐 원하는 랜딩페이지로 연결을 해 주는 것을 알 수 있었습니다.

방문해 주셔서 감사합니다.

항상 행복하세요~