DNS
youngwiki
상위 문서: 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