DNS(Domain Name System)

vvinter·2024년 4월 8일
0

개발용어

목록 보기
24/28

DNS란?

DNS란 Domain Name System의 약자로, 도메인이름을 IP 주소로 변환하거나, 그 반대의 역할을 수행하는 시스템이다. 일종의 인터넷에서 사용되는 전화번호부 같은 역할이라고 할 수 있다.

일반적으로 우리는 웹사이트에 접속할 때 외우기 어려운 IP 주소 대신 도메인이름을 사용한다. 인터넷의 모든 장치는 고유한 IP 주소를 가지고 있지만, 우리는 IP 주소보다 도메인이름을 더 쉽게 기억하고 이해할 수 있기 때문이다.

따라서 일종의 별명으로 입력한 도메인이름을 실제 네트워크상에서 사용하는 IP 주소로 바꾸고 해당 주소로 접속하는 과정이 필요한 것이다.

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

DNS 구성 요소

  • 도메인 네임 스페이스

    • Domain Name Space
    • DNS가 저장, 관리하는 계층적 구조
    • 도메인 네임 스페이스라는 규칙으로 도메인 이름을 저장하고 분산함.
  • 네임 서버

    • Name Server = DNS Server
    • 권한 있는 DNS 서버
    • 해당 도메인 이름의 IP 주소를 찾음
  • 리졸버

    • Resolver
    • 권한 없는 DNS 서버
    • 웹브라우저와 같은 DNS 클라이언트의 요청을 네임 서버로 전달
    • 네임 서버로부터 정보(도메인 이름, IP 주소)를 받아 클라이언트에게 제공하는 기능 수행

DNS는 어떻게 작동하는가?

퍼블릭 DNS와 프라이빗 DNS를 사용하는 경우를 구분하여 작동

  • 퍼블릭 DNS
    • 일반적으로 ISP(인터넷 서비스 제공업체)가 기업에 IP 레코드를 제공
    • 이러한 레코드는 일반 대중에게 제공되며, 사용 중인 디바이스 또는 디바이스에 연결된 네트워크에 상관없이 누구나 액세스 가능
  • 프라이빗 DNS
    • 회사의 방화벽 뒤에 존재하며, 내부 사이트의 레코드만을 보관
    • 프라이빗 DNS의 범위는 내부 사이트 및 사용되는 서비스의 IP 주소를 기억하는 것으로 제한되며, 프라이빗 네트워크 외부에서 액세스 불가

🔎 퍼블릭 DNS 프로세스 작동 방식

  1. 웹 브라우저에 도메인을 입력하면 먼저 Recursive(재귀) DNS(ex. 통신사) 서버에서 해당 도메인에 대한 IP 주소 캐시 데이터가 있는지 확인 후 Root DNS 서버로 요청합니다. ( 캐싱 된 IP 주소가 있으면 바로 IP 주소를 반환해줌.)

  2. Root DNS 서버에서 도메인을 받아 TLD(최상위 도메인)을 판단하여 Recursive DNS 서버로 보냅니다. ( .com 같은 최상위 도메인을 구별하여 알려줌. )

  3. Recursive DNS 서버는 TLD DNS 서버에게 요청을 보내며 실제 IP 주소를 가지고 있는 Authoritative 네임 서버 정보를 Recursive DNS 서버에게 반환해줍니다.

  4. Recursive DNS 서버는 Authoritative DNS 서버에 실제 IP 주소를 요청하며 Authoritative DNS 서버는 Recursive DNS 서버도메인 IP 정보를 전송합니다.

  5. Recursive DNS 서버는 최종적으로 요청한 웹 브라우저에 IP 주소를 제공합니다.

  6. 웹 브라우저는 응답받은 IP 주소를 http 요청합니다.


네임 서버 (DNS 서버)

  • 실질적으로 시스템을 동작시키는 서버
  • 데이터베이스 역할(저장, 관리), 찾아주는 역할, 요청 처리 응답 구현
  • 많은 도메인과 IP 주소를 관리하기 위해 계층화되어 있음
  • 특성과 성질에 맞게 분리되어 관리
  • DNS 서버를 복사하여 같은 기능을 담당하는 미러 서버 존재

네임 서버 종류

☁️ Root DNS Server

  • DNS 레코드를 요청하는 첫 단계
  • TLD DNS 서버 IP 주소를 저장하고 안내하는 역할
  • 비영리 단체인 ICANN(DNS 총괄 기구)이 관리

