DNS

youngwiki
Pinkgo (토론 | 기여)님의 2025년 3월 22일 (토) 12:05 판 (DNS Name Resolution)

상위 문서: DNS

개요

인터넷 host(호스트)는 기본적으로 IP 주소에 의해서 구분되는데, 이는 일반 사람들이 기억하기엔 쉽지 않다. 예를 들어서, NAVER, Google, YouTube등의 여러 호스트의 IP 주소를 외우고 이를 기반으로 사용하는 것은 쉽지 않다. 이러한 문제를 해결하기 위해서 사용되는 것이 hostname이다. 예를 들면, 다음과 같은 것이 있다.

  • www.naver.com
  • www.google.com
  • www.youtube.com

위와 같은 hostname은 사람이 기억하기에는 간편하지만, 실제로 해당 hostname은 해당 host server가 어디에 위치하는지에 대해서는 거의 알려주지 않는다. 이 때문에 client가 hostname을 기반으로 server에 접속하기 위해서는 해당 hostname에 대응되는 IP 주소를 알아내야만 한다. 이러한 작업을 수행하기 위해 존재하는 것이 Domain Name System(DNS) 프로토콜이다.

DNS의 구성

  • distributed database(분산형 데이터베이스): 여러 계층의 DNS server로 구성되어 있다.
  • application-layer protocol: host들이 분산형 데이터베이스에 query할 수 있도록 하는 프로토콜이다.

DNS services

DNS 프로토콜은 아래와 같은 여러 서비스를 제공한다.

  • hostname을 IP 주소로 변환한다.
  • host aliasing: 하나의 server에 여러 별칭을 붙일 수 있도록 한다.
    • 이를 통해 사용자에게 더욱 쉬운 이름을 제공할 수 있다.
    • 예를 들어, host123.internal.company.com라는 hostname 대신 www.company.com라는 별칭을 붙일 수 있다.
    • mail server에도 해당 개념이 제공되어, jy2004@sogang.ac.kr로 메일을 보내어도 실제 mail server인 mail.sogang.ac.kr로 연결된다.
  • Load distribution: 큰 웹사이트는 여러 서버(IP 주소)를 가지고 있는데, 같은 hostname을 사용하여도 여러 IP 주소에 연결하여 server에 걸리는 부하를 줄인다.

Hierarchical Database of DNS

Problem of centralized DNS

Centralized(중앙 집중형) DNS는 하나의 DNS server가 모든 host의 mapping 정보를 가지고 있고, 이에 전세계의 모든 client들이 query를 보내는 구조이다. 해당 설계는 매우 단순하지만, 문제가 많다.

  • Single point of failure: 단 하나의 DNS server가 공격받거나, 다운되면 DNS를 이용하는 Internet 전체가 작동하지 않게 된다.
  • Traffic volume: 수억개의 호스트에서 발생하는 모든 DNS query에 의한 traffic이 매우 커지고, 이를 모두 하나의 server가 처리해야 하므로 부하가 걸린다.
  • Distant database: 특정 지역에 DNS server가 있으며, 그 지역의 반대편에서는 RTT가 매우 커질 수 있다.
  • Maintenace(유지보수): 단일 DNS server가 전 세계 호스트의 mapping 정보를 보관해야 하므로 신규 호스트가 등록될 때 마다 자주 업데이트해야 한다.

이러한 문제를 해결하기 위해서 DNS는 애초에 distributed design(분산 구조)으로 설계되어 있다.

A Distributed, Hierarchical Database

대략적으로 DNS 서버는 다음의 세 가지 계층으로 나뉜다.

  1. Root DNS server
  2. Top-Level Domain DNS server(TLD)
  3. Athoritative name server
  • Local DNS server

Kind of DNS servers

Root DNS server

Root DNS server는 전 세계를 나눈 13개의 구역에 각각 하나씩 배치되어 있다.[1] Root DNS server는 client가 query한 hostname을 찾지 못한 local DNS server에 의해서 연결된다. 이때 root DNS server는 client에게 해당 hostname을 mapping할 수 있는 TLD server의 IP 주소를 제공한다.

