DNS
DNS(Domain Name System)은 도메인 이름과 IP 주소를 매핑해주는 시스템이다.
주민등록번호, 핸드폰 번호와 같이 사람을 다양한 방식으로 식별할 수 있는 것처럼, 호스트에도 다양한 식별자가 있다.
호스트의 식별자에는 크게 도메인 네임
과 IP 주소
가 있다.
도메인 네임
은 우리가 흔히 보는 www.google.com과 같은 주소이고 IP 주소
는 111.111.111.111과 같이 4바이트로 구성된 주소이다.
사람의 입장에서는 IP 주소보다 도메인 네임이 더 기억하기 쉽지만, 라우터 입장에서는 그 반대이다. 도메인 네임은 인터넷에서의 해당 호스트 위치에 대한 정보를 거의 제공하지 못하기 때문에 IP 주소를 사용하고, 둘의 입장을 절충하기 위한 해결사가 DNS
인 것이다.
DNS Servers
만약 우리나라 전체 인구의 전화번호를 저장하고 있는 전화번호부가 딱 한 권있다고 가정해보자. 이 책이 사라지면 어떻게 될까? 그리고 이 책은 누가 가지고 있어야 되는걸까?
DNS
도 똑같다. 한 곳에서 모든 매핑을 처리하도록 설계되어있다면 이 곳이 망가질 경우 전체 네트워크가 망가지게 된다는 문제가 발생한다. 또한, 하나의 네임 서버가 전 세계의 데이터를 저장해야 되기 때문에 유지보수
가 어려워진다.
그래서 DNS는 분산
되도록 설계되어있다.
DNS는 많은 서버를 이용하고 이들을 계층 형태
로 구성하여 전 세계에 분산되어있다. 대체로 세 가지 유형의 DNS 서버가 있다.
루트 DNS 서버
인터넷에는 400개 이상의 루트 DNS 서버
가 있고, 대부분 북미 지역에 위치해있다. 이 루트 네임 서버들은 13개
의 다른 기관에서 관리된다.
TLD DNS 서버(Top Level Domain)
com, org, net, edu
같은 상위 레벨 도메인과 kr, uk, fr, ca, jp
같은 모든 국가의 상위 레벨 도메인이다. TLD 서버
들은 책임 DNS 서버
들에 대한 IP 주소
들을 제공한다.
책임 DNS 서버
호스트 네임을 IP 주소로 매핑 하는 DNS 레코드
를 제공하는 서버이다.
DNS work flow
-
브라우저
가 PC에 설정된로컬 DNS 서버
에 해당 도메인과 호스트명의 IP를 갖고 있는지 물어본다. ("너 www.google.com IP 주소 알아?") -
만약
로컬 DNS 서버
가 최근에 www.google.com의 IP 주소를 찾은 경험이 있다면 해당 IP 주소가캐싱
되어있을 것이고, 바로 브라우저에게 알려주면 된다.
하지만 처음 보는 주소라면 로컬 DNS 서버는루트 DNS 서버
에게 이 주소를 어디서 찾을 수 있는지 물어본다. ("나 www.google.com의 IP 주소를 알고 싶은데 어디로 가야될까?") -
루트 DNS
는 최상위 레벨 도메인을 갖는TLD 서버
의 IP 주소를 알려준다. ("com으로 끝나네? 그럼 여기로 가봐~") -
로컬 DNS 서버
는 이 주소를 가지고TLD 서버
에게 가서 다시 질문을 한다. ("나 www.google.com의 IP 주소를 알고 싶은데 어디로 가야될까?") -
TLD 서버
는 해당 도메인을 가진책임 DNS 서버
의 IP 주소를 알려준다. ("도메인이 google.com이네? 그럼 여기로 가봐~") -
로컬 DNS 서버
는 이 주소를 가지고책임 DNS 서버
에게 간 후 마지막으로 다시 한번 질문한다. ("www.google.com IP 주소 알려줘~!") -
책임 DNS 서버
가 IP 주소를 알려준다. ("www.google.com의 IP 주소는 이거야~")