Posts [Network] 전세계 DNS 서버들은 어떻게 연동할까?
Post
Cancel

[Network] 전세계 DNS 서버들은 어떻게 연동할까?

03 전 세계의 DNS 서버가 연대한다.

본 설명은 책 “성공과 실패를 결정하는 1%의 네트워크 원리”를 읽으며 제 나름대로 해석하고 정리해 보았습니다.

1. DNS 서버의 기본동작

DNS 서버의 기본 동작은 클라이언트에서 조회 메세지를 받고 조회의 내용을 응답하는 형태로 정보를 회답하는 일이다. 조회 메세지에는 세가지의 정보가 포함되어있는데

1) 이름 : 서버나 매일 배송 목적지(메일에서 @뒷부분)와 같은 이름

2) 클래스 : 현재는 인터넷 이와의 네트워크가 없으므로 클래스는 항상 인터넷을 나타내는 ‘IN’ 이라는 값

3) 타입 : 이름에 어떤 타입의 정보가 지원되는지 (EX. A : IP 주소 지원, MX: 매일 베송 목적지 지원)

예를들면, 이름이 www.naver.com 인 서버의 ip 주소를 조사할때 클라이언트는 아래와 같은 조회 메시지를 DNS 서버에 보낸다.

1) 이름 = www.naver.com

2) 클래스 = IN

3) 타입 = A

그러면 DNS 서버는 등록된 정보를 찾아 이름, 클래스, 타입의 세가지와 일치하는 것을 찾는다. 이 세가지 모두가 일치하는 항목을 찾으면 여기에 등록되어있는 xxx.xxx.xxx.xxx 의 값을 회답하는 것이다.

만약에 메일인 타입의 경우 (hoyeon@naver.com) 즉, MX 클래스일때는 조회 메시지가 다음과 같을 것이다.

1) 이름 = naver.com

2) 클래스 = IN

3) 타입 = MX

2. 도메인의 계층

이테까지는 조회메시지를 받은 DNS 서버에 이름과 IP주소가 모두 등록되어 있는 경우를 살펴보았다. 그런데 생각해보면 인터넷에는 막대한 수의 서버가 있는데 이 모두를 1대의 DNS 서버에 등록하는 것은 불가능하다. 따라서 만약에 DNS 서버에 정보가 등록되지 않은 경우 어떻게 작동하는지 살펴보도록 하자.

결론부터 말하자면 정보를 분산시켜 여러대의 DNS 서버에 등록하고 서로 연대하여 어디에 정보가 등록되어있는지 찾아내는 구조이다.

먼저 DNS 서버에 등록한 정보에는 모든 도메인명 이라는 계층적 구조를 가진 이름이 붙여져있다. 그렇다면 어떻게 계층이 구분되어져있나 라고 물어보자면, 점으로 계층을 구분한다고 답할 수 있다. (도메인 사이사이 점). 예를들어 www.lab.cyber.co.kr 이라는 쳤을때 오른쪽에 위치한 것이 상위의 계층을 나타낸다. 따라서 ‘com 사업부 cyber 부 lab 과의 www’ 라고 생각할 수 있다. 그리고 하나의 부서에 해당하는 것을 도메인 이라고 할 수 있기 때문에 com이라는 도메인 아래에 cyber > lab > www 이름이 있는 샘이다.

3. 담당 DNS 서버를 찾아 IP 주소를 가져온다.

그래서 결국에 액세스 대상의 웹 서버가 어느 DNS 서버에 등록됬는지 알아야한다. 아시다시피 인터넷에는 DNS 서버가 수만대 있기 때문에 얘네를 하나하나 방문해가며 찾는거는 말이안된다.

그래서 다음과 같은 방법으로 이를 해결할 수 있다.

먼저 하위의 도메인을 담당하는 DNS서버의 IP주소를 그 상위의 DNS 서버에 등록한다. 그리고 상위의 DNS 서버를 또 그 상위의 DNS 서버에 등록하는 방식으로 차례 차례 등록해간다.

예를들어, lab.glasscom.com 이라는 도메인을 담당하는 서버를 glasscom.com의 DNS 서버에 등록하고 glasscom.com의 DNS 서버를 com 도메인의 DNS 서버에 등록하는 방식이다. 이렇게 하면 상위의 DNS 서버에 가면 하위의 DNS 서버의 IP 주소를 알 수 있고, 거기에서 조회 메시지를 보낼 수 있는 것이다.

그런데 여기서 끝이 아니다. com 혹은 kr이 상위에 또 하나의 로트 도메인 이라는 도메인이 있다. 클라이언트 측에서 원하는 어떤 DNS 서버든지 액세스 하기 위해서 루트 도메인의 DNS 서버는 인터넷에 존재하는 모든 DNS 서버에 전부 등록한다. 사실 루트 도메인의 DNS 서버에 할당된 IP 주소는 전 세계에 13개 밖에 없기 떄문에 이것을 각 DNS 서버에 등록하는 작업은 어렵지 않다.

4. DNS 서버는 캐시 기능으로 빠르게 회답할 수 있다.

위에서 설명한 것처럼 가장 가까운 DNS 서버에서 루트 도메인 그리고 최상위 > 하위로 차례차례 찾아가는 방식으로 회답을 할 수 있지만 DNS 서버에는 캐시 기능이 있어 한번 조사한 이름은 기록할 수 있다. 따라서 DNS 서버에 조회한 이름이 도메인에 등록되어 있지 않더라도 캐시기능으로 빠르게 찾을 수 있다. (참고로 캐시에는 유효기간이 있다)

This post is licensed under CC BY 4.0 by the author.

[백준] #20057 마법사 상어와 토네이도 Python (파이썬)

[Network] 데이터 송수신하는 프로토콜 스택

Loading comments from Disqus ...