DNS(Domain Name System) 구조
DNS의 계층 구조(Root Domain, TLD, SLD, Sub Domain)

DNS(Domain Name System)란?
우리가 크롬으로 구글에 접속할 때 주소창에 google.com
을 입력합니다. 이런 문자열 주소를 흔히 도메인이라 부르지만, 정확한 표현으로는 도메인 네임입니다.
실제로 인터넷에서 특정 서버에 접속하기 위해서는 숫자로 이루어진 IP 주소가 필요합니다. 하지만 우리는 구글의 IP 주소를 몰라도 도메인 네임만으로 구글 서버에 접속할 수 있습니다.
이처럼 사람이 이해하기 쉬운 도메인 네임을 컴퓨터가 이해할 수 있는 IP 주소로 변환해주는 시스템을 DNS(Domain Name System)라고 합니다.
> DNS는 도메인 네임을 IP 주소로 변환한다
IP 주소 확인
이제 google.com
의 실제 IP 주소를 확인해보겠습니다. Linux/Mac 환경에서는 host
명령어를, Windows 환경에서는 nslookup
명령어를 사용할 수 있습니다.
$ host google.com
google.com has address 172.217.31.174
google.com has IPv6 address 2404:6800:4004:820::200e
google.com mail is handled by 10 smtp.google.com.
> nslookup google.com
이름: google.com
Addresses: 2404:6800:4004:820::200e
172.217.31.174
DNS를 통해 확인한 google.com
의 주소는 172.217.31.174
입니다. IP 주소를 통해 접속 가능한지 한번 확인해보세요!
DNS 구조
인터넷 주소창에 google.com
을 입력하면 어떻게 해당 웹사이트에 접속할 수 있었을까요? 이를 이해하기 위해서는 먼저 DNS의 구조를 알아야 합니다.
DNS는 마치 전화번호부처럼 계층적인 구조로 도메인 정보를 관리합니다. 이러한 계층 구조(hierarchical naming structure)는 전 세계의 수많은 도메인을 체계적으로 관리할 수 있게 해줍니다.
hierarchical naming structure
http://api.www.google.com.
이라는 가상의 주소로 예를 들어 설명해 보겠습니다.
DNS의 계층 구조는 다음의 네 가지로 구성 됩니다.
- Root Domain
- TLD(Top Level Domain)
- SLD(Second Level Domain)
- Sub Domain
Root Domain
우리가 사용하는 모든 도메인 네임은 실제로는 마지막에 Root Domain을 나타내는 점이 존재합니다. 예를 들어 google.com
은 실제로는 google.com.
와 동일하며, 마지막 점은 Root Domain을 나타냅니다.
> 사실 우리가 쓰는 도메인 네임 마지막에는 점이 존재
Root Domain은 DNS 계층 구조의 시작점이며, 단순히 점으로 표현됩니다. 하지만 일반적인 경우는 이 마지막 점을 생략합니다.
TLD(Top Level Domain)
도메인 이름에서 점은 계층을 구분하는 구분자 역할을 합니다. 여기에서는 다음 점이 있는 com
이 TLD에 해당합니다. TLD는 Root Domain 아래 단계인 최상위 도메인을 의미하며, 크게 두 종류로 나눌 수 있습니다.
- 일반 최상위 도메인(gTLD):
com
,net
,org
등 용도에 따라 구분된 도메인 - 국가 코드 최상위 도메인(ccTLD):
kr
,jp
,us
등 국가를 나타내는 도메인
> Root Domain 아래 단계인 TLD는 최상위 도메인을 의미
SLD(Second Level Domain)
SLD는 TLD 바로 아래 단계의 도메인을 의미하며, 보통 개인, 조직, 기업이 직접 등록하고 관리하는 첫 번째 단계의 도메인입니다. 여기에서는 google
이 SLD입니다.
> SLD는 TLD 바로 아래 단계의 도메인을 의미
SLD는 DNS 레코드를 직접 관리하고 설정할 수 있는 가장 기본적인 단위가 됩니다. 주요 DNS 레코드는 다음과 같습니다.
A (Address Record)
: IPv4 주소를 위한 DNS 레코드AAAA (IPv6 Address Record)
: IPv6 주소를 위한 DNS 레코드CNAME (Canonical Name Record)
: 도메인 별칭NS (Name Server)
: 도메인의 DNS 정보를 제공할 수 있는 공식 네임서버를 지정MX (Mail Exchange Record)
: 메일 서버 설정
이러한 DNS 레코드들을 설정하여 웹 서버 연결, 이메일 서비스 구축, 도메인 리다이렉션 등의 서비스를 제공할 수 있습니다.
Sub Domain
Sub Domain은 SLD의 왼쪽에 위치하는 모든 하위 도메인을 의미합니다. 필요에 따라 계층적으로 확장이 가능합니다. 주로 서비스나 시스템을 논리적으로 구분하는데 사용됩니다.
각 Sub Domain은 자신만의 DNS 레코드를 가질 수 있어, 독립적으로 서버나 서비스를 연결할 수 있습니다. 일반적으로 다음과 같은 용도로 활용됩니다.
- 서비스 분리:
docs.github.com
,mail.google.com
- 개발 환경 구분:
dev.example.com
,staging.example.com
,prod.example.com
- 지역 구분:
kr.example.com
,us.example.com
- 기능 분리:
api.example.com
,admin.example.com
> Sub Domain = SLD의 왼쪽에 위치하는 모든 도메인
도메인 네임(Domain Name)
지금까지 설명한 DNS 계층 구조를 바탕으로 도메인 네임이 무엇인지 이해할 수 있습니다. 도메인 네임은 인터넷 상의 특정 위치를 나타내는 주소로, 점으로 구분된 계층적 주소 체계에서 Root Domain을 제외한 모든 부분을 의미합니다.
> 도메인 네임은 Root Domain을 제외한 계층적 주소 체계
각 부분은 점으로 구분되며, DNS는 도메인 네임을 해석할 때 오른쪽에서 왼쪽으로 순차적으로 분석합니다. 예를 들어 api.www.google.com
의 경우
- Sub Domain:
api
,www
- SLD:
google
- TLD:
com
이러한 계층적 구조 덕분에 DNS는 전 세계의 수많은 도메인 네임을 체계적으로 관리하고 효율적으로 조회할 수 있습니다.
FQDN (Fully Qualified Domain Name)
FQDN은 Root Domain을 포함한 전체 도메인 네임을 의미합니다. 도메인 네임과 다른 점은 가장 마지막에 Root Domain을 명시적으로 표현한다는 것입니다.
예를 들어
- 도메인 네임 :
api.www.google.com
- FQDN :
api.www.google.com.
> FQDN은 Root Domain을 포함한 전체 도메인 네임을 의미
FQDN은 모호성 없이 정확한 도메인 위치를 나타내며, DNS 설정에서 정확한 도메인을 지정할 때 사용됩니다. 특히 DNS 구성 파일이나 시스템 설정에서는 FQDN을 사용하여 정확한 도메인 지정이 필요합니다.
마무리
지금까지 DNS의 기본 구조에 대해 알아보았습니다. DNS는 아래와 같은 계층적 구조로 이루어져 있습니다.
- Root Domain은 DNS 계층 구조의 시작점
- TLD는
.com
,.net
과 같은 최상위 도메인 - SLD는 실제로 도메인을 등록하고 관리할 수 있는 도메인
- Sub Domain은 필요에 따라 확장 가능한 하위 도메인
다음은 DNS가 어떻게 도메인 네임을 IP 주소로 변환하는지, DNS 서버들이 어떻게 이 과정을 수행하는지 자세히 알아보겠습니다.