DNS와 작동 원리

강은비·2021년 11월 3일
1

Network

목록 보기
11/14
post-custom-banner

📌 DNS란?

Domain Name System

  • 호스트의 도메인 네임 www.example.com을 IP 주소(네트워크 주소) 192.168.1.0로 변환하거나, 그 반대의 역할을 수행하는 시스템이다.
  • 이름과 숫자 간의 매핑을 관리하여 마치 전화번호부와 같은 기능을 한다.
  • TCP/IP 프로토콜은 개체(호스트)를 구분하기 위한 식별자가 필요한데 이때 사용되는 식별자가 IP 주소이다.
  • 하지만 IP 주소는 사람이 인식하고 사용하기에 어려움이 있기 때문에 DNS가 IP 주소를 도메인 네임으로 바꿔준다.
  • DNS 서버는 사용자가 도메인 이름을 웹 브라우저에 입력할 때 해당 사용자를 어떤 서버에 연결할 것인지를 제어한다. 이러한 요청을 쿼리라고 한다.
  • DNS 서버는 IP 주소와 도메인을 저장하고 맵핑(mapping)하는 일종의 데이터베이스이다.
  • ex) 웹 브라우저의 주소장에 www.google.com (구글의 도메인 네임)을 입력하고 구글의 웹사이트로 이동

✔ Domain 구조

  • 인터넷상에서 사용되는 도메인은 전 세계적으로 고유하게 존재하는 이름
  • 정해진 규칙 및 체계에 따라야 하며, 임의로 변경되거나 생성될 수 없다.
  • 도메인의 체계적인 분류와 관리를 위해 도메인 이름은 몇 개의 짦은 영문자를 '. (닷, 점)'으로 연결한 계층 구조를 갖고 있다.
  • 역트리(Inverted tree) 구조라고 하며 트리 구조의 정점을 루트라고 한다.
  • 1단계 도메인 또는 최상위도메인TLD, Top Level Doamin: 루트 바로 아래 단계의 도메인
    • 'kr'과 같이 국가를 나타내는 국가 코드 도메인
      ccTLD (country code Top Level Domain)
    • 'com'같이 등록인의 목적에 따라 사용되는 일반 도메인
      gTLD (generic Top Level Domain)
  • 2단계 도메인 (1단계 도메인의 하위 도메인): 조직의 속성을 구분하는 'co'(영리 기업), 'go'(정부 기관), 'ac'(대학)과 같은 도메인이 있다.
  • 3단계 도메인: 조직이나 서비스의 이름을 나타내는 도메인 이름으로 도메인 사용자가 원하는 문자열을 사용할 수 있다.
  • 마지막에는 호스트가 위치한다.
  • 도메인을 표기할 때는 낮은 단계부터 표현하여 최상위 도메인이 가장 뒤에 나타납니다.
  • 도메인은 도메인 계층 구조를 반영한 네임 서버(DNS 서버라고도 함)에 저장 및 관리된다.
  • 각 네임 서버는 도메인 계층의 일부 영역을 담당하고 그 영역에 속한 도메인을 관리힌다.
  • 상위 계층의 네임 서버는 하위 계층의 도메인에 대한 정보를 관리하고 하위 계층 네임 서버의 IP 주소를 갖고 있다.
  • 최상위 계층인 루트 네임 서버의 IP 주소는 모든 DNS 서버가 등록하여 관리한다.

📌 DNS 기본 동작


1. 웹 브라우저에 www.naver.com을 입력하면 사용자의 컴퓨터가 Local DNS에게 "www.naver.com"이라는 hostname에 대한 IP 주소를 질의한다.
2-1. Local DNS에 IP 주소가 있으면 Local DNS가 사용자의 컴퓨터에 IP 주소를 주고 끝난다.
2-2. Local DNS에 IP 주소가 없다면 "www.naver.com" 의 IP 주소를 찾아내기 위해 다른 DNS 네임 서버과 통신한다.
3. 먼저, Root 네임 서버에게 "www.naver.com"의 IP 주소 질의
3-1. 'com' 정보를 등록하고 있는 Root 네임 서버는 'www.naver.com'의 IP 주소를 'com' 네임 서버(TLD 네임 서버)에 문의하라고 DNS 서버에게 'com' 네임 서버의 IP 주소를 알려 준다.
4. DNS 서버는 루트 네임 서버가 알려준 'com' 네임 서버의 IP 주소로 'com' 네임 서버에게 "www.naver.com"의 IP 주소를 질의해서 "naver.com" 네임 서버의 IP 주소를 얻는다.
5. DNS 서버는 "naver.com" 네임 서버에 "www.naver.com"의 IP 주소를 질의하여 www.naver.com의 IP 주소를 얻어 사용자의 컴퓨터에 www.naver.com의 IP 주소를 알려 준다.

Recursive Query : Local DNS 서버가 여러 DNS 서버를 차례대로 (Root DNS 서버 -> com DNS 서버 -> naver.com DNS 서버) 질의해서 호스트 네임에 대한 IP주소를 찾아가는 과정

이렇게 매번 루트 네임 서버에서부터 도메인의 트리 구조를 따라 순서대로 IP 주소를 찾아가는 과정을 반복하는 것은 효율적이지 않다. 그래서 DNS 서버는 질의한 정보를 한동안 캐시(cache)에 저장하여 같은 질의가 들어오면 루트 네임 서버까지 가지 않고 바로 IP 주소를 알려준다.


참고

post-custom-banner

2개의 댓글

comment-user-thumbnail
2023년 3월 15일

글 잘보고 갑니다👍👍👍

답글 달기
comment-user-thumbnail
2024년 8월 9일

궁금했는데 잘 봤습니다. 감사합니다

답글 달기