Today I Learned/개념 정리

DNS

Malachai Lee 2022. 9. 15. 15:35

DNS(Domain Name System; 도메인 이름 시스템)

Domain(영역, 범위) + Name(이름) + System(체계)

특정 기준으로 분리한 네트워크의 영역에 따라 붙인 이름을 관리하는 체계

 

 

DNS의 시작

ARPANET시절, 스탠포드 연구소는 복잡한 네트워크 위에서 서로의 기기로 정보를 정확히 송수신 하기 위해 IP주소를 사용하였다.

IP 주소를 사용하여 다른 기기에 접근하기 위해선, 숫자로 이루어진 상대 기기의 IP주소를 알아야 한다.

네트워크 상에 존재하는 컴퓨터가 점점 많아지자, 이를 쉽게 기억하기 위해 전화번호부처럼 숫자로 이루어진 IP주소와 평문으로 이루어진 호스트 이름을 맵핑하는 hosts.txt라는 파일을 관리하였다. UNIX에서는 이를 /etc/hosts 파일로 확인할 수 있다.

하지만 하나의 컴퓨터가 네트워크에 등록된다면 나머지 모든 컴퓨터가 각자의 전화번호부를 수정해야 했기 때문에, 공동으로 사용하는 hosts 파일을 가지는 컴퓨터를 정하고 질의를 통해 IP주소를 가져오도록 하였다.

수십억개의 컴퓨터가 연결되어있는 현대의 인터넷 네트워크에서 이러한 공동의 전화번호부 역할을 하는것이 DNS의 목적이라 할 수 있다.

 

DNS의 의의

이렇게 만들어진 공동의 전화번호부 또한 네트워크가 커짐에 따라 많은 문제점이 발견되었다.

  • Hosts.txt 파일의 크기가 너무 커지게 되었다.
  • 파일의 업데이트 주기가 점점 짧아져 관리가 힘들었다.
  • 내부와 외부의 모든 네트워크 트래픽이 스탠포드 연구소를 향했기 때문에 많은 부하가 발생했다.
  • 전 네트워크가 Hosts.txt 파일에 대해 의존성을 띄게 되었다.
  • Hosts.txt 파일의 구조는 계층이 없는 평문이었기 때문에, 등록하려는 모든 컴퓨터의 이름이 unique 해야했다.

이러한 문제점들 때문에 서버와 이름을 계층화 하여 분산된 데이터베이스와 계층적인 Name space를 가지는 DNS를 구상하게 되었다.

DNS의 구성 요소

개념적 구성 요소 1: Domain Name Space

DNS에서 계층화 된 이름을 관리하는 구조이다. Domain은 계층적 구조에서 차등적인 권한을 부여한다. 최상위 계층부터 하위 순서로 Root-level domain, Top-level domain, Second-level domain으로 분류된다.

각 Name space에서 사용하는 레이블들은 다음과 같다.

  • Root-Level Domains: null
  • Top-Level Domains: com, edu, org, net, gov, …
  • Second-Level Domains, Subdomain: microsoft, www.microsoft, dev.microsoft, naver, google, …

물리적 구성 요소 1: Resolver

DNS에서 클라이언트의 역할을 하는 애플리케이션 또는 장치이다. 주소를 요청하는 애플리케이션과 주소를 응답하는 Name server 사이에서 정보를 받아오는 역할을 한다. 단말의 Application layer에 구현되어있는 경우도 있고, 호스트 서버나 통신사 네임서버에 구현되어있는 경우도 있다.

물리적 구성 요소 2: Name server

DNS에서 서버의 역할을 하는 장치이다. Domain name space의 계층 구조에 대한 정보를 담고있으며, Name server 또한 속한 Domain에 따라 차등적인 권한을 부여받는다.

Root DNS Server

최상위 레벨 영역(Top-Level Domain)을 알고있는 서버이다. Top-Level Domain DNS Server의 주소를 저장하고 있으며, 전세계적으로 13개 만이 존재한다.

Top-Level Domain(TLD) DNS Server

com, edu, gov, net 등의 도메인 등록 기관이 관리하는 서버이다. 도메인 판매 업체의 DNS 설정이 변경되면 이곳으로 전달된다.

Second-Level Domain(SLD) DNS Server

실제 호스트 이름 - IP주소 쌍이 기록되는 서버이다. 일반적으로 개인 서버 혹은 호스팅 업체의 서버가 속한다.

