[네트워크] DNS

CJY·2023년 8월 4일
0

네트워크

목록 보기
4/11

DNS

DNS란?

DNS(Domain Name System)는 인터넷에서 사용되는 네트워크 서비스로, 사람이 이해하기 쉬운 도메인 이름(예: www.example.com)과 컴퓨터가 이해하는 IP 주소(예: 192.0.2.1)를 매핑하는 시스템입니다. DNS는 사용자가 도메인 이름을 입력하면 해당 도메인 이름에 대응하는 IP 주소를 찾아주는 역할을 합니다.

인터넷에서 컴퓨터나 네트워크 기기들은 IP 주소를 사용하여 서로 통신합니다. 하지만 IP 주소는 일련의 숫자로 이루어져 있어서 사람이 기억하고 입력하기 어렵습니다. 따라서 사람들은 도메인 이름을 사용하여 웹 사이트에 접속하거나 이메일을 보내는 등의 활동을 합니다.

DNS는 이러한 도메인 이름과 IP 주소 사이의 매핑을 제공하여, 사용자가 도메인 이름을 입력하면 해당 도메인 이름에 대응하는 IP 주소를 찾아주는 역할을 수행합니다. DNS 서버들이 전 세계적으로 분산되어 있으며, 도메인 이름과 IP 주소의 매핑 정보를 저장하고 관리합니다.

작동 방식

  1. 사용자가 도메인 이름을 입력합니다.

    • 예를 들어, 사용자가 웹 브라우저에 "www.example.com"과 같은 도메인 이름을 입력합니다.
  2. 브라우저 캐시, OS 캐시, 라우터 캐시 확인

  3. 로컬 DNS 캐시 확인

    • 웹 브라우저는 로컬 DNS 클라이언트 역할을 수행하여, 먼저 로컬 DNS 캐시를 확인합니다.
      로컬 DNS 캐시에는 최근에 이용한 도메인 이름과 해당 도메인 이름에 대응하는 IP 주소 정보가 저장되어 있습니다.
      이전에 동일한 도메인 이름에 접속했던 기록이 있다면 로컬 DNS 캐시에서 바로 해당 IP 주소를 찾을 수 있습니다.
  4. 로컬 네트워크의 DNS 서버 질의:

    • 로컬 DNS 캐시에 해당 정보가 없는 경우, 웹 브라우저는 로컬 네트워크에 설정된 DNS 서버로 질의(Query)를 보냅니다.
      로컬 네트워크의 DNS 서버는 도메인 이름에 대응하는 IP 주소 정보를 가지고 있는지 확인하기 위해 다른 DNS 서버들과 질의를 주고받습니다.
  5. 루트 DNS 서버 질의:

    • 로컬 네트워크의 DNS 서버도 해당 정보가 없는 경우, 루트 DNS 서버에 질의를 보내게 됩니다.
      루트 DNS 서버는 인터넷의 최상위 도메인(.com, .org 등)의 DNS 서버 주소를 알려줍니다.
  6. 중간 DNS 서버 질의:

    • 로컬 네트워크의 DNS 서버는 루트 DNS 서버로부터 얻은 최상위 도메인(.com, .org 등)의 DNS 서버에 다시 질의를 보냅니다.
      이 과정이 계층적으로 반복되며, 최종적으로 해당 도메인 이름에 대응하는 IP 주소를 찾습니다.
  7. IP 주소 반환:

    • DNS 서버들은 계층적으로 도메인 이름을 분석하여 최종적으로 해당 도메인 이름에 대응하는 IP 주소를 찾아 반환합니다.
  8. 웹 브라우저 요청:

    • 웹 브라우저는 받은 IP 주소를 사용하여 해당 웹 서버에 요청을 보내고 웹 페이지를 받아옵니다.
      이후, 해당 도메인 이름과 IP 주소의 매핑 정보는 로컬 DNS 캐시에 저장되어 다음에 동일한 도메인에 접속할 때 빠르게 IP 주소를 찾을 수 있도록 합니다.

질의 종류

