CS

[DNS] Domain Name Server(System)

khakhalog 2023. 9. 20. 10:50

DNS(Domain Name Server 또는 Domain Name System)란?

IP와 도메인을 연결해주는 시스템.

전화번호부와 같은 역할을 하는 서버 또는 시스템을 말한다.

예를 들어, 'www.naver.com'처럼 사람이 쉽게 기억하고 읽을 수 있는 주소(또는 이름)를 컴퓨터가 이해할 수 있는 IP주소(ex. 109.0.0.1)로 변환하여 사용자의 컴퓨터가 서버로 접근할 수 있도록 하는 서비스를 제공한다.

1. DNS 구조

인터넷상의 모든 도메인은 '.(dot)' 또는 루트(Root)라고 하는 도메인 아래에 역트리의 계층 구조로 구성되어있다.

예를 들어, 'www.naver.com'이라는 주소는 뒤에 있는 'net'부터 앞에 있는 도메인들을 순차적으로 각 단계별 서버들을 통해 확인한다.

 

(1) TLD : Top Level Domain(최상위 도메인, 1단계 도메인)

'www.naver.com'에서는 '.kr' 부분이 해당된다.

  • 국가 최상위 도메인(ccTLD : Country Code Top Level Domain) : .kr, .jp, .uk, ...
  • 일반 최상위 도메인(gTLD : Generic Top Level Domain) : .net, .com, .org, ...

(2) SLD : Second Level Domain(2단계 도메인)

'www.naver.com'에서는 '.co' 부분이 해당된다.

 

(3) 3단계 도메인

'www.naver.com'에서는 'khakha' 부분이 해당된다.

 

(4) 호스트명

'www.naver.com'에서 'www'는 호스트명으로 부른다.

주소의 체계와 구조에 따라 추가 하위 도메인 계층이 있을 수 있다.

(ex. 'dev.khakha.co.kr'은 4단계 도메인 또는 서브도메인이라고 한다. )


2. DNS 처리과정

클라이언트가 DNS서버에 도메인 주소의 IP주소를 물어보고 이에 대한 답을 받는 과정을 쿼리(Query)라고 한다.

계층 구조로 이루어진 여러 DNS서버들 간 몇 차례의 요청과 응답을 받게 되는데, 이 쿼리 과정을 재귀적 쿼리(Recursive Query)라고 한다.

2.1 'www.naver.com DNS 처리 상세 과정

  1. 사용자가 클라이언트 호스트의 웹 브라우저에 'www.naver.com'을 입력한다.
  2. 클라이언트의 호스트에 설정된 기본 DNS서버로 'www.naver.com'의 IP주소를 물어본다.
    대부분의 경우에 클라이언트는 DNS서비스에 직접 쿼리를 수행하지 않는다. DNS의 계층 구조에 따라 기본 DNS 주소로 연결되는 DNS Resolver는 중간자 역할을 하여 재귀적 쿼리를 수행한다. 아울러, 자주 요청되는 질의에 대해 일정 시간동안 해당 정보를 저장해두었다가 같은 요청이 들어올 경우 바로 답변을 해주는 캐싱 기능도 제공한다.
  3. DNS Resolver에 'www.naver.com'의 IP주소 값이 있다면, 클라이언트로 바로 해당 IP주소 값을 반환한다. 없다면, 루트 DNS서버에 다시 IP 주소 확인 요청을 보낸다.
  4. 루트 DNS 서버는 '.com'을 관리하는 1단계의 DNS 서버 IP주소로 응답한다.
  5. '.com'을 관리하는 1단계의 DNS 서버는 'naver.com' 을 관리하는 2단계 DNS 서버 IP 주소로 응답한다.
  6. 'www.naver.com'의 도메인을 관리하는 서버는 'naver.com' 호스팅 영역에서 'www.naver.com'의 레코드를 찾아 웹 서버의 주소 192.0.0.1 등 해당 도메인 주소와 관련된 값을 받고, 이 IP주소를 다시 DNS Resolver로 보낸다.
  7. DNS Resolver가 클라이언트가 필요한 IP주소를 확보하여 해당 DNS Resolver는 이 값을 클라이언트의 웹 브라우저로 반환한다.
  8. 웹 브라우저는 IP주소로 해당 서비스에 접속하여 서비스를 웹 브라우저에 표시한다.

2.2 DNS 서버의 용도

DNS 서버는 데이터베이스 및 디렉토리 역할을 하며, 사용자가 웹사이트와 온라인 서비스에 쉽게 엑세스할 수 있도록 사람이 읽을 수 있는 도메인 이름을 IP주소로 변환한다.

이를 통해 사용자는 도메인 이름을 입력하여 웹에 엑세스할 수 있다.

 

또한, DNS서버는 들어오는 트래픽의 부하를 분산하고 중복성과 안정성을 보장하며 사이버 위협으로부터 보호하는 데 도움이 된다.

도메인 이름과 해당 IP 주소의 데이터베이스를 유지 관리하고 요청이 있을 때 사용자를 올바른 위치로 안내한다.


3. DNS레코드

DNS 레코드는 도메인 네임 시스템의 기본 구성 요소.

도메인 네임에 대한 기타 정보를 구성하고 제어할 수 있는 DNS 데이터베이스에 저장된 특정 리소스 레코드이다.

