Post

[Study - Internet] DNS와 작동 원리

DNS(Domain Name System) 란?


우리는 웹 사이트에 접속할 때 외우기 어려운 IP 주소 대신 Domain Name을 사용한다.

이 Domain Name을 사용했을 때 입력한 도메인을 실제 네트워크상에서 사용하는 IP 주소로 바꾸고 해당 IP 주소로 접속하는 과정이 필요하다.

이러한 과정의 전체 시스템을 DNS(Domain Name System)라고 한다.

이러한 시스템은 전세계적으로 약속된 규칙을 공유한다.

상위 기관에서 인증된 기관에게 도메인을 생성하거나 IP 주소로 변경할 수 있는 ‘권한’을 부여한다.

DNS는 이처럼 상위 기관과 하위 기관과 같은 ‘계층 구조’를 가지는 분산 데이터베이스 구조를 가진다.

DNS 구성 요소

DNS는 세가지 요소로 구성되어 있다.

  1. Domain Name Space
  2. Name Server: 권한이 있는 DNS 서버
  3. Resolver: 권한이 없는 DNS 서버

세가지 구성 요소들이 어떻게 사용되는지 보자.

  1. 우선 “이 Domain Name은 이 IP 주소이다.”라는 정보를 저장하는 DB가 필요하다.
  2. 분산된 데이터가 어디에 저장되어 있는지 찾을 프로그램들이 필요하고, 찾았으면 해당 IP 주소로 이동할 프로그램(브라우저 등)이 필요하다.
  3. Domain Name Space라는 규칙(방법)으로 Domain Name 저장을 분산한다.
  4. Name Server가 해당 Domain Name의 IP 주소를 찾는다.

    Name Sever
    DNS 서버와 같은 말이지만, Resolver 서버 등 시스템 안에서 다른 역할을 하는 서버도 있기 때문에 그냥 DNS 서버라고 하는 것보다 Name Server라고 하는 것이 의미 전달에 더 좋은 것 같다.

  5. Resolver가 DNS 클라이언트 요청을 Name Server로 전달하고 찾은 정보를 클라이언트에게 제공하는 기능을 수행한다.
    즉, 어떤 Name Server에서 찾아야 하는지, 이미 캐시 되어있는지 등 어떻게든 찾아서 클라이언트에게 찾았으면 찾은 것을, 못 찾았으면 못 찾았다고 전달하는 역할을 한다.
    따라서, Resolver를 단말에 구현하는 것은 무리수라 보통은 Resolver가 구현된 Name Server의 IP 주소만을 파악한다.

    대표적인 것이 KT/LG/SK와 같은 ISP(통신사) DNS가 있고,
    브라우저 우회 용도로 많이 쓰는 구글 DNS,
    클라우드 플레어와 같은 Public DNS 서버가 있다.

    용어 정리
    Resolver = Recursive DNS Server = Local Server(of ISP) = Recusor

이렇게까지 사용하는 이유는 Domain을 IP 주소로 바꿔줄 수 있는 Name Server가 많을 수 있기 때문이다.

만약 여러 Name Server를 만든다면 해당 정보(도메인과 IP 주소)를 모든 서버에서 공유해야 한다. (그렇지 않으면 어떤 Name Server에서는 ‘www.naver.com’의 IP 주소를 모른다고 할 수도 있다.)

그래서 도메인을 계층적으로 구분하는 정보(도메인과 IP 주소)를 분산하는 구조를 선택한 것이다.

이 계층은 도메인에서 점(dot)으로 나타낸다.

DNS 작동 원리


