오늘은 DNS(Domain Name System)의 아주 기본적인 동작 원리에 대해서 설명드리겠습니다.
먼저 모든 단말(PC)은 DNS 서버의 IP 주소가 설정되어 있어야 합니다. 보통 PC는 DHCP 프로토콜로 IP 주소를 할당 받으면서 DNS 서버 IP 주소를 DHCP Option 6을 통해 함께 받습니다. (보통 2개의 DNS IP 주소를 받지요. Primary DNS 서버가 죽었을때 Secondary DNS 서버에 물어 보기 위해서...) 제 PC의 예를 보여 드리겠습니다. DNS 서버 주소가 203.248.252.2와 164.124.101.2로 설정 되어 있습니다. 이 2개의 주소는 LG U+ DNS 서버 주소입니다. (www.whois.co.kr에서 IP 주소 관련 정보 확인이 가능함)
- 이제 아래 그림과 같이 PC 브라우저에서 www.naver.com을 입력합니다. 그러면 PC는 미리 설정되어 있는 DNS (단말에 설정되어 있는 이 DNS를 Local DNS라 부름, 제 PC의 경우는 203.248.252.2)에게 "www.naver.com이라는 hostname"에 대한 IP 주소를 물어봅니다.
- Local DNS에는 "www.naver.com에 대한 IP 주소"가 있을 수도 없을 수도 있습니다. 만약 있다면 Local DNS가 바로 PC에 IP 주소를 주고 끝나겠지요. 본 설명에서는 Local DNS에 "www.naver.com에 대한 IP 주소"가 없다고 가정합니다.
- Local DNS는 이제 "www.naver.com에 대한 IP 주소"를 찾아내기 위해 다른 DNS 서버들과 통신(DNS 메시지)을 시작합니다. 먼저 Root DNS 서버에게 "너 혹시 www.naver.com에 대한 IP 주소 아니?"라고 물어봅니다. 이를 위해 각 Local DNS 서버에는 Root DNS 서버의 정보 (IP 주소)가 미리 설정되어 있어야 합니다.
- 여기서 "Root DNS"라 함은 좀 특별한 녀석인데요(기능의 특별함이 아니고 그 존재감이..). 이 Root DNS 서버는 전세계에 13대가 구축되어 있습니다. 미국에 10대, 일본/네덜란드/노르웨이에 각 1대씩... 그리고 우리나라의 경우 Root DNS 서버가 존재하지는 않지만 Root DNS 서버에 대한 미러 서버를 3대 운용하고 있다고 합니다.
- Root DNS 서버는 "www.naver.com의 IP 주소"를 모릅니다. 그래서 Local DNS 서버에게 "난 www.naver.com에 대한 IP 주소 몰라. 나 말고 내가 알려주는 다른 DNS 서버에게 물어봐~"라고 응답을 합니다.
- 이 다른 DNS 서버는 "com 도메인"을 관리하는 DNS 서버입니다.
- 이제 Local DNS 서버는 "com 도메인을 관리하는 DNS 서버"에게 다시 "너 혹시 www.naver.com에 대한 IP 주소 아니?"라고 물어봅니다.
- 역시 "com 도메인을 관리하는 DNS 서버"에도 해당 정보가 없습니다. 그래서 이 DNS 서버는 Local DNS 서버에게 "난 www.naver.com에 대한 IP 주소 몰라. 나 말고 내가 알려주는 다른 DNS 서버에게 물어봐~"라고 응답을 합니다. 이 다른 DNS 서버는 "naver.com 도메인"을 관리하는 DNS 서버입니다.
- 이제 Local DNS 서버는 "naver.com 도메인을 관리하는 DNS 서버"에게 다시 "너 혹시 www.naver.com에 대한 IP 주소 있니?"라고 물어봅니다.
- "naver.com 도메인을 관리하는 DNS 서버"에는 "www.naver.com 호스트네임에 대한 IP 주소"가 있습니다. 그래서 Local DNS 서버에게 "응! www.naver.com에 대한 IP 주소는 222.122.195.6이야~"라고 응답을 해 줍니다.
- 이를 수신한 Local DNS는 www.naver.com에 대한 IP 주소를 캐싱을 하고(이후 다른 넘이 물어보면 바로 응답을 줄 수 있도록) 그 IP 주소 정보를 단말(PC)에 전달해 줍니다.
이와 같이 Local DNS 서버가 여러 DNS 서버를 차례대로 (Root DNS 서버 -> com DNS 서버 -> naver.com DNS 서버) 물어봐서 그 답을 찾는 과정을 Recursive Query라고 부릅니다.
그리고 한가지만 더!
- http://www.naver.com/index.html -> 이거는 URL이라 부릅니다.
- www.naver.com -> 이거는 Host Name이라 부릅니다.
- .com -> 이거는 Top-level Domain Name이라 부릅니다.
- .naver.com -> 이거는 Second-level Domain Name이라 부릅니다.
https://www.youtube.com/watch?feature=player_embedded&v=srBQSzRRNF4
음... 이게 recursive인가요??
iterative아닌가요??
recursive와 iterative는 사전적인 의미는 유사하지만,
일반적으로 업계에서 사용되는 기술 용어는 Recursive DNS가 맞는 걸로 알고 있습니다~
감사합니다. 덕분에 잘 이해 하고 갑니다.
고마워용 ㅜㅜㅜㅜ
왜그런지는 잘 모르겠지만 로그인이 안되네요..
어려운 내용을 쉽게 설명해주시니 너무 감사합니다 ^^ . 동영상 재생이 아쉽네요ㅠㅠ
잘보았습니다 local DNS는 단말 pc내에서 작동 되고 있는것인가요? 만약 어뎁터 설정에서 기본 DNS설정을 자동으로 받기로 해두면 말씀해주신 root DNS 서버들과의 recursive query 과정으로 찾고자 하는 주소의 ip주소를 얻게 되는건가요? 만약 수동으로 DNS설정을 해두면 어떤 과정이 생략되는건가요? 아 질문이 다소 정황이 없네요 ^^;;
Local DNS 서버는 단말 PC에 수동으로 설정도 가능하지만, 일반적으로 DHCP를 통해 IP 주소를 할당 받을때 DNS 주소가 함께 전달됩니다. 예를 들어, KT 가입자는 KT DHCP 서버로 부터 IP 주소를 할당 받으면서 KT DNS 서버 주소가 함께 전달됩니다. 윈도우즈 command 창에서 ipconfig /all 해보시면 현재 사용되고 있는 local DNS 서버 주소를 확인하실 수 있습니다.
위 답변내용중 틀린내용이 있어 보냅니다. recursive query는 pc가 local DNS에게 던질때 쓰는 쿼리 타입니다.
recursive query는 간단히 말하면 어떻게는 너가 IP주소를 찾아와 라는 쿼리 타입이고
iterative query는 local DNS가 root , com ns등에 query하는 타입으로 이 쿼리를 받으면 자기 자신에게 해당 A 쿼리 정보나 NS정보를 주는 수준으로 끝납니다.
좋은자료 감사합니ㅏㄷ.
좋은 자료 감사합니다^^
DNS 관련 발표 준비중인데 해당 출처 밝힌 뒤 참고해도 될까요??
네, 발표 자료에 출처 명시 후 사용하세요.
참 잘 만들었네요. 자료가 보기쉽습니다.
LGU+의 주/부 DSN server는 203.248.252.2(cns2.lguplus.com), 164.124.101.2(ns.lgtelecom.com) 으로 둘 모두 .com 도메인의 sub 도메인인데요. 세번째 단계에서 local DNS가 바로 Root DNS에게 Query하기 전에 .com Domain DNS에 Query를 하고, Query한 "www.naver.com"도 .com Domain에 속하는 서브 도메인이니, .com DNS에서 Root DNS로 Query 하지 않고, 바로 naver.com DNS로 Query를 날리는게 맞지 않은가요?
거의 설명을 맛깔나게 하셧네
설명 진짜 잘하셨네요 감사합니다
설명이 잘 되어 있네요 감사합니다. 혹시 개인 블로그에서 글을 공유해도 되는지 여쭤보고 싶습니다.
@이방인님, 출처(넷매니아즈, https://www.netmanias.com/ko/?m=view&id=blog&no=5353)만 명시해 주시면 개인블로그에 공유하는데 전혀 문제 없으십니다.
내용 정말 좋네요. 출처 남기고 일부 내용 퍼가도록 하겠습니다. 감사합니다! ㅎㅎ
DNS 키워드로 검색하다 찾게 되었습니다. 정말 큰 도움이 되었습니다 ^^
DNS hosting 검색하다가 너무 정리가 깔끔하게 된 걸 찾게 되었네요ㅠ 참고해서 공부하겠습니다!
Recursive와 Iterative query에 대하여 설명이 조금 분명치 않아서 추가 설명을 하자면..
그림에서 Local DNS 서버는 지금 Recursive query를 하고 있고,
Root, Com, Naver.com DNS는 Iterative query를 하고 있습니다.
감사합니다. 잘봤습니다.
무릎을 탁 치고 갑니다
지렸습니다
자세하고 이해하기 쉬운 설명 감사합니다. 덕분에 DNS 서버를 이해했습니다. 다름이 아니라 제가 혼자 공부하면서 글 정리하는 블로그에 사진을 사용해도 될까요? 출처는 확실히 밝히겠습니다.
네, 사용하셔도 됩니다.
안녕하세요
Root 서버는 전세계 13 곳(대부분 미국)에 분포되있다고 합니다. 설명하신 내용에서 .com dns 서버, .naver.com dns 서버, local DNS 서버는 어디에 위치하나요?
좋은하루 되십시오.