Root Domain부터 Top-level domain 까지는 하위 계층으로의 위임을 통해 Domain 영역이 분할되고 관리되지만, 실제 IP가 기록되는 Second-level domain부턴 책임의 소지를 나눌 필요가 있기에, Zone이라는 영역으로 이를 분리하여 관리하고 있다.

개념적 구성 요소 2: Zone

하나의 Name server가 책임과 권한을 가지고 관리하는 영역Zone이라 부른다. 위임을 통해 관리 가능한 단위로 분할되는 Domain과는 다른 의미를 가진다.

사용자에게 도메인을 판매하는 판매자들이 도메인 관리를 위해 가지는 책임 영역을 Zone의 예시라 할 수 있다.

Name server는 하나 이상의 Zone에 대해 권한을 가질 수 있다. 권한을 가지는 Zone에 대한 모든 메타데이터를 담는 물리적 파일을 Zone File, Zone Data File, Zone Database라 부른다.

DNS의 동작 과정 - Name Resolution

Resolver와 DNS 서버 사이에서 전달되는 쿼리는 Recursive Query, Iterative Query, Inverse Query의 세가지이다.

Recursive Query

Client가 Resolver 또는 Name server에 질의할 수 있는 쿼리이다. 한번의 질의를 통해 IP주소, 검색 실패 등의 응답을 받아온다.

Iterative Query

Name server가 다른 Name server들에게 반복적으로 질의하는 쿼리이다. Name server에 이미 IP주소가 캐싱이 되어있는 경우 과정을 건너뛴다.

Recursive Query와 Iterative Query로 동작하는 Name Resolution

Recursive query와 Iterative 쿼리를 이용하여 클라이언트는 IP주소를 응답받을 수 있다. 일반적으로 다음과 같은 과정을 통해 Name resolution 과정이 이루어진다.

  1. Client에게 질의를 받은 Resolver가 가까운 DNS server(Local name server)에 **“www.naver.com”**의 IP주소가 무엇인지 Recursive query를 통해 질의한다.
  2. 질의를 받은 Local name server는 자신이 속한 Domain을 확인한 다음, 자신의 위치에서 찾지 못한다면 Root DNS serverIterative query를 통해 질의한다.
  3. Root DNS servercom에 대한 TLD DNS server의 IP주소를 응답한다.
  4. Local name serverTLD DNS server에 **“www.naver.com”**의 IP주소가 무엇인지 Iterative query를 통해 질의한다.
  5. TLD DNS servernaver.com을 서비스 하는 SLD DNS server의 IP주소를 응답한다.
  6. Local name serverSLD DNS server에 **“www.naver.com”**의 IP주소가 무엇인지 Iterative query를 통해 질의한다.
  7. SLD DNS serverwww.naver.com”의 IP주소를 응답한다.
  8. Local name serverResolver에게 www.naver.com”의 IP주소를 응답한다.

Inverse Query

역방향 질의로, IP 주소를 질의함으로써 대응하는 호스트 이름을 응답받는 쿼리다. 모든 네트워크를 완전탐색하며 네트워크가 마비되는것을 막기위해, in-addr.arpa라는 특수한 도메인을 사용한다.

 

 

 

 

참고 자료

http://www.ktword.co.kr/test/view/view.php?no=264

 

DNS

DNS   Domain Name Service, Domain Name System   도메인 네임 시스템(2021-08-19)

www.ktword.co.kr

https://hanamon.kr/dns란-도메인-네임-시스템-개념부터-작동-방식까지/

 

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

이 게시물의 중요 포인트 DNS(도메인 네임 시스템)이 사람이 읽을 수 있는 도메인 이름(www.hanamon.kr)을 IP 주소로 변환하는 시스템이라는 것은 쉽게 알 수 있습니다. 이번 글에서는 이렇게 도메인

hanamon.kr

http://www.de-fischer.de/test/hilfe_ueber/tcpip/dns/dns.htm

 

DNS

 

www.de-fischer.de

 

'Today I Learned > 개념 정리' 카테고리의 다른 글

ORM  (1) 2022.09.29
프로세스 동기화  (1) 2022.09.29
직관과 논리  (0) 2022.07.01
IP, Packet, Port  (0) 2022.06.28
DB Normalization  (0) 2022.06.14