DNS(Domain Name System)에서는 다양한 질의 종류가 있으며, 각각의 질의 종류에 따라 다른 정보를 얻을 수 있습니다. 일반적으로 가장 많이 사용되는 네 가지 주요 질의 종류는 다음과 같습니다:

  • A 질의 (Address Record Query):
    A 질의는 도메인 이름에 대응하는 IPv4 주소를 찾기 위해 사용됩니다.
    예를 들어, "www.example.com"에 대한 A 질의를 하면 해당 도메인 이름에 대응하는 IPv4 주소를 반환합니다.

  • AAAA 질의 (IPv6 Address Record Query):
    AAAA 질의는 도메인 이름에 대응하는 IPv6 주소를 찾기 위해 사용됩니다.
    IPv6는 IPv4보다 더 긴 주소 체계를 사용하므로, AAAA 질의를 통해 IPv6 주소를 얻을 수 있습니다.

  • CNAME 질의 (Canonical Name Record Query):
    CNAME 질의는 도메인 이름에 대해 다른 도메인 이름(CNAME)을 찾기 위해 사용됩니다.
    CNAME은 도메인 이름을 다른 도메인 이름으로 매핑하는데 사용되며, 도메인 이름의 별칭을 설정하는 데 유용합니다.

  • MX 질의 (Mail Exchanger Record Query):
    MX 질의는 도메인 이름에 대응하는 메일 서버의 정보를 찾기 위해 사용됩니다.
    이 정보를 사용하여 해당 도메인 이름으로 이메일을 보낼 때 메일이 전달될 서버를 확인할 수 있습니다.

좀 더 깊이 알아보자

DNS

이 시스템은 전세계적으로 약속된 규칙을 공유합니다. 제가 느끼기엔 프로토콜과 같은 느낌입니다.
상위 기관에서 인증된 기관에게 도메인을 생성하거나 IP 주소로 변경할 수 있는 ‘권한 (Authroization)’을 부여합니다.
DNS는 상위 기관과 하위 기관으로 나뉘는 계층 구조를 가지는, 분산 데이터베이스 구조를 가집니다.

아무래도 전세계에 존재하는 도메인의 수가 많다보니 하나의 서버가 모든 것을 관리하는 것은 쉬운 일이 아닐 것입니다. 따라서 역할을 분리하여 효율적으로 데이터를 관리할 수 있는 구조를 가져간 것은 당연한 일이라 생각합니다.

종류

  • Root DNS Server
    ICANN이 직접 관리하는 최상위 서버로, TLD DNS 서버 IP들을 저장해두고 안내하는 역할을 합니다.

  • TLD(최상위 도메인, Top-Level-Domain) DNS Server
    도메인 등록 기관(Registry)이 관리하는 서버로, Authoritative DNS 서버 주소를 저장해두고 안내하는 역할을 합니다.
    TLD가 Authoritative DNS Server를 아는 이유는 도메인 판매 업체(가비아 등)의 DNS 설정이 변경되면 도메인 등록 기관(Registry)으로 전달이 되기 때문입니다.

  • Authoritative(aka. Second-Level-Domain, SLD) DNS Server
    실제 개인 도메인과 IP 주소의 관계가 기록/저장/변경되는 서버입니다.
    일반적으로 도메인/호스팅 업체의 ‘네임서버’를 말하지만, 개인 DNS 서버 구축을 한 경우에도 여기에 해당합니다.

  • Recursive DNS Server Local server Resolver
    인터넷 사용자가 가장 먼저 접근하는 DNS 서버입니다.
    데이터를 일정 기간(TTL/Time to Live) 동안 캐시라는 형태로 저장해 둡니다. 직접 도메인과 IP 주소의 관계를 기록/저장/변경하지는 않고 캐시만을 보관하기 때문에, Authoritative 서버가 아닙니다. (이 DNS 서버를 제외한 위 3가지 DNS 서버는 Authroitative 서버입니다.)
    KT/LG/SK와 같은 ISP(Internet Service Provider, 통신사) DNS 서버가 있고, 브라우저 우회 용도로 많이 쓰는 구글 DNS, 클라우드플레어와 같은 Public DNS 서버가 있습니다.

참고
DNS란 뭐고, 네임서버란 뭔지 개념정리
DNS란? (도메인 네임 시스템 개념부터 작동 방식까지)

profile
열심히 성장 중인 백엔드

0개의 댓글