이를 통해 도메인이 웹사이트, 이메일 주소 또는 인터넷의 다른 리소스를 가리키도록 할 수 있다.

 

서비스 제공자가 구매한 도메인 주소는 '이름', '값'이 매칭된 바인딩 형태로 DNS 서버에 DNS 레코드로 데이터베이스에 저장된다.

DNS 쿼리에 대해서는 하나 이상의 DNS 레코드 값을 채운 DNS 메세지로 응답하게 된다.

DNS 메세지의 뒷부분에 붙게되는 레코드의 공통 형식은 다음과 같다.

Name, Value, Type, TTL
  • Name : 도메인 주소
  • Value : 도메인 주소 관련 값
  • Type : DNS 레코드 유형 값
  • TTL : DNS 캐싱 정보 최대 유지시간 (DNS Resolver가 이 레코드에 관한 정보를 캐싱할 시간(초) 정보)

3.1 DNS 레코드 유형

(1) A / 유형 값 : 1

도메인 주소에 대한 IPv4 주소를 맵핑하는 역할.

하나의 도메인에는 여러개의 IP 주소가 할당될 수 있으며, 반대로 하나의 IP 주소에 여러개의 도메인 주소가 할당될 수도 있다.

Name = 도메인 주소
Value = IPv4 주소
Type = 1 (A)

 

(2) NS (Name Server) / 유형 값 : 2

도메인에 대한 특정 네임서버를 지정하는 역할.

인터넷상의 다른 사용자에게 도메인 이름을 확인하는 데 사용하는 네임서버를 알려주므로 필수적인 부분이다.

Name = 도메인명
Value = DNS 서버의 호스트 명
Type = 2 (NS)

 

(3) CNAME (Canonical NAME) / 유형 값 : 5

도메인의 별칭 (Alias)을 지정해주는 역할.

CNAME은 도메인의 별칭에 대해 맵핑되어 있는 공식 도메인의 IP주소를 받아오도록 해준다.

Name = 도메인 주소 별칭
Value = 공식 도메인 주소
Type = 5 (CNAME)

 

(4) SOA (Start Of Authority) / 유형 값 : 6

도메인의 영역을 표시하는 역할. 또한, DNS 서버에게 어떤 기준으로 도메인을 관리해야 하는지 알려주는 역할.

모든 도메인의 영역은 하나의 SOA 레코드만을 갖는다.

 

모든 도메인은 SOA 레코드를 통해 기본 네임 서버, 영역에 대한 정보에 대한 권한 및 운영을 담당하는 서버를 지정한다.

여기에는 이메일주소와 웹마스터 연락처 정보가 포함된다.

 

(5) PTR (PoinTeR) / 유형 값 : 12

A 레코드와 상반된 개념으로, IP 주소에 대해 도메인명을 맵핑하는 역할.(역방향 질의)

즉, IP 주소에 대해 도메인 주소를 확인하기 위한 레코드이다.

동작 중인 서비스의 IP 주소가 사용중인 도메인이 있는지 확인하는 등의 목적으로 사용될 수 있다.

 

(6) MX (Mail eXchanger) / 유형 값 : 15

특정 도메인의 메일 서버를 지정해주는 역할.

예를 들어, 'www.khakha.net' 의 메일 서버 주소를 쿼리할 때, 'mail.khakha.net' 값으로 반환하고, 이후 다시 A 유형 값으로 메일 서버의 IP 주소를 알아낼 수 있다.

 

(7) AAAA / 유형 값 : 28

도메인 주소에 대한 IPv6 주소를 맵핑하는 역할.

Name = 도메인 주소,
Value = IPv6 주소,
Type = 28 (AAAA)

 

(8) SRV (SeRVice) / 유형 값 : 33

특정 프로토콜이나 서비스에 대해 특정 도메인을 연결해주는 역할.

즉, 도메인 주소를 조금 더 확장하여 하나의 동일한 도메인 주소에 있는 여러 서비스들을 참조하여 사용할 수 있다.

SRV는 레코드 앞에 서빗와 프로토콜을 밑줄(_)과 함께 명시 해놓는다. 이를 통한 특정 서비스의 경우 지정된 레코드의 값으로 보내게 된다.

 

[참고 자료]

 

[이해하기] DNS (Domain Name Server) | STEVEN J. LEE

DNS (Domain Name Server) 란, 전화번호부와 같이 www.stevenjlee.net 과 같이 사람이 쉽게 기억하고 읽을 수 있는 주소 (또는 이름) 를 컴퓨터가 이해할 수 있는 IP 주소 (예> 192.0.0.1) 로 변환하여 사용자의 컴

www.stevenjlee.net

 

DNS 서버란 무엇인가요? - 인터넷 게이트웨이

DNS(도메인 이름 시스템) 서버는 사람이 읽을 수 있는 도메인 이름을 IP 주소로 변환할 수 있게 해주는 인터넷의 핵심 구성 요소입니다.

powerdmarc.com

 

DNS 레코드란 무엇인가요? | DNS 레코드의 8가지 주요 유형

DNS 레코드 또는 도메인 네임 시스템 레코드는 도메인의 데이터베이스에 저장하는 데이터입니다. 이러한 레코드는 웹사이트가 호스팅되는 방식과 웹사이트에 액세스할 수 있는 항목을 정의합니

powerdmarc.com