이번 시간에는, DNS 통신에 대하여 설명을 하겠다.
이전 시간에서 DNS의 기초에 대하여 간단하게 알아보는 시간이었다.
만약, DNS의 기본적인 개요를 모른다면 아래의 사이트를 클릭 !
DNS시작하기 ! – https://jinheeahn.wordpress.com/2015/08/28/1-dns-시작하기
필자가 연재하는 블로그의 내용은 "네트워크 초보자들이 이해하기 쉽고, 필자와 함께 공부할 수 있는 시스템을 만들자." 라는 목적으로 연재하는 것이니 모르는 부분이 있으면 과감하게 질문을 던지고, 틀린 부분이 있다면 지적해주시기 바란다.
우리의 최종 목표는 W5500-EVB(Embedded) 보드에 DNS Client를 구성하고, DNS Server(Local DNS Server)와 통신하여 원하는 Domain Name을(www.naver.com) DNS Server로 요청했을 때, DNS Server가 요청한 Domain Name에 매핑되어 있는 IP 주소를 응답해주는 것을 구현하는 것이다.(222.122.195.6)
현재 구글에서 DNS에 대한 검색을 한다면, 대부분이 DNS Server에 대한 설명을 한다. (실제 DNS Server가 Main이니깐 당연하다.)
하지만, 우리가 구현할 DNS는 Client이므로, 앞서 설명한 것과 같이 DNS Client와 Local DNS Server와의 통신하는 방법만 알면 알아서 DNS Server에서 IP에 대한 정보를 알려줄 것이다.
(즉, DNS Server를 구현할 필요가 없다.)
● 왜 DNS Server를 구현할 필요가 없을까?
-> DNS Server는 이미 구현되어 있기 때문에 그냥 사용하기만 하면 된다.
-> 만약, DNS Server를 구현하고 싶다면..... 아쉽지만 다른 자료를 찾아볼 것을 권장한다.
-> 하지만 DNS Server의 전체적인 기본 동작을 알고 싶다면 연재하는 글을 참조해도 무방하다.
자, 이제 시작하도록 하자.
보통 가정용 PC는 유동형 IP를 사용한다.
(Window7 기준) 제어판 -> 네트워크 및 인터넷 -> 네트워크 연결 -> 속성 -> Internet Protocol Version 4 (TCP/IPv4)에 접속하면, 아래의 그림과 같이 IP가 설정되어있지 않다면 유동형 IP동작을 한다. 그렇다는건 DHCP라는 것으로 부터 IP를 할당받게 된다.
DHCP로 부터 IP를 할당받을 때, Local DNS Server의 IP도 같이 할당받게 된다.
그러면 DNS Client는 Local DNS Server로 원하는 Domain Name을 요청하면, Local DNS Server가 알아서 요청하는 해당 Domain Name을 검색하여 매핑되어 있는 해당 IP주소를 DNS Client로 응답해주게 된다.
● DNS Server 설명.
기본적으로 DNS Server가 어떻게 동작하는지는 알아야할 필요성이 있다.
아래의 그림은 DNS의 전체 동작 Flow다. 여기서 빨간색 테두리로 표시된 것은 우리가 구현해야할 부분이고, 파란색 테두리로 표시된 것은 DNS Server가 하는 동작이다.
DNS는 반복질의를 통해 요청된 Domain Name의 매핑된 IP를 검색하게 된다. 그 중 가장 먼저 검색하게되는 최상위 계층으로 Root DNS라는 것이 있다. Root DNS는 DNS 프로토콜의 응답 패킷인 사용자 데이터그램 프로로콜(UDP)을 사용하는데, UDP는 내부에 수용된 서버 수의 최대치가 13이기 때문에 전 세계에서 오직 13대의 대형 컴퓨터에만 Root DNS가 존재한다.
Root DNS의 길이는 '0' (NULL)로 표현된다. 이 말은 Root DNS라는 이름은 갖고 있지만 내부 Data는 '0'이라는 것이다. Domain Name에서 Root는 기술상으로 모든 Domain Name의 일부이기 때문에 모든 Domain Name Name에 포함시켜야 한다.
(본래는 www.naver.com. 이지만 맨 끝에 .은 생략되므로 www.naver.com 으로 표시된다.)
즉, Root DNS를 거쳐 -> COM DNS를 거쳐 -> naver.com DNS를 거쳐 -> www.naver.com의 IP주소를 알게되고 이를 DNS Client에 전달한다.
DNS Server에 대한 좀 더 자세한 점을 알고 싶다면 아래의 링크를 확인바란다.
- DNS Server의 기본 동작 설명
http://www.netmanias.com/ko/post/blog/5353/dns/dns-basic-operation
● www.naver.com. 에 대한 추가적인 설명
*FQDN = 전체 주소 도메인 네임
*PQDN = 부분 주소 도메인 네임
Domain Name에서 주소의 마지막에 .(dot)를 사용하는 경우는 FQDN과 PQND을 명확하게 구분하기위해 사용한다. ex) apple.cs.widgetopia.edu.라는 Domain Name이 있는데, 여기서 apple은 방금 말한 Domain을 가리키고 있지만, apple.com.은 Apple사의 FQDN을 가르킨다.
여기서 apple.com.의 마지막 .(dot)가 중요하다. 마지막에 점이 없는 apple.com은 PQDN으로 애플컴퓨터의 Domain이 아니라 apple.cs.widgetopia.edu.을 가르킨다.
다음 시간에는 DNS 질의에 대한 설명으로 넘어가겠다 !