네트워크 - DNS(Domain Name System)

 


 

1. DNS 서버

 DNS(Domain Name System)는 도메인 이름(www.google.com)을 IP 주소(예: 142.250.190.78)로 변환하는 시스템입니다. 숫자를 기억하는 것이 사람들에게 어렵기 때문에, DNS는 사람들이 쉽게 기억할 수 있는 도메인 이름을 숫자로 된 IP 주소로 변환하여 웹사이트에 접속할 수 있도록 도와줍니다.

 

- DNS는 애플리케이션 계층의 프로토콜입니다.

- 기본적으로는 UDP를 사용하지만 필요에 따라 TCP로 전환이 가능합니다.

 

2. 도메인 주소 체계

1) Top-Level Domain (TLD)

- 도메인 이름의 가장 오른쪽 부분을 말합니다. 예를 들어, 'www.google.com'에서 TLD는 '.com'입니다.

-  gTLD (일반 최상위 도메인): 도메인의 목적을 나타냅니다. (예: '.com' (상업용), '.org' (조직), '.edu'(교육), '.gov' (정부))

-  ccTLD (국가 코드 최상위 도메인): 지리적 위치를 나타냅니다. (예: '.ca' (캐나다), '.uk' (영국))
- 추가 gTLD: 특정 주제나 목적에 따라 '.online', '.club', '.website', '.ai'  등 다양한 gTLD가 있습니다.

 

2) Second-Level Domain (SLD)

- TLD 바로 왼쪽에 위치한 도메인을 말합니다. 예를 들어,   'www.google.com'에서 SLD는 'google'입니다.

 

3) Third-Level Domain 및 추가 서브도메인

- SLD 앞에 점(.)으로 구분하여 추가된 도메인을 말합니다. 예를 들어, 'www.google.com'에서 서브도메인은 'www'입니다.

- 서브도메인은 점(.)으로 구분하여 여러개를 사용할 수 있습니다. (예: support.europe.example.com)   

 

 

 

 

 이 도메인 주소 체계를 이용하여 DNS는 계층을 나누어서 DNS서버들을 분산저장합니다. 도메인 주소 체계를 통해 각 도메인은 루트 서버에서 시작하여 하위 도메인으로 세분화됩니다. 이러한 구조 덕분에 DNS는 효율적으로 도메인 이름을 IP 주소로 변환할 수 있습니다.

 

3. DNS요청 과정

"www.google.com"의 IP주소를 요청하는 과정입니다. 

1) DNS 캐시

 

- DNS 요청을 보내기 전에 해당 도메인이 캐시가 되어있는지 확인합니다.

- 웹 브라우저의 DNS 캐시를 확인합니다.

- 운영체제의 DNS 캐시를  확인합니다.

- 라우터의 DNS 캐시를 확인합니다.(옵션)

 

2) Recursive DNS server

 

 

 

 위의 과정에서 캐싱된 IP 주소를 찾지 못하면 인터넷 서비스를 제공하는 ISP(인터넷 서비스 제공자)의 DNS 서버 캐시를 확인합니다. 이때 이 DNS서버는 사용자가 필요에 따라 변경할 수 있습니다. 예시로, 안전하고 빠른 웹환경을 위해서 구글은 Google Public DNS( 8.8.8.8` 및 `8.8.4.4`)를 제공합니다.

 

 재귀적 DNS 서버(Recursive DNS Server)는 클라이언트의 도메인 이름 요청을 받아 여러 DNS 서버를 순차적으로 조회하여 최종 IP 주소를 반환하는 서버를 의미합니다. ISP DNS 서버는 이러한 방식으로 재귀적으로 요청을 처리합니다.

 

3) Root DNS Server

 

 

 만약 재귀적 DNS 서버의 캐시에서도 요청한 도메인의 IP 주소를 찾을 수 없다면, 루트 서버에 쿼리를 전송합니다. 루트 서버는 "www.google.com" 도메인의 최상위 도메인(TLD)인 .com의 TLD 서버 주소를 반환하여, 재귀적 DNS 서버가 다음 단계로 진행할 수 있도록 안내합니다.

 

4) Top-Level Domain (TLD) DNS Server

 

 그 다음 단계에서, 재귀적 DNS 서버는 TLD 서버에 쿼리를 전송합니다. TLD 서버는 "google.com" 도메인의 권한 있는 네임 서버(NS) 주소를 반환하여, 재귀적 DNS 서버가 최종 IP 주소를 찾기 위해 해당 네임 서버에 쿼리를 보낼 수 있도록 합니다.

 

5) Authoritative DNS Server

 

 

 Authoritative DNS 서버는 특정 도메인 이름에 대한 최종 정보를 제공하며, "www.google.com"의 정확한 IP 주소를 재귀적 DNS 서버에 반환합니다. 재귀적 DNS 서버는 이 IP 주소를 클라이언트에게 최종적으로 전달합니다.

 

4. Powershell에서 DNS 정보 확인

Resolve-DnsName www.google.com

PowerShell에서 다음을 입력하면 "www.google.com"에 대한 DNS정보가 나옵니다.

 

1)  IP주소

 

- Type: 'AAAA'는 IPv6 주소를, 'A'는 IPv4 주소를 나타냅니다.

- TTL: 해당 레코드가 캐시에 유지되는 시간을 초 단위로 나타냅니다. 여기서는 각각 143초와 238초입니다.

- Section: 'Answer' 섹션은 쿼리에 대한 직접적인 응답을 포함합니다.

 

2) NS 정보

 

 

- google.com 도메인에 대한 네임 서버(NS) 레코드입니다.

- QueryType: 'NS'는 네임 서버를 나타냅니다.

- TTL: 해당 레코드가 캐시에 유지되는 시간을 초 단위로 나타냅니다. 여기서는 126155초입니다.

- Section: 'Authority' 섹션은 권한 있는 네임 서버 정보를 포함합니다.

- NameHost: google.com 도메인의 네임 서버는 ns2.google.com입니다.

 


https://www.geeksforgeeks.org/details-on-dns/?ref=lbp

 

Details on DNS - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org