본문 바로가기
카테고리 없음

[Application Layer] DNS architecture

by 바코94 2020. 5. 31.

 

계층 구조에서 1계층인 root에 대해 살펴보자.

 

ROOT(1계층)

client에게 TLD를 알려주는 역할을 한다.

global하게 root가 복제되어 미국에 10개 유럽에 2개 일본에 1개로 운영된다.

root는 직접 이름을 ip로 바꿔주는 것이 아니라 domain의 해당되는 2계층을 알려주게 된다.

단, 실제 서비스는 root로 오는 것 보다는 2계층까지 가는 것으로 운영하려 한다. 기본은 root로 오는 것이다.

 

TLD(top-level domain server)(2계층)

client에게 authoritative DNS server를 알려주는 역할을 한다.

2계층의 com 을 관리하는 서버는 com에 해당하는 모든 domain을 관리한다. 이런 방식으로 org, edu 와 같은 부류로 나누어 해당되는 종류의 모든 domain을 관리한다.

 

2계층에는 top-level country 

kr jp uk 등 나라에 해당되는 도메인(global address) 을 관리하는 서버도 있다.

kr에는 co, ac, go, or 등 많은 종류가 또 나뉜다. 3계층이 co, ac, go, or 이 되는 것이다.

 

정리하면 2계층에는 com, org, edu, kr, ca, uk 과 같은 것들 별로 서버가 있는 것이다. (미국은 .us을 안 쓴다.)

com에는 domain이 com인 모든 ip를 관리한다.

 

authoritative DNS server(3계층)

client에게 실제 이름 바꿔주는 역할을 한다. 도메인의 데이터베이스를 가지고 이름을 바꿔준다.

 

Local DNS name server

계층에는 포함되지 않지만 아주 중요하다. ISP(residential ISP, company, university)는 local name server을 가진다. client가 dns query를 날리면 domain에 있는 Local name server를 통해 가는 것이다. 즉, proxy역할을 하는 것이다. 

숭실대학교를 예로 들면 숭실대학교에 local name server와 authoritative server 가 있어서 숭실대학교 안의 사용자가 dns query를 날리면 local name server가 proxy역할을 하여 dns query를 처리해준다. 

residential도 동일하게 internet core로 가기전에 proxy 역할을 하는 local name server가 존재한다.

 

dns name resolution example

1. iterated query

local name server를 제외하고는 서버들이 stateless하여 부담이 없다. local name server만 dns query에 대한 정보만 관리하면 된다.

 

2. recursive query

 

recursive 방식이면 2번 요청 이후 6번이 올때 까지 root에서 query 정보를 memory에 저장해두어야 한다.

TLD도 3번 요청 이후 5번이 올 때 까지 query 정보를 memory에 저장해두어야한다.

즉, 상태를 관리하는 statefull한 방식이다. 이렇게 되면, root에 부하가 크게 된다.

 

 

local name server는 dns query를 처리하고 TTL 필드를 1시간으로 하여 name-ip를 캐시에 저장해둔다. 따라서, 최근에 사용된 domain-ip 정보가 cache에 남아있게 되어 관리된다.

cache 안에는 2계층인 TLD의 domain-ip도 존재하게 될 것이다. 따라서, 최근에 해당 TLD를 사용했다면 root를 굳이 안 가도 되게 된다.

 

정리하면 local name server에서 cache로 3계층, 2계층 name-ip 정보가 존재하여 2,1 계층의 부하를 줄일 수 있다.

 

앞서 배운 proxy server는 web service에서 사용하는 것이고 domain name server는 dns service에서 사용하는 것이다. 개념이 비슷하지만 같은 것이 아니다.