⚠️ 들어가기 앞서
경북대학교 컴퓨터학부 COMP0414-001 컴퓨터망 과목을 공부하며 정리한 글입니다.
도메인 이름 시스템(DNS)은 사람이 읽을 수 있는 도메인 이름(예: www.amazon.com)을 머신이 읽을 수 있는 IP 주소(예: 192.0.2.44)로 변환해 준다.
인터넷상의 모든 컴퓨터는 IP 주소를 가지고 있고 이를 가지고 서로 식별 및 통신을 한다. 그러나, 우리는 특정 웹사이트에 접속할 때 흔히 IP주소를 입력하지 않고 웹 사이트의 도메인 이름을 이용한다.
DNS 서비스는 www.example.com
과 같이 사람이 읽을 수 있는 이름을 192.0.2.1
과 같은 숫자 IP 주소로 변환하여 컴퓨터가 서로 통신할 수 있도록 한다.
DNS는 전세계에 분산되어 존재하며, 관리의 편의를 위해 계층 구조를 띠고 있다.
만약 전세계에 하나의 DNS 서버만 존재한다면 그 서버는 전세계에서 들어오는 모든 요청을 다 받아들이기가 벅차다. 따라서 트래픽을 분산시키고, 시스템 고장 등에 취약하지 않기 위해 서버를 여러 개로 분산시켜 놓은 것이다.
DNS는 관리의 편의를 위해 계층이 나뉘어져 있다고 하였다. 이에 대해 자세히 살펴보고자 한다.
www.amazon.com
에 접속하고 싶어 한다고 가정해 보자. Root DNS server
게 가서 질의를 하고, Root DNS 서버는 .com DNS server
를 찾아준다..com DNS server
는 자기가 갖고 있는 도메인 중에 amazon.com
에 해당하는 DNS server를 찾아 준다.amazon.com dns server
가 도메인에 해당하는 IP 주소를 알려 주고, 그 IP 주소를 가지고 사용자는 웹 페이지에 접속할 수 있다.즉 dns 서버가 하는 일은 매우매우 중요하다. 이 도메인이 어느 IP 주소로 가야하는지 알려주기 때문이다. dns 서버가 없다면 우리는 특정 페이지에 접속할 때 우리에게 친숙한 naver.com
google.co.kr
등이 아닌, 긴 IP 주소를 외워서 접속해야 할 것이기 때문이다.
사용자가 도메인명을 입력했을 때 해당 IP를 찾기 위해 가장 먼저 찾는 DNS 서버이다.
인터넷을 사용할 수 있게 IP를 할당해주는 ISP(Internet Service Provider)는 각자 DNS 서버를 가지고 있다.
이 DNS 서버는 DNS 계층 구조에 속하지 않는다.
TLD(Top-Level Domain server)는 국가 코드 최상위 도메인(.kr, .uk, .fr 등)과 일반 최상위 도메인(.com, .edu, .org 등) 을 의미한다.
도메인 네임은 계층 구조로 나타나 있고, 도메인 네임의 뒤에 올수록 더 상위 계층에 해당하는 도메인이다. 예를 들어 google.co.kr
의 경우 맨 마지막에 오는 .kr
도메인은 대한민국 국가 도메인 (최상위 도메인) 이며 중간의 .co
는 회사들을 포함하는 도메인이다.
DNS 서버를 여러 개 거치면서 주소를 알아내는 과정은 두 가지로 나눌 수 있다.
"나는 이 이름 몰라. 근데 얘한테 물어보면 알려줄거야"
이 한 마디로 정리할 수 있다.
만약 어떤 사용자가 knu.ac.kr
웹 페이지에 접속하고 싶다고 가정해 보면, 먼저 루트 dns server에게 이 도메인을 질의할 것이다. 루트 dns server는 이 도메인에 해당하는 TLD를 연결해 준다.
루트 dns server가 ".kr 도메인 서버한테 물어보세요~"
라고 응답을 돌려준다.
"이 이름 찾고있어? 나는 모르는데 내가 찾아봐줄게 기다려봐"
마찬가지로 이렇게 정리할 수 있다.
Root DNS server에서 하위 dns 서버를 찾고, 그 서버가 또다시 재귀적으로 하위 dns 서버를 찾아서 답을 돌려주기를 반복하면서 결국 root dns server에게서 답을 받을 수 있다.
그러나 이 방법은 상위 계층 DNS 서버에 너무 큰 부하를 줄 수 있다는 단점이 있다.
앞서 살펴본 웹 캐시, 프록시 서버와 마찬가지로 DNS에도 캐시 서버가 존재한다. 캐시 안에 자주 사용하는 DNS 네임을 미리 캐싱해 놓고 DNS 서버의 부담을 줄일 수 있다.
우리가 밥 먹듯 사용하는 TLD 서버는 주로 local DNS name server에 캐싱되어 있다.
도메인에 연결된 IP 주소 및 해당 도메인 요청의 처리 방법 등을 명시한다.
도메인 레코드에는 여러 가지가 있으며 그 중 대표적으로는 A
, CNAME
, NS
, MX
등이 있다.
도메인 이름을 다른 도메인 이름으로 매핑한다.
A type record가 있어야 설정이 가능함(실제 hostname이 있어야 하기 때문에)
DNS의 질의문과 응답문은 서로 안의 내용만 다를 뿐 같은 구조를 띠고 있다. 구조를 살펴보면 다음과 같다.
Identification : 요청과 응답을 일치시키는 데 사용된다.
Flags : 각종 정보를 담고 있다.
questions : Domain Name
과 resource record
를 포함한 DNS query 부분이 들어 있다.
answers : DNS query에 대한 응답으로 반환되는 정보를 포함하는 부분이다. 즉 사용자가 질의한 www.naver.com
에 해당하는 IP 주소가 반환되는 부분이다.
Authority : 쿼리에 대한 권한 정보를 포함하며, 해당 도메인의 이름의 권한 있는 DNS 서버의 정보를 제공해서 신뢰성과 권한을 확인한다.
Additional information : 기타 유용한 정보들
도메인 네임 등록 대행자(domain name registrar)는 일반 최상위 도메인 (gTLD) 레지스트리나 국가 코드 최상위 도메인 레지스트리 (ccTLD)에 의해 공인된 기구 또는 사업체이다.
도메인 이름을 사용하기 위해서는 DNS registrar
를 통해 등록 절차를 밟아야 한다.
iterative
와 recursive
가 있다.