DNS (domain name system)

DNS[디에네스]는 인터넷 도메인 이름들의 위치를 알아내기 위한 IP 주소로 바꾸어주는 시스템이다. 
도메인 이름은 인터넷 주소로서 사람들이 기억하기 쉽고, 의미있게 붙인 이름이지만, 인터넷에서 어떤 컴퓨터를 실제로 찾기 위해서는 숫자 체계로 된 IP 주소가 필요하다.

DNS 서버는 도메인 이름과 이에 대응하는 IP 주소에 관한 데이터베이스를 유지하고 있다가 원하는 컴퓨터에게 제공한다. 
예를 들어, 만약 www.falinux.co.kr 이라는 도메인 이름을 DNS 서버에게 제공하면, 211.239.155.97 이라는 IP 주소를 알려주는 것이다. 

라우팅 정보를 제공하는 분산형 데이터베이스 시스템이다.

그러나, 도메인이름과 IP 주소를 대응시키는 목록을 중앙에 1개 만을 유지하는 것은 비현실적이고 비효율적이기 때문에, 도메인 이름과 IP 주소 목록은 기관별 체계에 따라 인터넷 도처에 분산되어 있다.


-----------------------
Resolving

통신을 위한 TCP/IP 패킷엔 도메인명을 위한 공간이 없다. 따라서 도메인명에 대한 IP 변환작업(Resolving)을 수행 한다.

Client의 응용 프로그램이 www.falinux.com 에 접속하기 위해 자신의 로컬 네임 서버에 질의한다.

로컬 네임 서버는 먼저 자신의 캐쉬에 질의한 도메인 관련 데이터가 있는지 확인한 후 발견되지 않을 경우, 루트 네임 서버(Root NS)에 질의를 한다. 

그러나 루트 네임 서버도 www.falinux.com에 대한 자료를 갖고 있지 않으므로, COM 도메인을 관리하는 네임 서버를 참고하라는 답변을 보낸준다.

로컬 네임 서버는 다시 COM 네임 서버에 질의를 하고, COM 네임 서버는 다시 falinux.com의 네임 서버를 알려 준다. 

로컬 네임 서버는 falinux.com 네임 서버에 질의한다. falinux.com 네임 서버는 서브 도메인에 대한 자료를 관리하는 실제 네임 서버 이므로, www.falinux.com 에 대한 IP 211.239.155.97를 답변(authoritative answer) 한다. 

마지막으로, 로컬 네임 서버는 요청한 Client에게 결과를 전송한다.