Domain Name System, DNS
DNS 서비스
DNS는 크게 4가지 호스트 네임/IP 주소 변환, 호스트 앨리어싱, 메일 서버 앨리어싱, 부하 분산 서비스를 제공한다. 주 서비스는 호스트 네임/IP 주소 변환이다.
1. 호스트 네임/IP 주소 변환 디렉터리 서비스
사람을 주민등록번호나 여권번호로 식별하듯이 인터넷에서는 호스트나 라우터의 식별자로 IP 주소를 사용한다. 컴퓨터 입장에서는 32 비트의 IPv4 주소로 식별하는 것이 좋지만, 사용자의 입장에서는 32비트의 IPv4 주소를 외우는 것은 불가능하다. 그렇기에 호스트 네임을 제공하여, 컴퓨터는 IP 주소로, 사용자는 호스트 네임을 사용하도록 했다.
이 때 호스트 네임은 IP 주소와 달리 인터넷 상 어디에 위치하는지에 대한 정보가 담겨있지 않다. 호스트 네임을 IP 주소로 변환해주는 서비스가 필요하게 되고 이를 DNS가 담당하게 된다.
2. 호스트 앨리어싱
간략한 별칭 호스트 네임을 여러 복잡한 정식 호스트 네임으로 변환해주는 서비스이다. 예시로
nslookup
이라는 DNS 관련 명령어로 네이버의 호스트 네임을 살펴보자.> nslookup www.naver.com 서버: kns.kornet.net Address: 168.126.63.1 권한 없는 응답: 이름: www.naver.com.nheos.com Addresses: 223.130.195.200 223.130.200.107 Aliases: www.naver.com
3. 메일 서버 앨리어싱
호스트 앨리어싱과 유사하게 전자메일 주소에 대한 앨리어싱 서비스를 제공한다.
4. 부하 분산
복제 웹 서버 환경으로 구성되어 있는 경우 하나의 정식 호스트 네임과 각 서버의 IP주소와도 맵핑이 되어야 한다. 호스트 네임에 대한 DNS 질의를 하면 서버 IP 주소의 집합을 순환식으로 응답하여 부하를 분산시킨다.
DNS 프로토콜
DNS 프로토콜은 1) HTTP, FTP처럼 클라이언트-서버 구조로 통신하는 네트워크 종단 사이에서 수행되고, 2) DNS 메시지를 전달하기 위해 하위 트랜스포트 프로토콜에 의존한다. DNS 프로토콜은 사실 사용자가 직접 사용하는 애플리케이션이 아닌 인터넷 기능을 제공하지만, 위 2가지 이유로 애플리케이션 계층에 속하게 된다.
DNS 프로토콜은 UDP 상에서 수행되고 포트 번호는 53을 이용한다. DNS 메시지 교환은 시간에 민감하기도 하며, 신뢰성이 보장되지 않아 통신 중간에 사라져도 다시 빠르게 보내면 되기에 UDP를 사용한다.
DNS 서버 구조
DNS 서버는 확장성을 위해 분산 계층 데이터베이스 구조로 이루어져 있다. 계층 구조에는 크게 세 유형인 루트 DNS 서버, 최상위 레벨 도메인 네임 DNS 서버, 책임 DNS 서버가 있다.
루트 DNS 서버
현재 약 1000개 이상의 루트 DNS 서버가 있고 12개의 기관에서 관리 중이다. 루트 DNS 서버는 하위 계층인 최상위 레벨 도메인 서버들에 대한 IP 주소들을 제공한다.
최상위 레벨 도메인(TLD) 서버
com
org
net
edu
같은 상위 레벨 도메인과 kr
uk
fr
jp
같은 국가의 상위 레벨 도메인을 관리한다. TLD 서버는 하위 계층인 책임 DNS 서버들에 대한 IP 주소들을 제공한다.책임 DNS 서버
사용자가 접근하기 쉬운 호스트를 가진 기관들(아마존, 네이버 등)의 DNS 서버이며 기관의 호스트 네임을 IP 주소로 매핑하는 DNS 레코드를 제공한다.
로컬 DNS 서버
계층 구조에 엄격하게 속하지는 않지만, 사용자를 대신하여 DNS 질의를 DNS 서버 계층으로 전달하거나 캐싱하여 응답하는 DNS 서버이다. 로컬 DNS 서버는 인터넷 접속 서비스를 제공하는 ISP (ex. SK, KT, LG U+)들이 관리한다.