DNS의 기본 개념과 동작 방식

Moen·2023년 1월 8일
2
post-custom-banner

DNS(Domain Name System) 기본 개념

  • 도메인 네임 시스템은 도메인(google.com)을 IP 주소(142.250.196.142)로 변환해주는 역할을 합니다. 또는 IP주소를 도메인으로 변환하는 작업도 할 수 있습니다.
  • 인터넷을 사용하는 사용자는 특정 숫자로 저장된 IP 주소를 모두 외울 수 없어서, 사용자가 이해할 수 있는 문자열 형태인 도메인 네임을 사용합니다. 도메인 네임을 위치(위도, 경도)를 도로명으로 비유하는 경우와 유사합니다.
  • DNS는 도메인 네임 스페이스 구조로 계층적 데이터 베이스의 실체입니다.
  • DNS가 도메인 네임을 IP주소로 변경하기 위해서 내부적으로 DNS 서버가 동작합니다.
  • DNS 서버 요청 / 응답의 매개체로 DNS query를 사용합니다.
  • 매번 도메인 주소를 IP 주소로 바꾸는 작업은 과도한 리소스 낭비일 수 있어서 DNS cache를 사용해서 리소스 낭비를 방치할 수 있습니다.

Domain Name Space

  • 도메인을 IP 주소로 변경하는 서버가 하나만 존재한다면 전세계적으로 무수히 많은 도메인을 동시에 처리할 수 있는 물리적인 컴퓨터가 현대 과학으로 해결할 수 있을까요?
  • 위의 문제를 해결하기 위해 DNS 구조는 분산 시스템과 계층적 구조로 이루어져 있습니다.
  • 분산 시스템을 통해 레이블을 dot(.)으로 구분해서 각 기관에서 관리합니다.
    • 레이블은 도메인을 나누는 최소 단위인 데이터로 문자열과 레이블 길이로 이루어져 있습니다.
    • 레이블은 고유해야 합니다. 그렇지 않으면 도메인 네임을 탐색한 과정에서 충돌이 발생할 수 있습니다.
  • 분산 시스템을 통해 나누어진 레이블은 트리 자료구조로 이루어진 계층적 구조로 IP 주소를 매핑합니다.
    • 계층 구조로 이루어진 Domain Name Space는 최상위 계층으로 시작해서 하위 계층으로 순차적으로 탐색해서 IP 주소를 반환합니다.
  • 이러한 분산 시스템과 계층적 구조를 통해 효율적으로 도메인을 관리할 수 있습니다.

image


DNS 서버

DNS 서버 기본 개념

  • 모든 DNS 서버는 DNS recursor, Root Name Server, TLD Name Server, Authoritative Name Server(SLD Name Server)로 분류됩니다.
  • DNS cache가 존재하지 않는다면 4개의 DNS 서버를 순차적으로 작동하여 요청한 도메인 주소를 IP 주소로 변환해서 Client에 전달하는 작업을 합니다.
  • DNS 서버는 Domain Name Space의 계층적 구조에 대한 정보를 저장하고 있는 서버입니다.
  • DNS recursor는 Resolver, Recursive DNS Server, Local Server, ISP(통신사) Server라고 부르기도 합니다. 이 글에서는 DNS recursor로 통일하겠습니다.

Root Name Server

  • Root Name Server는 계층 구조 트리에서 최상위 경로를 담당하고 있습니다.
  • 도메인 주소 맨 뒤에는 대부분 dotnaver.com(.)이 생략되어 있고, 생략된 dot이 Root Name Server입니다.
  • 사람이 이해할 수 있는 도메인 네임을 IP 주소로 변환하는 첫 번째 단계로 ICANN이 직접 관리하는 절대 존엄 서버입니다.
    • 패킷의 실질적인 크기 제한으로 인해 루트 서버 수를 13개 서버 주소로 제한하도록 결정되었습니다.
    • 갯수가 13가지가 아닌 13가지 유형의 루트 이름 서버가 있으며 전 세계에 각각의 사본이 다수 있습니다.
  • 도메인 확장자(.kr, .com) 레이블을 구분해서 TLD Name Server로 안내합니다.

TLD(Top-Level Domain) Name Server

  • Authoritative DNS 서버의 주소를 저장하고 안내하는 역할을 합니다.
  • 만약 naver.com 으로 DNS에 요청을 보내게 된다면 Root Name Server를 통해 .com 도메인 확장자를 반환 받아서 .com 을 관리하는 기관에 naver.com 도메인 주소가 존재하는지 확인하여 Authoritative DNS로 안내합니다.
  • TLD Name Server는 ICANN의 지사인 IANA(Internet Assigned Numbers Authority)가 관리하며, 두가지 서버로 구분합니다.
    • 일반 최상위 도메인: 가별로 고유하지 않은 도메인입니다. (.com, .net)
    • 국가 코드 최상위 도메인: 국가 또는 주와 관련된 모든 도메인이 포함됩니다. (.kr, .us)

