[Web] 도메인(Domain)과 DNS 개념

1. 도메인이란?

도메인은 인터넷 IP 주소를 문자열로 대체하여 사용자가 쉽게 기억하고 입력할 수 있도록 만든 것입니다.

2. 도메인의 구조

도메인은 관리의 편의성을 위해 계층 구조로 이루어져 있습니다. 제일 오른쪽에 위치한 부분이 최상위 계층이고 왼쪽으로 갈 수록 하위 계층으로 내려갑니다. 각 계층은 .(점)으로 구분됩니다.

도메인과 DNS 개념 01

Root Domain: 최상위 계층 도메인으로 보통 생략됩니다.

Top-Level Domain, TLD: 최상위 레벨 도메인으로 국가 코드 ccTLD(kr, cn, jp, us 등)와 일반 gTLD(com, net, org 등)로 구분됩니다.

Second-Level Domain, SLD: 도메인 이름(ex: naver, google 등)

Subdomain: 하위 도메인으로, 주로 특정 서비스나 위치를 나타냅니다.(ex: www, mail, blog 등)

3. DNS란?

DNS(Domain Name System)는 도메인 이름과 해당하는 IP 주소 간의 매핑을 제공하는 시스템입니다.

아래 이미지는 클라이언트가 브라우저의 주소창에 도메인을 입력시 DNS에서 일어나는 과정입니다.

도메인과 DNS 개념 02

Resolver: 운영체제에 내장된 소프트웨어, DNS 쿼리를 전달하고 응답을 받으면 그 결과를 캐싱하고 브라우저에 전달.

Local DNS: 인터넷 서비스 제공자(ISP)가 운영하는 중앙 집중식 DNS 서버(고객들에게만 DNS 서비스를 제공하여 네트워크 관리, 고객 지원 및 보안을 효과적으로 관리)

Public DNS: 기업이나 기관이 운영하는 공개 DNS 서버( Google Public DNS, OpenDNS, Cloudflare DNS 등)

Root Name Server: TLD Name Server들의 주소 정보 관리.

TLD Name Server: Authoritative Name Server들의 주소 정보 관리.

Authoritative Name Server: 특정 도메인에 대한 DNS 정보(IP 주소, 호스트 이름, 서브 도메인 등)를 관리.

[1] 브라우저는 브라우저의 캐시에서 이전에 방문한 웹 사이트의 도메인 이름과 해당하는 IP 주소를 확인, 없으면 리졸버에게 DNS쿼리 전달.

[2] 리졸버는 운영체제의 캐시를 확인하여 이전에 캐시된 도메인 이름의 정보가 있는지 확인, 없으면 설정된 DNS 서버로 쿼리 전달.(보통 Local DNS 서버에 전달, 사용자가 Public DNS 서버로 변경 가능)

[3] Local DNS 서버는 서버의 캐시를 확인하여 이전에 캐시된 도메인 이름의 정보가 있는지 확인, 없으면 Root Name Server에 쿼리를 전달.

[4] Root Name Server는 TLD Name Server의 주소 반환.

[5] Local DNS 서버는 TLD Name Server로 쿼리 전달.

[6] TLD Name Server는 Authoritative Name Server의 주소 반환.

[7] Local DNS 서버는 Authoritative Name Server로 쿼리 전달.

[8] Authoritative Name Server는 클라이언트가 검색한 도메인의 DNS 정보를 반환.

[9] Local DNS 서버는 리졸버에게 해당 정보를 반환.

[10] 리졸버는 브라우저에게 해당 정보를 반환.

[11] 브라우저는 DNS 정보에서 해당 도메인의 실제 IP로 HTTP 요청.

[12] Web 서버는 브라우저에게 HTTP 응답.