본문 바로가기

Network

DNS 동작 방식

우리는 naver.com이라는 단순한 domain name을 사용해 web server와 통신할 수 있다. 그렇다면 domain name과 실제로 기계가 해당 server의 위치를 파악하기 위해 사용하는  IP address를 어떻게 mapping 되는 것일까?

 

초창기의 Internet에서 사용했던 방식은 Static mapping으로 NIC(network information center)에서 전 세계의 hostnameaddressmapping된 정보가 들어있는 hosts file을 덮어쓰고 일정 주기마다 hosts file을 받아서 사용하였다

 

 

Internet이 발전하면서 하나의 management center가 감당하기에 불가능한 크기의 internet망이 형성되었고 dynamic mapping 방식을 사용하게 되었다. domain name을 hierarchical tree의 방식으로 설정하여 distributed database system을 사용한다.  이것이 지금 우리의 internet system이 사용하고 있는 DNS(Domain Name Service)이다.

 

1)heirarchical structure of Domain name

Domain name는 최대 128개의 leveltree 구조를 가지고 있다. Treeroot zone에서 시작하여 여러 개의 sub tree로 나뉜다. DNS zone은 하나의 authoritiative name server에 의해 관리되는 노드들의 집합이 된다.  Root servertop-level을 담당하는 server의 목록과 IP를 알고, top-level serversecond-level server와 목록과 IP를 알고, second-level serversub의 목록과 IP를 알고 있다. , 상위의 server가 하위 server의 목록과 IP주소를 알려주는 계층적인 구조를 가진다.

heirarchical structure of Domain name

 

 

2)Distributed Database system

Root server : 인터넷에는 A부터 M까지 분류되는 root server가 존재한다. 이 서버들은 전세계 곳곳에 약 400대 이상이 위치해 있고, 대부분은 북미 지역에 위치한다. www.root-servers.org

TLD(Top-level domain) server : 세자리로 구성된 com, org, net, edu 일반 domain, 두자리로 구성된 uk, fr, ca, jp과 같은 국가 domain 등을 가지고 있다 이는 ICANN(Internet Corporation for Assigned Names and Numbers)에서 관리한다. 대한민국의 domain.kr name server는 우리나라에 5, 미국에 1개의 server가 위치해 있다. (이를 통해 IP주소가 server가 위치하는 물리적인 장소를 의미하지 않음을 알 수 있다.)

Authoritative DNS server : 단체의 DNS serverauthoritative hostnameIP 주소의 mapping 정보를 제공한다.

 

예를 들어 찾고자 하는 domain name이 www.naver.com.인 경우 client는 처음에 com DNS server를 찾기 위해 .root serverquery를 보내고, naver.com DNS server를 찾기 위해 com DNS serverquery를 보내고, 최종적으로 clientnaver.com DNS serverquery를 보내www.naver.comIP주소를 얻어온다.

 

3)Local Name Server

Local Name Server : 개인이나 기업체에게 인터넷 접속 서비스, 웹사이트 구축 및 웹호스팅 서비스 등을 제공하는 회사인 각 ISP(Internet Service Provider) 는 하나의 local name server를 가지고 있다. Hostlocal DNS serverquery를 날리면, local DNS server는 이의 대리인처럼 queryhierarchy하게 forward 시킨다. , PC로부터 DNS query를 받아 domain addressmappping되는 IP 주소를 받아오는 과정을 수행하여 그 결과 값을 전달 하는 serverlocal name server이다.

 

4) Name resolution

Iterative queries의 경우에는 Hostnaver.com에 대해 query를 보내면 Local DNS serverroot name serverquery를 보내 com담당 server의 주소를 return 받고, 다시 com 담당 serverquery를 보내 naver.com이 변환 요청을 보낸다. 이렇게 최종 IP 주소를 받을 때까지 요청 &응답을 계속해서 local name server가 반복하는 방법이다.

iterative query의 동작 방식

 

Recursive queries의 경우에는 local Hostnaver.com에 대해 query를 보내면 Local DNS serverroot name serverquery를 보내고, root server는 자신의 server에 등록되어 있는지 검사한 다음 없으면 com 담당 서버에 요청을 한다. recursive하게 실제 domain name을 가지고 있는 server까지 query가 이동하여 IP 주소를 얻는 방법이다. 이러한 방법은 root server에 너무 큰 부담을 준다는 단점이 있다.

recursive query의 동작 방식

 

실제 DNS server의 동작 방식은 recursive queryiterative query를 함께 사용함으로써 효율성을 높인다. 또한 변환기를 통해 local name server recursive하게 query 함으로써 client hostresource 소비를 줄일 수 있게 하였다.

실제 DNS 동작 방식

 

 

※참고사이트

https://ko.wikipedia.org/wiki/%EB%8F%84%EB%A9%94%EC%9D%B8_%EB%84%A4%EC%9E%84_%EC%8B%9C%EC%8A%A4%ED%85%9C (위키피디아 DNS서버)
https://zzsza.github.io/development/2018/04/16/domain-name-system/ (Domain Name System의 이해)
https://www.netmanias.com/ko/post/techdocs/5259/dns-network-protocol/dns-basic-operation (DNS 기본 동작 원리)
https://slideplayer.com/slide/5174685/ (사진)
https://slideplayer.com/slide/5326443/ (사진)
http://blog.daum.net/tlos6733/34 (DNS동작 방식&네임 변환 과정)