Authoritative Name Server(SLD Name Server)

  • 일반적으로 DNS 서버에서 가장 마지막 단계로 실제로 DNS 리소스 레코드를 보유하고 담당하는 서버입니다.
  • 실제 도메인과 IP 주소의 관계가 기록,저장, 변경되는 서버입니다. - 유료 도메인을 대여했을때 명의가 변경된다는 것을 의미하는가?

DNS recursor

  • DNS recursor는 Client 요청을 받아 Name Server로 전달하고 반환 받은 정보(IP 주소)를 Client에게 알려주는 중계자 역할을 합니다.
  • 이 과정에서 계층적 구조 트리에서 순차적으로 반환하는 결과를 재귀적으로 탐색합니다.
  • 재귀적으로 탐색해서 최종 결과를 DNS cache에 저장해 동일한 도메인 주소로 요청을 보내면 재귀적으로 탐색하는 작업을 하지 않고 즉시 Client에게 IP 주소를 반환해서 불필요한 리소스가 발생하지 않게 할 수 있습니다.

https://www.cloudflare.com/img/learning/dns/what-is-dns/dns-record-request-sequence-1.png


DNS query

  • DNS 클라이언트와 DNS 서버는 DNS 쿼리를 교환하며, 요청과 응답의 사용되는 매개체입니다.
  • 쿼리를 조합을 사용하면 DNS 확인을 위한 최적화된 프로세스가 되어 이동 거리를 줄일 수 있습니다.

Recursive Query

  • Client와 DNS recursor 통신에 사용되는 쿼리입니다.
  • 실제 IP 주소를 반환합니다.
  • Recursive Query와 DNS recursor의 차이를 정확히 인지하고 있어야 합니다.
    • Recursive Query는 요청과 응답하는 과정을 포함하는 실제 반환 결과 값입니다.
    • DNS recursor는 요청과 응답 과정을 실행하는 서버입니다.

Iterative Query

  • DNS recursor과 Name Server 통신에 사용되는 쿼리입니다.
  • 반복적으로 쿼리를 보내서 결과물(IP 주소)를 알아내서 DNS recursor에게 IP 주소를 보냅니다.
  • DNS recursor에 이미 IP 주소가 캐시 되어있다면 이 과정은 생략합니다.

DNS 동작 과정

  1. 브라우저(Client)에 naver.com 입력하면 Recursive Query가 DNS Recursor로 요청을 보냅니다.
  2. DNS Recursor에서 DNS cache 유무를 확인합니다.
  3. 만약 DNS cache가 존재하지 않는다면 DNS Recursor에서 Iterative Query가 Root Name Server로 요청을 보냅니다.
  4. Root Name Server에서 DNS Recursor로 도메인 확장자 .com 을 반환합니다.
  5. 반환 받은 쿼리를 DNS Recursor는 Iterative Query 형태로 TLD Name Server로 보내서 .com 을 관리하는 기관에서 naver.com 이 존재하는지 확인 후 쿼리를 DNS Recursor로 보냅니다.
  6. DNS Recursor는 Authoritative Name Server에 실제 도메인 주소와 동일한 주소가 있는지 확인하기 위해 Iterative Query를 보내서 IP 주소를 반환합니다.
  7. 6번 과정에서 DNS cache를 저장해서 불필요한 리소스가 발생하는 문제를 예방합니다.
  8. 이어서, DNS Recursor는 처음 요청한 도메인가 매핑된 IP 주소로 웹 브라우저에게 응답합니다.
  9. 브라우저가 IP 주소로 HTTP 요청을 보냅니다.
  10. IP 주소의 서버가 브라우저에서 렌더링할 웹 페이지를 반환합니다.

https://i0.wp.com/hanamon.kr/wp-content/uploads/2022/04/DNS-%E1%84%83%E1%85%A9%E1%86%BC%E1%84%8C%E1%85%A1%E1%86%A8%E1%84%80%E1%85%AA%E1%84%8C%E1%85%A5%E1%86%BC.png?w=2810&ssl=1


보완해야 할 정보

  • 브라우저 캐싱, OS 캐싱, ISL 캐싱에 대한 정보 추가
  • 만약 브라우저 캐싱에 존재하지 않는다면 -> OS 캐싱을 확인하고 OS 캐싱에 존재하지 않으면 ISL 캐싱 순서호 확인하는지에 대한 정보 찾아보기

도메인 이름 데이터 포맷, 레이블, 그리고 FQDN

네트워크 패킷(Network Packet)이란? / 정의/ 패킷 손실

참고 자료

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

[WEB] 🌐 DNS 개념 & 동작 ★ 알기 쉽게 정리

DNS란 무엇입니까? | DNS 작동 원리

profile
게시글에 잘못된 부분이 있으면 댓글로 알려주시면 빠르게 수정 및 수용도 하겠습니다. 🥲
post-custom-banner

0개의 댓글