Study/Computer Science

[네트워크] DNS(Domain Name System)

욘아리 2025. 1. 3. 08:30

DNS(Domain Name System)란?

사람이 읽을 수 있는 도메인 이름을 머신이 읽을 수 있는 IP 주소로 변환하는 역할을 한다.

일반적으로 우리는 웹사이트에 접속할 때 IP 주소 대신에 도메인 이름을 사용한다.
인터넷에서 모든 장치는 고유한 IP 주소를 가지고 있지만, 우리는 도메인 이름을 더 쉽게 기억하고 이해할 수 있기 때문이다.
도메인은 일종의 별명으로, 우리가 입력한 도메인을 실제 네트워크상에서 사용하는 IP 주소로 바꾸고 해당 IP 주소로 접속하는 과정이 필요하다. 이러한 과정, 전체 시스템을 DNS(도메인 네임 시스템)라고 한다.

 

분산 구조

DNS는 전 세계적으로 약속된 규칙을 공유하는데 상위 기관에서 인증된 기관에게 도메인을 생성하거나 IP 주소로 변경할 수 있는 권한을 부여한다. DNS는 이처럼 상위 기관과 하위 기관과 같은 계층 구조를 가지는 분산 데이터베이스 구조를 가진다.

왜 계층 구조를 가지는 분산 데이터베이스 구조를 가질까?🤔

쉽게 말해 단 한 권의 두꺼운 책에 모든 전화번호를 기입해 찾는 것보다 여러 권으로 나누되, 하위로 연관되어 있는 여러 권으로 나누는 방식을 채택한 것이다.

 

캐싱

요청이 들어올 때마다 항상 루트 서버부터 찾는 대신, 이미 조회한 결과를 일정시간 동안 캐시로 저장하여 빠른 조회가 가능하다.

 

DNS의 구성 요소

도메인 네임 스페이스(Domain Name Space) : DNS가 저장 관리하는 계층적 구조

네임 서버(Name Server) : 권한 있는 DNS 서버

리졸버(Resolver) : 권한 없는 DNS 서버

 

DNS는 계층적으로 구분하는, 정보(도메인과 IP 주소)를 분산하는 구조를 갖기 때문에 분산된 데이터가 어디 저장되어 있는지 찾을 프로그램들이 필요하고, 찾았으면 해당 IP 주소로 이동할 프로그램이 필요하다.

 

도메인 네임 스페이스라는 규칙(방법)으로 도메인 이름 저장을 분산한다.

네임 서버(DNS 서버와 같은 말)가 해당 도메인 이름의 IP 주소를 찾는다.

리졸버가 DNS 클라이언트 요청을 네임 서버로 전달하고 찾은 정보를 클라이언트에게 제공하는 기능을 수행한다.

 

DNS 작동 과정

1. 클라이언트(브라우저)가 도메인 이름에 접근하고자 한다.

2. 로컬 DNS 서버에게 해당 도메인 IP 주소를 묻는다.

3. 로컬 DNS 서버에 캐시가 없으면, 루트 DNS 서버 -> TLD 서버(.com 등) -> 권한 DNS 서버(도메인의 실제 NS 레코드를 관리하는 서버) 순으로 질의하며 IP 주소를 찾는다.

4. 찾은 IP 주소를 로컬 DNS 서버가 캐시에 저장하고, 클라이언트에게 반환한다.

5. 클라이언트는 받은 IP 주소를 통해 실제 서버에 연결을 시도한다.

 

도메인의 구조

도메인은 계층적 구조를 갖는다.

www.example.com
└── (.)          - 루트
    └── com      - 최상위 도메인(TLD)
        └── example  - 2차 도메인
            └── www  - 호스트(서브도메인)

- 루트 도메인 : . (실제로 URL에 표시되지 않음)

- TLD(Top-Level Domain) : .com, .net, .org, 국가도메인(.kr 등)

- 2차 도메인 : example

- 서브 도메인(호스트 이름) : www, blog, api 등 

 

DNS Query

DNS 쿼리는 사용자가 도메인 이름을 입력하고 IP 주소를 얻기 위해 DNS 서버에 보내는 요청을 말한다. 이 요청은 DNS Resolver가 사용자 컴퓨터에서 생성하고 DNS 서버에 전송한다.

 

Recursive(재귀적) Query : 로컬 DNS 서버가 최종 IP 주소를 찾아서 클라이언트에게 돌려주는 방식

Iterative(반복적) Query : 로컬 DNS 서버가 "다음 서버 주소만" 알려주고, 클라이언트가 계속 물어보는 방식

 

실제로는 로컬 DNS 서버가 재귀 쿼리를 맡고, 루트/권한 DNS 서버들은 반복 쿼리 형태로 동작한다.

 

 

출처

https://velog.io/@zinukk/9kpyzbdt