DNS란?

zito·2024년 9월 13일
post-thumbnail

DNS란?


사진출처

DNS를 설명할 때 전화번호부를 예시로 많이 듭니다.

모든 IP를 알 수 없기에, DNS을 통해 IP 주소를 찾는 것과
모든 전화번호를 알 수 없기에 전화번호부를 통해 전화번호를 찾는 것이 유사하기 때문일 것 입니다.

이처럼 DNS(Domain Name System)은 Domain을 IP로 바꾸는 일련의 과정을 처리하는 시스템을 가르킵니다.

DNS의 특징

DNS는 상위/하위 개념이 있는 계층 구조를 가진 분산 데이터베이스 구조입니다.

DNS는 DNS에 해당하는 IP를 반환하기위해 데이터베이스를 보유해야합니다.
그렇다면 굳이 왜 계층 구조로 이루어져 있을까요?

그 이유는 간단합니다. Domain Name이 너무 많기 때문이죠.
하나의 데이터베이스가 모든 데이터를 관리한다면 너무 많은 트래픽이 하나의 데이터베이스에 몰려 병목현상이 발생할 것입니다.
또한 분산 데이터베이스를 사용한다면 모든 IP 정보를 모든 데이터베이스가 동일하게 공유해야 하므로 이 또한 부하가 많을 것 입니다.
이러한 이유로 DNS는 계층 구조로 이루어져 있습니다.

DNS의 구성요소

DNS의 구성요소는 크게 3가지 입니다.

  1. Domain Name Space: DNS가 저장, 관리하는 계층적 구조
  2. Name Server: 권한 있는 DNS 서버
  3. Resolver: 권한 없는 DNS 서버

Domain Name Space


사진출처

Domain Name Space란 DNS가 저장 관리하는 계층적 구조입니다.
앞서 말씀드린 것 처럼, DNS는 계층적 구조를 사용하여 데이터베이스를 관리합니다.
이 때 Domain Name에 관한 정보를 저장하는 규칙(계층적인)을 Domain Name Space라고 합니다.

Name Server

권한 있는 DNS Server를 뜻합니다.
이 때, 권한이 있다는 뜻은 특정 Domain에 대한 공식적인 정보를 보유하고 관리한다는 뜻 입니다.

Resolver

권한 없는 DNS Server를 뜻합니다.

DNS Client의 요청을 Name Server로 전달하고, 찾은 정보는 DNS Client에게 전달하는 역할을 합니다.

어떤 Name Server에서 IP를 찾아야하는지, IP정보가 이미 캐싱되어있는지 등을 확인하고 IP 정보를 찾았는지 유무를 전달합니다.

ISP DNS, Google DNS 등이 대표적입니다.

윈도우에서 DNS 서버 주소를 적는 칸이 Resolver의 주소를 적는 칸입니다.
해당 주소에 8.8.8.8을 넣으면 ISP DNS가 아니라 Google DNS를 사용할 수 있습니다.

Recursive DNS Server, Resursor, Local Server(of ISP)의 일반적인(범위가 큰) 단어가 Resolver입니다.

Domain Name Space

Domain Name Space는 DNS가 저장 관리하는 계층적 구조라고 앞서 설명하였습니다.
위 이미지는 Domain Name Space를 나타냅니다.

계층적인 구조로, 각 도메인 레벨의 하위 조직의 Name Server를 관리하고 할당하는 방식은 각 하위기관의 관리 책임자에게 위임합니다.

위 그림으로 예시를 들자면 루트 서버를 관리하는 ICANN는 .com TLD를 관리하는 Verisign에게 권한을 위임합니다.
Verisign은 도메인 등록대행사 GoDaddy에서 .com 도메인의 등록 권한을 위임합니다.
GoDaddy는 사용자의 요청에 따라 zito.com 이라는 도메인을 등록하고, 해당 도메인 소유자에게 관리 권한을 부여합니다.

레지스트리 vs 도메인 등록대행사

위 예시에서 Verisign과 GoDaddy는 둘 다 .com 도메인을 관리합니다. 때문에 둘의 역할에 대해 헷갈릴 수 있습니다.

하지만, 둘의 역할은 크게 다릅니다.