DNS 작동 원리

  1. 웹 브라우저에 www.naver.com을 입력하면 먼저 Local DNS에게 www.naver.com이라는 hostname에 대한 IP 주소를 질의하여 Local DNS에 없으면 다른 DNS Name Server 정보를 받는다. (Root DNS 정보를 전달 받는다.)

    Root DNS
    인터넷의 DNS의 Root Zone이다.
    Root Zone 레코드의 요청에 직접 응답하고 적절한 최상위 도메인에 대해 권한이 있는 Name Server 목록을 반환함으로써 다른 요청에 응답한다.
    전 세계에 961개의 Root DNS가 운영되고 있다.

  2. Root DNS 서버에 “www.naver.com”을 질의한다.
  3. Root DNS 서버로부터 “com 도메인”을 관리하는 TLD(Top-Level Domain) 이름 서버 정보를 전달 받는다.

    TLD: .com을 관리하는 서버를 칭한다.

  4. TLD에 “www.naver.com”을 질의한다.
  5. TLD에서 “[name].com”을 관리하는 DNS 정보를 전달 받는다.
  6. “naver.com” 도메인을 관리하는 DNS 서버에 “www.naver.com” hostname에 대한 IP 주소를 질의한다.
  7. Local DNS 서버에게 “www.naver.com”에 대한 IP 주소는 “222.122.195.6”이라는 것을 응답 받는다.
  8. Local DNS는 “www.naver.com”에 대한 IP 주소를 캐싱하고 IP 주소 정보를 전달 받는다.

DNS 구성 요소


DNS 구성 요소

Domain Name Space

  • DNS는 전세계적인 거대한 분산 시스템이다.
  • Domain Name Space는 이러한 DNS가 저장 관리하는 계층적 구조를 의미한다.
  • Domain Name Space는 최상위에 루트 DNS 서버가 존재하고 그 하위로 연결된 모든 노드가 연속해서 이어진 계층 구조로 되어있다. (폴더 구조와 비슷하다.)

계층적 도메인 레벨 (Hierarchical Domain Level)

Domain Name Space의 트리 구조는 최상위 레벨부터 순차적으로 계층적 소속 관계를 나타낸다.

하위 조직의 Name Space를 할당하고 관리하는 방식은 각 하위 기관의 관리 책임자에게 위임된다.

Fully Qualified Domain Name(FQDN, 전체 도메인 이름)
도메인의 전체 이름을 표기하는 방식이다.

도메인 이름: naver.com
호스트 이름: www
FQDN: www.naver.com

Name Server (= DNS Server)

  • 문자열로 표현된 도메인 이름을 실제 컴퓨터가 통신할 때 사용하는 IP 주소로 변환 시키기 위해서는 Domain Name Space의 트리 구조에 대한 정보가 필요한데 이러한 정보를 가지고 있는 서버를 Name Server라고 한다.
  • DB 역할(저장, 관리), 찾아주는 역할, 요청 처리 응답 구현
  • 전 세계에 13개의 Root DNS 서버가 구축되어 있다. (패킷의 실질적인 크기 제한으로 인해 루트 DNS 서버 수를 13개 서버 주소로 제한하도록 결정되었다고 한다.)
  • DNS 서버를 복사하여 같은 기능을 담당하는 미러 서버가 있다.
  1. Root DNS 서버
    • ICANN이 직접 관리하는 절대 존엄 서버이다.
    • TLD DNS 서버 IP 주소를 저장하고 안내하는 역할을 한다.
  2. Top-Level Domain(TLD) DNS 서버
    • 도메인 등록 기관이 관리하는 서버이다
    • Authoritative DNS 서버의 주소를 저장하고 안내하는 역할을 한다.
    • 도메인 판매 업체(가비아 등)의 DNS 설정이 변경되면 도메인 등록 기관으로 전달되기 때문에 어떤 도메인이 어떤 판매 업체에서 구매했는지 알 수 있다.
  3. Second-Level Domain(SLD) DNS 서버 (Authoritative DNS 서버 라고도 한다.)
    • 실제 개인 도메인과 IP 주소의 관계가 기록(저장, 변경)되는 서버이다. 그래서 권한의 의미인 Authoritative가 붙었다.
    • 일반적으로 도메인/호스팅 업체의 Name Server를 말한다.
    • 개인 DNS를 구축해도 이 경우에 해당한다.
  4. 권한 없는 DNS 서버 (Resolver 서버, Reculsive 서버, Recursor)
    • DNS 서버는 Domain Name Space를 위한 권한 있는 DNS 서버와 권한이 없는 DNS 서버로 구분된다.
    • 위 1, 2, 3은 권한 있는 DNS 서버이다.
    • Name Space를 위한 권한 있는 DNS 서버는 IP 주소와 도메인 이름을 매핑한다.
    • Nave Space를 위한 권한 없는 DNS 서버는 질의를 통해 IP 주소를 알아내거나 캐시한다.

Resolver

