11. DNS(Domain Name Service)


  현재의 인터넷(Internet)에서는 TCP를 기반으로한 HTTP프로토콜이 주종을 이루고 있는데, 문제는 TCP통신은 IP프로토콜을 기반으로 하기 때문에, IP주소(IP Address)를 알아야만 통신이 가능하다.

  물론, 포트번호(Port Number)도 알아야 하지만, 대부분의 프로토콜은 고유한 포트번호가 이미 지정되어 ( RFC 1700 Assigned Number 에 명시) 있으며, 주로 사용하는 번호들은 2자리이기 때문에 이를 기억하고 이용하는데 별로 불편하지 않다.

  일반적인 UNIX계열에서는 /etc/services 파일에 지정된 번호들을 담고 있다. ( LINUX의 services 파일 ).

  그러나, IP주소의 경우는 문제가 있다. 32비트의 주소공간(IPv4의 경우임)을 사용하기 때문에 43억개의 숫자여서 그냥 숫자로 표현해서는 이를 정확히 전달하거나 기억할 수 없다. 따라서 123.123.123.123과 같이 8비트 4개로 구분한 점으로 구분되는 IP주소로 표현하는데, 이렇게 표현하는 것도 기억하기가 쉽지 않다.

  특히나 접속해야하는 장치가 불어날수록 점점더 어려워지게 된다.

  바로 이러한 점을 해결하고자 나온것이 도메인서비스(Domain Name Service)이다.

  DNS는 deadfire.hihome.com과 같은 명칭(Name)을 IP주소(IP Address)로 변경해주는 일을 기본적으로 제공하게 되는데, RFC 1035 Domain Names - Implementation and Specification 에 기술되어 있다.

  다음은 DNS를 통해서 얻을 수 있는 정보들이다.

  • 이름을 주소로 찾는다.
  • 주소로 이름을 찾는다.
  • 해당 주소의 메일서버 주소를 찾는다.
  • 지정된 도메인정보가 등록된 네임서버를 찾는다.
  • 호스트의 정보를 찾는다.
  • 메일박스나 메일링 리스트에 대한 정보를 찾는다.
  * 물론 위의 기능외에도 추가적인 다양한 기능들을 제공한다.

  DNS는 53번 포트를 사용하며, TCP와 UDP로 모두 서비스를 제공하지만, 보통은 UDP로 제공하는 것이 일반적이다. 즉, DNS는 UDP위에 올라가는 어플리케이션 레벨의 프로토콜이다.

  일단, 웹브라우저를 사용해서 yahoo 사이트에 접속하는 단계중 www.yahoo.co.kr을 어떤 단계를 거쳐 IP주소로 변경되는지 보자.

  1. 먼저 브라우저가 Resolver(일종의 Function이라고봐도좋다)를 통해서 자신이 속한 영역(Domain)에 위치하고 있는 Local NS(Name Server)에게 www.yahoo.co.kr의 IP주소를 문의한다.

  2. Local NS가 자신의 캐쉬(Local Cache)를 검사해서 www.yahoo.co.kr이 없다는 것을 알고, 최상위 NS인 "" NS(Root Name Server)에게 www.yahoo.co.kr이 어디인지 물어보게 되며, Root NSKR NS의 IP주소만을 알려주게 된다.

  3. 이제 Local NS는 다시 KR NS에게 www.yahoo.co.kr의 IP주소를 물어보게 되고, KR NSCO.KR NS 의 IP주소만을 알려준다.

  4. 다시 CO.KR에게 www.yahoo.co.kr을 문의하여 YAHOO.CO.KR NS(Name Server)의 IP주소를 받는다.

  5. 이제 YAHOO.CO.KR에게 www.yahoo.co.kr을 문의해서 비로소 IP주소를 받게 되며, Local NS가 이를 캐쉬(Local Cache)에 보관한다.

  6. Local NS가 문의 결과를 Resolver에게 전달하고, Resolver가 브라우저에게 IP주소를 통보하여 종결하게 된다.

  사실 중간의 KR NS, CO.KR NS, YAHOO.CO.KR NS, www.yahoo.co.kr의 주소가 모두 Local Cache에 보관되므로, www.unitel.co.kr에 대한 질의가 들어오게 되면 바로 CO.KR NS로 접근하게 된다. 물론, 다른 사람이 www.yahoo.co.kr을 문의하면 캐쉬의 결과를 바로 제공하게 된다.

  또한, 각 문의 결과는 일정한 시간(TTL, Time To Live)동안 유효하게 되며, 캐쉬에서 데이터를 찾아서 TTL값을 확인하고 응답을 주기도 하며, 그 시간이 지난 경우는 다시 문의하도록 되어있는데, 그 기간이 보통 1주일정도 된다.

    IP주소 변경   만일 www.yahoo.co.kr이란 이름으로 운영중인 장비의 IP주소를 부득이 변경하고자 한다면, 위의 예에서와 같이 변경후에 최소한 1주일이 지나야만 모든 캐쉬까지 Update되는 문제가 발생한다. 따라서, IP주소를 변경하기 전에 TTL값을 0으로 먼저 변경하고 1주일이 지난후에 IP를 변경하고, 그 후에 TTL값을 다시 늘려주는 방식으로 IP주소를 이전해가야 한다.
  이렇게 최초에 등록된 권한을 가진 NS로부터 직접 응답을 받는 경우에 Authoritative Answer 라고 하며, 그렇지 않은 경우는 보통 캐쉬에있는 정보를 받은 것이다.

- Last Update : 2003.04.25 by Deadfire(http://www.deadfire.net)

TCP/IP 강좌
Starting
NIC
허브
Cable
이더넷
LAN
라우터
IP
ICMP
TCP / UDP
TCP
UDP
DNS
Ending

Copyright ⓒ 1997 ~, Deadfire Program Master