Versign과 같은 레지스트리는 .com .net과 같은 TLD를 관리하는 레지스트리입니다. 직접 최종 사용자와 거래하지 않고 ICANN하고만 거래합니다. 이들은 도메인 이름의 기술적 관리와 운영을 담당합니다.

반면 GoDaddy와 같은 도메인 등록대행사(Registrar)은 Verisign과 같은 레지스트리로 부터 도메인 등록 권한을 할당 받아 최종 사용자와 거래합니다.

즉 두 기관 모두 .com을 관리하지만, 레지스트리는 TLD 관리를 전체적으로 관리하는 역할을 하는 반면 도메인 등록대행사는 개별 .com 도메인을 최종 사용자에게 등록해주는 역할을 합니다.

Fully Qualified Domain Name(FQDN)

일반적으로 Domain Name은 www.zito.com 에서 zito.com을 가르키기에 해당 용어가 나왔습니다.

Domain Name: zito.com
Host Name: www
FQDN: www.zito.com

Name Server(=DNS Server)

DNS를 통해 Domain을 IP로 변환하여 반환하기 위해서는 Domain Name Space의 트리구조(계층구조)가 필요하다고 하였습니다.
해당 구조의 정보를 갖고 있는 서버가 Name Server입니다.

일반적으로 데이터베이스, IP 주소를 찾아주는 역할, 요청처리 응답 구현의 역할 등을 수행합니다.

Name Server는 총 4가지 종류가 있습니다.

Root DNS Server

DNS 서버의 최상위 Name Server입니다.
DNS 요청에 적절한 TLD Name Server 정보를 반환합니다.

전세계 13개가 구축되어있고, 해당 Name Server를 복제한 Mirror Server가 존재합니다.

Top-Level Domain(TLD) DNS Server

도메인 등록 기관이 관리하는 서버입니다.
Authoritative DNS 서버 주소를 저장, 관리합니다.
Authoritative DNS 서버 주소란, 특정 Domain의 공식 DNS 정보를 제공할 수 있는 Server의 위치를 뜻합니다.

Second-Level Domain DNS Server (Authoritative DNS Server)

실제 Domain과 IP 주소간의 관계가 기록되는 서버입니다.

Anauthoritative DNS Server

질의를 통해 IP를 얻거나 캐싱하는 역할을 합니다.
Anauthoritative DNS Server(권한없는 DNS Server)인 Resolver에 대해 좀 더 자세히 살펴보겠습니다.

DNS Resolver

사용자의 컴퓨터나 네트워크에 위치한 DNS Client입니다.

사용자가 Domain Name을 입력하면, IP 변환을 위해 DNS Server에 요청하여 질문하는 역할을 담당합니다.
한 번 찾은 IP를 캐싱하는 역할도 수행합니다.

DNS 동작방식

  1. 사용자는 Browser를 통해서 Domain을 입력합니다. (www.zito.com.)
  2. DNS Resolver는 캐싱된 정보가 있는지 찾아봅니다. 있다면 바로 Browser에 값을 반환하고, 없다면 Root Server에 질의합니다.
  3. Root Server는 .com을 관리하는 TLD Server 정보를 반환합니다.
  4. Resolver는 TLD Server에 질의합니다.
  5. TLD Server 는zito.com을 관리하는 Authoritative DNS Server 정보를 반환합니다.
  6. Resolver는 Authoritative DNS Server에 질의합니다.
  7. Authorivative DNS Server는 www.zito.com에 해당하는 IP를 반환합니다.
  8. Resolver는 Browser에 IP를 전달합니다.
  9. Browser는 IP를 통해 www.zito.com에 접속합니다.

참고
https://velog.io/@zinukk/9kpyzbdt#%EF%B8%8Fdns-%EB%8F%99%EC%9E%91-%EB%B0%A9%EC%8B%9D
https://www.cloudflare.com/ko-kr/learning/dns/what-is-dns/
https://www.notion.so/DNS-3dc7e1b759c4439f83a41c4db133c9e2#2945b8b8aca74f3ba8a58568ed07e5b2

profile
DevOps Engineer를 희망하는 Network Engineer입니다.

0개의 댓글