본문 바로가기
CS/컴퓨터 네트워크

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

by snow_white 2023. 1. 26.

DNS

  • 계층 구조를 지원하는 도메인 기반의 주소 표기 방법을 위한 분산 데이터베이스 시스템
  • 도메인 이름에서 IP 주소를 얻는 것
www.naver.com과 같은 형태의 도메인 주소로 웹 사이트에 접속한다.
네트워크 상 서버들은 IP 주소로 서버를 식별한다.
도메인 주소는 7계층인 애플리케이션 계층에서 주로 사용하는 주소이므로 서버 식별용 도메인 주소를 사용할 순 없다.
사용자들이 일일이 사이트의 IP 주소(125.209.222.142)를 외운다? ❌
사용자 입장에서 편한 도메인 주소와 장비 입장에서 편한 IP 주소를 변환해줄 무언가가 필요한데 이것이 바로 DNS!

DNS 구성 요소

DNS는 도메인 네임 스페이스, 네임 서버, 리졸버라는 세 가지 요소로 구성된다.

 

1️⃣도메인 네임 스페이스

  • 트리 구조의 네임 스페이스를 비롯해 데이터에 대한 이름 관련 규칙을 정의
  • 도메인 주소를 어떻게 관리할 지에 대한 방법
  • 트리에 연결된 호스트는 자원 레코드로 표현됨
  • DNS 서비스는 자원 레코드의 특정 유형 정보를 얻는 과정

2️⃣ 네임 서버

  • 도메인 트리 구조와 트리에 보관된 자원 레코드를 관리하는 프로그램
  • 도메인 주소를 관리하기 위해 사용하는 DNS 전용 서버
  • 보통 도메인 주소의 일부만을 가진 분산 형태임

3️⃣리졸버

  • DNS 상의 클라이언트
  • 네임 서버로부터 클라이언트의 요청 정보를 얻어내는 프로그램
  • 하나 이상의 네임 서버와 접촉

도메인 네임 스페이스

  • DNS가 저장·관리하는 계층적 데이터베이스
  • 최상위에 이름이 없는 호스트인 루트가 존재
  • 그 밑으로 인터넷에 연결된 모든 호스트가 트리 형태로 연속해서 이어 진 계층 구조
  • 도메인 이름은 .으로 구분한 호스트 레이블의 연속으로 표현함

  • 루트 도메인 (Root Domain)
    • 네임 스페이스에서 이름 해석의 출발지 역할을 수행하는 노드(서버)
    • 최상위 도메인 서버의 정보를 가지고 있다.
    • 전 세계에 13개의 원본 root 서버가 존재 (http://www.iana.org/domains/root/servers)
  • 최상위 도메인 (Top Level Domain = TLD)
    • 국가 코드 최상위 도메인 (ccTLD : country code TLD)
      • .kr, .jp 등
    • 일반 최상위 도메인 (gTLD = global TLD)
      • .net, .com, org 등
    • ARPA(Address and Routing Parameter Area) : 역방향 조회 시 사용되는 최상위 도메인
      • in-addr.arpa
  • 2차 도메인 (Second Level Domain, Sub Domain)
    • TLD 하위에서 관리되는 서브 도메인
    • 국가 도메인 하위에 기관 유형에 따른 분류
      • .co (일반회사), .ac (교육기관), .go (정부기관) 등
  • 서브 도메인 (Sub Domain)
    • 상위 도메인에 소속되는 각 기관 또는 회사별 도메인
      • ex : google, naver 등
  • 하위 노드는 무한정 만들 수 있지만 주소를 이룰 수 있는 문자 수에 제한이 있다 (255byte).

 

DNS 조회 단계

1. 사용자가 웹 브라우저에 'example.com'을 입력하면, 쿼리가 인터넷으로 이동하고 DNS 확인자가 이를 수신합니다.
2. 확인자가 DNS 루트 이름 서버(.)를 쿼리합니다. 여기서 캐시 데이터가 있다면 바로 8번, 브라우저에게 갖고 있는 IP 주소를 안내합니다.
3. 다음으로, 루트 서버가, 도메인에 대한 정보를 저장하는 최상위 도메인(TLD) DNS 서버(예: .com 또는 .net)의 주소로 확인자에 응답합니다. example.com을 검색할 경우의 요청은 .com TLD를 가리킵니다.
4. 확인자가 .com TLD에 요청합니다.
5. TLD 서버가 도메인 이름 서버(example.com)의 IP 주소로 응답합니다.
6. 재귀 확인자가 도메인의 이름 서버로 쿼리를 보냅니다.
7. example.com의 IP 주소가 이름 서버에서 확인자에게 반환됩니다.
8. DNS 확인자가, 처음 요청한 도메인의 IP 주소로 웹 브라우저에 응답합니다. DNS 조회의 8단계를 거쳐 example.com의 IP 주소가 반환되면, 이제 브라우저가 웹 페이지를 요청할 수 있습니다.
9. 브라우저가 IP 주소로 [HTTP] 요청을 보냅니다.
10. 해당 IP의 서버가 브라우저에서 렌더링할 웹 페이지를 반환합니다.

👀 DNS Cache?
Local DNS 서버는 이 정보를 수집하여 자신의 저장장치에 저장한다.
매번 Client에게 질의를 받을 때마다 상위 도메인 서버에 질의를 할 수 없다.
그렇기에 새로 질의를 하게 되면 DNS 캐싱을 하여 저장한다.

 

DNS 확인자

  • DNS 조회의 첫 번째 중단점
  • 최초 요청을 한 클라이언트 처리를 담당함
  • URL이 궁극적으로 필요한 IP 주소로 변환되도록 하는 일련의 쿼리 시작

 

DNS 쿼리 유형

재귀적 처리 (Recursive Query)

  • 해석기(리졸버)가 최초로 접속을 시도한 네임 서버가 질의 요청을 추적, 관리
  • 재귀적 요청을 받은 네임 서버가 결과적으로 해석기 역할을 수행
  • 비재귀적: 요청을 받은 네임 서버가 다른 네임 서버의 포인터 정보를 회신

재귀적 처리와 비재귀적 처리

반복적 처리 (Iterative Query)

  • 로컬 네임 서버가 여러 네임 서버를 직접 접촉
  • 네임 서버 2로부터 원하는 정보를 얻지 못한 로컬 네임 서버는 네임 서버 1과 직접 접촉하여 정보를 얻음
  • 네임 서버 1의 포인터인 IP 주소는 네임 서버 2가 제공

재귀적 처리와 반복적 처리

댓글