Resolver는 웹 브라우저와 같은 DNS 클라이언트의 요청을 Name Sever로 전달하고 Name Server로부터 정보(도메인 이름과 IP 주소)를 받아 클라이언트에게 제공하는 기능을 수행한다.

이 과정에서 Resolver는 하나의 Name Server에게 DNS 요청을 전달하고 해당 서버에 정보가 없으면 다른 Name Server에게 요청을 보내 정보를 받아온다.

이렇듯 Resolver는 수많은 Name Server에 접근하여 사용자로부터 요청 받은 도메인의 IP 정보를 조회하는 기능을 수행한다.

하지만 Resolver에 기능을 단말에 구형하는 것은 자원의 한계가 있기에 대부분 기능을 DNS 서버에 구현하고, 클라이언트 호스트는 Resolver의 단순한 기능만 지닌 Resolver 루틴을 구현하는 옵션이 제시되어있다.

이러한 단순화된 기능의 Resolver를 Stub Resolver라고 하며, Stub Resolver는 수 많은 Name Server의 구조를 파악할 필요 없이 Resolver가 구현된 DNS 서버의 IP 주소만 파악하면 된다.

클라이언트 호스트에서 설정하는 DNS 서버(Recursive DNS Server)는 이와 같은 서버를 의미하는 것으로, 도메인에 대한 질의를 받은 Stub Resolver는 설정된 DNS 서버로 DNS Query(질의)를 전달하고 DNS 서버로부터 최종 결과를 응답 받아 웹 브라우저로 전달하는 인터페이스 기능만 수행한다.

DNS 동작 과정 전체 설명


DNS 동작 과정

DNS Query 란?

DNS 클라이언트와 DNS 서버는 DNS Query를 교환한다.

DNS Query는 Recursive(재귀적) 또는 Iterative(반복적)으로 구분된다.

Recursive Query (재귀적 질의)

  • 결과물(IP 주소)를 돌려주는 작업이다. (결과적으로 Recursive 서버가 Recursive 쿼리를 웹 브라우저 등에게 돌려주는 역할을 한다.)
  • Recursive Query를 받은 Recursive 서버는 Iterative하게 권한 있는 Name Server로 Iterative Query를 보내서 결과적으로 IP 주소를 찾게 되고 해당 결과물을 응답한다.
  • 사전적 의미는 재귀로, 응답을 돌려주는 Query이다.

Iterative Query (반복적 질의)

  • Recursive DNS 서버가 다른 DNS 서버에게 Query를 보내어 응답을 요청하는 작업이다.
  • Recursive 서버가 권한 있는 Name Server들에게 반복적으로 Query를 보내서 결과물(IP 주소)를 알아낸다.
  • Recursive 서버에 이미 IP 주소가 캐시되어 있다면 이 과정은 건너뛴다.

DNS 동작 과정 전체 예시

  1. 웹 브라우저에 www.naver.com 입력한다.
  2. 웹 브라우저는 이전에 방문한 이력이 있는지 조회한다.
    • 브라우저 캐시 확인
    • OS 캐시 확인
    • 라우터 캐시 확인
    • ISP 캐시 확인 (Recursive DNS Server)
  3. ISP에서 DNS Iterative하게 쿼리를 날린다.
  4. ISP는 Authoritative DNS 서버에서 최종적으로 IP 주소를 응답 받는다.
  5. ISP는 해당 IP 주소를 캐시한다.
  6. 웹 브라우저에게 응답한다.

DNS 레코드 종류


  • SOA(Start Of Authority) : 권한 시작 지정하고, 권한이 있는 서버를 가리킴
  • A(Host Record) : FQDN과 32비트의 IPv4 주소를 연결
  • AAAA(IPv6 Host) : FQDN과 128비트의 IPv6 주소를 연결
  • CNAME(Alias Record) : 실제 도메인 이름과 연결되는 가상 도메인 이름(별칭)
  • MX(Mail Exchange Record) : 주어진 사서함에 도달할 수 있는 라우팅 정보 제공
  • SRV(Service Resources) : 비슷한 TCP/IP 서비스를 제공하는 다수의 서버 위치 정보를 제공
  • NS(Name Servers) : 도메인 서버 목록을 지정

References


DNS란? (도메인 네임 시스템 개념부터 작동 방식까지) - 하나몬

DNS와 작동원리

This post is licensed under CC BY 4.0 by the author.

© Yn3. Some rights reserved.