1. 도메인이란?
도메인은 인터넷 IP 주소를 문자열로 대체하여 사용자가 쉽게 기억하고 입력할 수 있도록 만든 것입니다.
2. 도메인의 구조
도메인은 관리의 편의성을 위해 계층 구조로 이루어져 있습니다. 제일 오른쪽에 위치한 부분이 최상위 계층이고 왼쪽으로 갈 수록 하위 계층으로 내려갑니다. 각 계층은 .(점)으로 구분됩니다.
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에서 일어나는 과정입니다.
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 응답.