☁️ TLD DNS Server

  • 최상위 도메인 네임 서버
  • TLD 네임 서버는 .com, .co.kr 과 같은 점 뒤에 오는 도메인 확장자를 사용하는 모든 도메인 정보를 유지
  • TLD(Top-level domain), 도메인 등록 기관(Registry)에서 관리하는 서버
  • 도메인 판매 업체 (Registrar)에서 DNS 설정 변경 시, Registry로 전달
    ⇒ 해당 원리로 TLD DNS 서버는 Registry에서 관리

☁️ Authoritative DNS Server

  • Second-Level Domain(SLD) DNS 서버
  • 권위, 권한 네임 서버
  • 실제 개인 도메인과 IP 주소의 관계가 기록(저장, 변경)되는 서버
  • 도메인 호스팅 업체, 개인 서버가 여기에 포함됨

☁️ Recursive DNS Server (ISP DNS Server)

  • 재귀 네임 서버, 리졸버 서버, 리커서
  • 권한 없는 DNS 서버
  • 클라이언트, 인터넷 사용자가 가장 먼저 접근하는 DNS 서버
  • 특정 도메인에 대한 IP 정보를 캐시 형태로 저장해 놓음
  • TTL(Time To Live) 동안 캐시 저장을 통해 효율성 증대
  • KT, LG, SK와 같은 ISP(통신사) DNS 서버

리졸버(Resolver)

  • 리졸버는 웹 브라우저와 같은 DNS 클라이언트의 요청을 네임 서버로 전달하고 네임 서버로부터 정보(도메인 이름과 IP 주소)를 받아 클라이언트에게 제공하는 기능을 수행
  • ⬆️  이 과정에서 리졸버는 하나의 네임 서버에게 DNS 요청을 전달하고 해당 서버에 정보가 없으면 다른 네임 서버에게 요청을 보내 정보를 받아옴
  • 리졸버에 기능을 단말에 구현하는 것은 자원의 한계가 있기에 대부분 기능을 DNS 서버에 구현하고, 클라이언트 호스트는 리졸버의 단순한 기능만을 지닌 리졸버 루틴을 구현하는 옵션이 제시되어있음
    • 스터브 리졸버(Stub Resolver) : 단순화 기능의 리졸버
      : 수많은 네임 서버의 구조를 파악할 필요 X, 리졸버가 구현된 DNS 서버의 IP 주소만 파악하면 됨.
  • 클라이언트 호스트에서 설정하는 DNS 서버(Recursive DNS Server)는 이와 같은 서버를 의미하는 것으로, 도메인에 대한 질의를 받은 스터브 리졸버는 설정된 DNS 서버로 DNS Query(질의)를 전달하고 DNS 서버로부터 최종 결과를 응답 받아 웹 브라우저로 전달하는 인터페이스 기능만을 수행

DNS Query(쿼리, 질의)란?

  • 사용자가 도메인 이름을 입력하고 IP 주소를 얻기 위해 DNS 서버에 보내는 요청
  • 이 요청은 DNS 리졸버가 사용자 컴퓨터에서 생성하고 DNS 서버에 전송함
  • 이 응답에는 사용자가 요청한 정보가 포함되는데, DNS 쿼리와 DNS 응답은 일반적으로 UDP를 사용하여 전송됨.
  • DNS 쿼리의 결과는 DNS 리졸버에게 반환되는데, 사용자에게 도메인 이름에 대한 IP 주소를 반환하거나, 이를 찾을 수 없을 경우 에러를 반환함
  • DNS 쿼리는 Recursive(재귀적) 또는 Iterative(반복적)으로 구분
    • Recursive Query (재귀적 질의)

      • 결과물(IP 주소)을 돌려주는 작업
      • 사용자 호스트가 Recursive DNS 서버로 질의할 때 사용되는 방식으로, Recursive DNS 서버로 대상 도메인의 리소스 레코드 정보를 조회해서 응답해 달라는 쿼리를 의미함.
      • Recursive DNS 서버는 자신의 캐시 데이터를 조회한 후 데이터가 있으면 사용자 호스트로 그 결과를 반환하고 데이터가 없으면 최상위 Root DNS 서버부터 쿼리 대상 도메인 DNS 서버까지 반복적 쿼리를 수행한 후 그 결과를 사용자 호스트에 반환
        ⇒ 결과적으로 Recursive 서버가 Recursive 쿼리를 웹 브라우저 등에 돌려주는 역할을 함.
    • Iterative Query (반복적 질의)

      • Recursive DNS 서버가 다른 DNS 서버에게 쿼리를 보내어 응답을 요청하는 작업
      • Recursive DNS 서버가 도메인을 관리하는 각 DNS 서버로 질의할 때 사용하는 방식으로, 최상위 Root DNS 서버부터 계층 구조에 따라 대상 도메인 DNS 서버까지 각 DNS 서버가 응답하는 위임된 DNS 서버 정보에 따라 순차적으로 반복하여 진행하는 쿼리를 의미함.
      • Recursive DNS 서버가 권한 있는 DNS 서버들에게 반복적으로 쿼리를 보내서 결과물(IP 주소)을 알아냄.
      • 이미 IP 주소가 캐시 되어있다면 이 과정은 건너뜀