TLD server

Hostname에는 .com, .org, .net, .edu, .gov, 그리고 국가 도메인(.uk, .fr, .jp 등) 등의 여러 도메인이 존재한다. 이때 TLD는 특정 도메인 그룹을 담당한다. TLD는 각 도메인 그룹에 속한 도메인 name의 정보를 가진 authoritative server의 IP 주소를 알려준다. 예를 들어, www.youtube.com에 접속하고자 할 때, .com TLD는 youtube.com에 대한 authoritative server의 IP 주소를 알려준다.

Authoritative server

보통 해당 도메인에 대한 organization이나 service provider가 직접 운영하는 DNS server이다. 이는 client가 요청하는 hostname에 대한 최종적인 IP 주소를 가지고 있다.

Local DNS server

Local DNS server는 DNS server의 계층 구조에는 포함되지 않지만 매우 중요한 역할을 수행한다. 이는 기본적으로 ISP들에 의해서 운영된다. host가 DNS query를 만들면 Local DNS server로 전송된다.[2] Local DNS server는 최근에 요청받은 name-to-address mapping에 대한 정보를 저장하는 cache의 역할을 하여 전송받은 query에 응답한다.[3] 즉, 웹 페이지에서의 proxy server역할을 한다고 볼 수 있다.

DNS Name Resolution

Interaction Of The Various DNS Server

DNS server가 name resolution을 하는 것은 다음 예시를 통해서 알아볼 수 있다.

  • cse.nyu.edu라는 host가 gaia.cs.umass.edu의 IP 주소를 알고 싶다고 가정하자.
  • cse.nyu.edu의 local DNS server는 dns.nyu.edu이다.
  • gaia.cs.umass.edu에 대한 authoritative DNS server는 dns.umass.edu라고 가정한다.
  1. Client는 먼저 local DNS server에 query를 보내서 gaia.cs.umass.edu에 대한 mapping 정보를 가지고 있는지 물어본다.
    • 만약 가지고 있다면, local DNS server는 gaia.cs.umass.edu에 대한 IP 주소를 client에 반환한다. 가지고 있지 않다면 밑의 과정을 따라간다.
  2. Local DNS server는 root DNS server에 query를 보내고 .edu 도메인을 담당하는 TLD 서버의 IP 주소를 받는다.
  3. Local DNS server는 TLD server에 query를 보내고 gaia.cs.umass.edu 도메인을 담당하는 authoritative DNS server의 IP 주소를 받는다.
  4. Local DNS server는 해당 athoritative name server에 query를 보내고 gaia.cs.umass.edu에 대한 최종 IP 주소를 받는다.
  5. Local DNS server는 gaia.cs.umass.edu의 IP 주소를 client에게 반환한다.


DNS Caching

Local DNS server는 어떤 namer server든지 mapping을 하면, 해당 mapping 정보를 cache에 저장한다. 따라서 보통 local DNS server는 TLD server를 cache에 자장한다. 따라서, root name server는 자주 request message를 받지 않는다.

이때, 저장된 cache entry들은 out-of-date될 수 있다. 이는 어떤 host의 IP 주소가 변경되어 저장된 cache entry들에 의한 접근이 불가능해질 수도 있다. 이때 저장된 cache entry들은 일정시간(TTL[4])이 지나면 만료되어 사라지므로, 어떤 host의 IP 주소가 변경되어 저장된 cache entry또한 TTL이 지나면 사라진다.[5]

각주

  1. 이를 백업하는 server 또한 약 400개 정도 배치되어 있다.
  2. Local DNS server의 IP 주소는 사용자가 네트워크에 연결되면 자동을 할당받는다.
  3. 해당 정보는 out of date되어 있을 수도 있다.
  4. Time-To_Live
  5. 만약 어떤 host의 IP 주소가 변경되면, 이 정보는 모든 TTL이 만료되기 전까지는 인터넷에 알려지지 않을 수 있다.