IT 지식/네트워크(Network)

컴퓨터 네트워크 - DNS: Domain Name System

나아가는중 2021. 11. 29. 19:02
반응형

DNS (Domain Name System)

인터넷 프로토콜의 장비들(라우터, 링커)이 통신하기 위해서는 IP 주소를 알아야 한다. 32 bit로 이루어진 이 주소는 사람이 기억하거나 해석이 어려워 사람이 사용하기 쉬운 이름을 붙인 것이 Domain Name이다. 하지만 Domian name은 소프트웨어가 인식할 수 있는 이름이 아니다. 사람에게는 IP 주소를 Domain name으로 소프트웨어에게 Domain name을 IP 주소로 바꿔주는 것(resolve)이 DNS이다.

 

DNS 계층 구조

DNS는 많은 name 서버들의 계층 구조로 구현된 분산 데이터베이스로 이루어져 있다. 중앙 집중식(centralized) 서버의 경우 공격을 받거나 문제가 생기면 전체 웹 서비스가 멈출 수 있기 때문에 분산한다. 또한 DNS query의 양이 많아 큰 트래픽이 발생할 수 있기 때문이다. 

Root DNS Server는 전세계에 a ~ k까지 총 13개가 있다. 전 세계에 300개가 넘는 복제 서버가 운용되며, 국내에서는 f, j, m, l의 복제 서버를 운용한다. Top level Domain server에는 .com, .org, .net, .edu 등이 있고 국가 domain으로 uk, fr, kr 등이 있다. 상업적인 용도로는 .com과 .net이 가장 많이 사용되고 교육용으로는 .edu가 사용된다. Authoritative DNS servers에서 각 기관은 공용 엑세스 서버(Web, mail 등)의 hostname을 IP로 매핑하는 것을 제공해야 한다.

 

Local Name Server가 계층 구조에는 속하지 않고 그 아래에 위치한다. 소규모 ISP, 회사, 학교에서 운영되며 default name server라 불리기도 한다. 단말이 DNS query를 날리면 단말의 local DNS server로 전송된다. 프록시처럼 동작하며 계층 구조로 query를 전송한다. 

 

호스트가 어떤 웹사이트가 접속하고자 IP주소를 물어보면 우선 local DNS server로 query를 보낸다. 만약 local DNS server가 모르는 경우 root DNS server, TLD DNS server, authoritative Domain server 순으로 찾을 때까지 물어본다(iterative query). 이 밖에 재귀적인 방식도 존재한다.

 

DNS 기능

 

DNS의 가장 중요한 기능은 Hostname(domain name)을 IP 주소로 변경해주는 것이다. 이 밖에도 추가적으로 Host aliasing, mail server aliasing, load distribution의 기능이 있다.

 

Host aliasing: 정식 명칭(canonical hostname)은 복잡하여 유저는 단순한 별칭(alias hostname)을 사용할 수 있는데, DNS 질의(query)를 통해 정식 명칭을 얻을 수 있다. 

Mail server aliasing: 메일서버의 별칭으로부터 정식 명칭을 얻을 수 있다.

Load distribution: 클라이언트가 웹서버의 이름에 대해 DNS 질의를 했을 때, 해당 서버가 복제된(replicated) 웹서버들인 경우 DNS 서버는 해당 IP주소의 전체 set을 주고, 이때 주소의 순서를 매번 섞어(rotate) 서 준다. 이를 통해 서버의 부하를 분산시키는 효과를 얻을 수 있다. (복제된 웹 서버는 한 개의 정식 명칭에 여러 IP주소들이 대응되어 있음)

 

DNS records

 

DNS 서버가 저장한 한개의 entry 정보는 resource records (RR)이라 한다. RR은 다음과 같은 형태를 갖는다 (name, value, type, ttl(시간)). 타입에는 A, NS, CNAME, MX 4가지 종류가 있다.

A type : name = 가장 일반적인 형태로 전형적인 DNS RR이다. 호스트 주소, value = IP 주소

NS type : 해당 도메인의 authoritative DNS 서버의 이름을 알려준다. name = 도메인, value = authoritative DNS 서버의 도메인 이름

CNAME type : name = 정식 명칭(canonical name)의 별칭(alias name), value = 정식 명칭

MX type : value = name(domain)과 연결된 메일 서버의 이름.

 

 

DNS protocol, messages

DNS protocol에는 query와 replay 메시지가 있으며, 둘 모두 같은 메시지 포맷을 사용한다.

 

위의 12 bytes가 메세지의 해더 부분이다.

identification: 16 bit, 어떤 query에 대한 reply인지 매치

flags: query인지 reply인지, 재귀(recursion)가 가능한지, 필요로 하는지, 응답이 authoritative 한 지

 

 

 

 

 

 

 

 

반응형