DNS Resolver와 Local DNS Server

DNS 동작에 대해 정리하기 위해 여러 곳의 자료를 보다 보니 Recursive DNS Server에 대해 정말 다양하게 설명하고 있어서,,, 조금 혼란이 왔다…. 그리고 DNS 쿼리를 응답하고 처리하는 부분에서도 조금씩 차이가 있다는 것을 알게 되었고, 이 부분에 대해서 더 찾아보게 되었다.

우선, 리졸버 서버 = Recursive DNS Server = Local DNS Server(ISP DNS Server) = 리커서 거의 다 같은 개념이라고 이해하면 될 것 같다.

** Local DNS Server는 ISP의 DNS 서버

DNS Resolver

  • 일반적으로 사용자의 컴퓨터나 모바일 디바이스에 포함
  • 사용자가 도메인 이름을 입력하면 해당 리졸버는 DNS 쿼리를 생성 ⇒ 인터넷상의 다른 DNS 서버에 전송
  • 따라서, 리졸버는 캐시 된 DNS 정보를 사용자의 컴퓨터나 모바일 디바이스에 저장하며, 이를 사용하여 DNS 쿼리를 처리
  • 즉, 리졸버는 사용자의 컴퓨터와 DNS 서버 사이의 중개자 역할 수행

Local DNS Server

  • 네트워크에서 사용, 일반적으로 기업, 학교, 공공기관 등에서 사용
  • 네트워크 내에서 DNS 쿼리를 처리하고, 이를 인터넷상의 다른 DNS 서버에 전달
  • 네트워크 내에 캐시 된 DNS 정보를 저장하며, 이를 사용하여 네트워크 내 모든 사용자의 DNS 쿼리를 빠르게 처리할 수 있음.
  • 성능 측면에서 리졸버보다 더 높은 처리량 가능, 다양한 DNS 정보를 캐시하여 더 빠른 DNS 쿼리 응답 제공

결론적으로, 대부분 리졸버는 하나의 사용자를 위해 동작하고, Local DNS Server는 네트워크 내의 모든 사용자를 위해 동작한다는 것이다.

따라서 쿼리 수행과정에서 DNS Resolver와 Local DNS Server는 비슷한 역할을 하지만, 그 역할을 하는 위치와 대상이 다르기 때문에 서로 다른 기능과 기술을 사용한다는 것이다.

⇒ 헷갈렸던 부분에 대해서는 상황에 따라 리졸버 또는 Local DNS Server를 선택해 쿼리 응답을 처리한다! 로 정리해 보려고 한다 ꒰⍤꒱ ༘*

DNS가 중요한 이유

DNS가 없으면 사용자는 방문하려는 모든 웹사이트의 IP 주소를 기억해야 하므로 인터넷을 이용하는데 어려움이 생길 수밖에 없다. 보이지 않는 곳에서 DNS 서버가 주소를 변환하여 웹에 쉽게 접근할 수 있도록 도와주기 때문에, 우리는 더욱 쉽게 인터넷을 이용할 수 있는 것이다.






📎  참고

https://velog.io/@zinukk/9kpyzbdt
https://velog.io/@kkj53051000/도메인Domain과-DNS-정리
https://powerdmarc.com/ko/what-is-a-dns-server/
https://velog.io/@chun_gil/DNS-서버-정의와-종류
https://www.ibm.com/kr-ko/topics/dns
https://hanamon.kr/dns란-도메인-네임-시스템-개념부터-작동-방식까지/
https://jaehyeon48.github.io/network/dns/
https://securitymax.tistory.com/103

0개의 댓글