사용자가 입력한 도메인 주소(Domain Name)를 IP 주소로 변환해주는 프로토콜이다. 전세계에 흩어진 DNS 서버를 돌면서 IP 주소를 찾는다.
DNS는 네트워크 프로토콜로 UDP를 사용한다. DNS 서버가 여러 개이므로 마구 보낸 뒤에, 하나라도 IP 주소 응답이 오면 그걸 받아서 웹브라우저에 저장한다(그럼 다음에는 DNS를 체크하지 않아도 저장된 IP주소로 도메인 주소를 바로 변환한다).
DNS는 IP 주소 변환 서비스의 hostname이다. DNS는 name 서버의 계층 구조로 구현된 분산 데이터베이스이다. 클라이언트와 서버 간 메시지 교환을 위한 응용 프로그램 계층 프로토콜이다.
모든 host는 IP 주소로 식별되지만 사람들이 숫자를 일일이 기억하는 것은 매우 어렵다. 또한 IP 주소는 고정되어 있지 않으므로 도메인 이름을 IP 주소로 변경하려면 맵핑이 필요하다. 따라서 DNS는 웹 사이트의 도메인 이름을 숫자 IP 주소로 변환하는 데 사용된다.
도메인의 종류는 다양하다.
1. 일반 도메인 : .com(상업용commercial), .edu(교육용), .mil(군사), .org(비영리), .net(상업용) 등
2. 국가 도메인 : .in(인도), .us, .uk 등
수백만 개의 웹사이트가 있고 모든 웹사이트에서 즉시 IP 주소를 생성할 수 있어야 하므로 웹사이트와 연결된 IP 주소를 찾는 건 어렵기에 데이터베이스는 매우 중요하다.
호스트는 DNS name server에 도메인 이름을 확인하도록 요청한다. 그리고 name server는 해당 도메인 이름에 해당하는 IP 주소를 호스트에 반환해서 나중에 호스트가 IP 주소에 연결할 수 있도록 한다.
도메인 수가 매우 많으므로 위 그림과 같이, DNS 서버 종류를 계층화해서 단계적으로 처리한다.
크게 4가지로 분류 할 수 있다.
Root DNS server
ICANN이 직접 관리하는 서버. TLD DNS 서버의 IP를 저장해두고 안내하는 역할
TLD(최상위 도메인) DNS server
도메인 등록 기관(registry)이 관리하는 서버로, Authoritative DNS server 주소를 저장해두고 안내하는 역할을 한다.
Authoritative DNS server
실제 개인 도메인과 IP 주소의 관계가 기록,저장,변경되는 서버. 일반적으로 도메인/호스팅 업체의 name server를 말하지만, 개인 DNS 서버 구축을 한 경우에도 여기에 해당한다.
Recursive DNS server
인터넷 사용자가 가장 먼저 접근하는 DNS 서버이다. 위 3개의 서버를 매번 거치면 효율이 좋지 못하므로 한번 거쳐간 데이터를 일정 기간(TTL, time to live) 동안 캐시 형태로 저장해두는 서버이다. 직접 도메인과 IP 주소의 관계를 기록,저장,변경하지 않고 캐시만 저장하는 서버이다. 대표적으로 KT, LG, SK 같은 ISP(통신사) DNS 서버가 있고 브라우저 우회 용도로 많이 쓰는 구글 DNS, 클라우드플레이어 같은 Public DNS 서버가 있다고 한다.
Domain Name System (DNS) in Application Layer
DNS란 뭐고, 네임서버란 뭔지 개념정리