DNS는 분산되어 세계 곳곳에 존재하며 계층 구조를 가지고 있어 다음과 같은 이점을 제공한다.
- 트래픽 분산: DNS 서버가 분산되어 있기 때문에 트래픽이 골고루 분산되어 서비스를 안정적으로 제공할 수 있다.
- 고장 대처: 여러 DNS 서버가 존재하므로 특정 서버의 고장 시 다른 서버로 자동으로 트래픽을 전환하여 서비스의 영속성을 유지할 수 있다.
- 유지보수: DNS는 중앙 집중적으로 도메인 이름과 IP 주소의 매핑 정보를 관리하고 분산된 방식으로 업데이트하거나 변경할 수 있다.
- 성능 향상: DNS는 지역에 따라 가장 가까운 서버의 IP 주소를 반환하여 사용자가 빠르게 서비스를 받을 수 있도록 도움을 주어 성능을 향상시킬 수 있다.
→ 물리적 거리 뿐만아니라, 네트워크 성능을 고려하여 사용자가 최적의 서버에 연결할 수 있도록 도와준다.
계층 구조
- 사용자가 도메인 이름을 입력하면, Local DNS Name Server에게 도메인에 대한 IP 주소를 찾아달라는 요청을 보낸다.
- Local DNS name server : 사용자가 도메인 이름을 입력하면 해당 도메인에 대한 IP 주소를 찾기 위해 가장 먼저 찾는 DNS 서버이며, 자주 호출되는 DNS name에 대해서 캐싱을 한다.
- 만약 로컬 DNS 네임 서버에 도메인에 대한 정보가 없다면, 해당 DNS 서버는 Root DNS Server에게 쿼리를 전송한다.
- Root DNS Server: 계층 구조의 최상위에 위치하며, 모든 도메인에 대한 정보를 갖고 있지는 않지만, TLD에 대한 DNS 서버 정보를 가지고 있다
- Top-Level Domain (TLD): 최상위 도메인을 관리하고 해당 도메인 아래에 있는 도메인의 DNS 정보를 저장하고 제공하는 역할
→ 도메인 네임은 계층 구조로 표현되고 뒤쪽에 위치할수록 상위 계층에 해당하는 도메인이다.
→ 국가 코드 최상위 도메인(ccTLD)와 일반 최상위 도메인(gTLD)- 루트 DNS 서버는 TLD에 대한 정보를 로컬 DNS 네임 서버에게 제공한다.
- 로컬 DNS 네임 서버는 이제 TLD DNS 서버로 쿼리를 전송하고, TLD DNS 서버는 해당 도메인의 DNS 서버 정보를 제공한다.
- 로컬 DNS 네임 서버는 해당 도메인의 DNS 서버에 질의를 보내고, 도메인 이름에 해당하는 IP 주소를 받아옴으로써 도메인 네임에 해당하는 IP 주소를 사용자에게 반환해준다.
예시
- 로컬 DNS 네임 서버로부터 Root DNS Server정보를 받아온다.
- 루트 DNS 서버에게 질의를 하고 TLD에 대한 DNS 서버 정보를 가져온다.
→ .com- com DNS의 DNS Server는 갖고 있는 도메인 중에서 yahoo.com에 대한 DNS Server를 제공한다.
- yahoo.com의 DNS Server는 해당하는 도메인에 대한 IP주소를 제공한다.
DNS name resolution: DNS 서버를 여러 개 거치면서 주소를 알아내는 과정
- Iterated query: Contacted server가 다음으로 Contact 해야하는 서버 정보를 제공해주는 방식
→ Local DNS name server가 IP 주소를 찾기 위해 root DNS server에게 요청을 보내면 root DNS server는 TLD DNS server 정보를 제공해준다.
- Recursive query: Contacted server로부터 계속적인 재귀 요청을 통해 Authoritative DNS server로부터 IP 주소를 가져와서 Local DNS name server에게 전달해주는 방식
→ 상위 계층 DNS 서버에 상대적으로 큰 부하를 줄 수 있다.
→ Authoritative DNS server: 정확한 도메인 주소에 해당하는 IP 주소를 관리하는 server
DNS Caching: Local DNS name server는 자주 사용되는 DNS 정보를 캐싱하여 저장한다.
→ TLD서버와 같이 빈번하게 사용되는 정보는 local DNS name server에 캐싱함으로써 요청되는 정보를 빠르게 제공할 수 있다.
→ Time-to-Live(TTL) 값에 따라 일정 기간 동안 유지되며, TTL이 만료되면 정보가 삭제된다.
DNS protocol messages format: 질의문과 응답문에서 동일한 format을 사용한다.
- Identification: 메시지를 고유하게 식별하는 역할
- Flags
- 메시지가 질의인지 응답인지를 나타내는 플래그
- 재귀적인 탐색을 지원하는지 여부를 나타내는 플래그
- 클라이언트가 재귀적인 탐색을 요청하는지 여부를 나타내는 플래그
- 응답 서버의 권한 레벨을 나타내는 플래그
- questions: 도메인 이름과 DNS record를 포함한 DNS query
- DNS record: 도메인과 연관된 IP 주소 및 기타 정보
→ A 레코드 (Address Record): IPv4 주소를 알고 있을 때 사용되며, 도메인 이름을 직접 IPv4 주소로 매핑
→ NS 레코드 (Name Server Record): 도메인이 어떤 네임 서버에서 호스팅되는지를 지정
→ MX 레코드 (Mail Exchange Record): 해당 도메인에 대한 메일 서버를 설정
→ CNAME 레코드 (Canonical Name Record): 별칭을 사용하여 도메인 이름을 다른 도메인 이름으로 리디렉션- answers: 질의에 대한 응답으로 해당 도메인에 대한 IP 주소 등의 정보
- Authority: 쿼리에 대한 권한 정보
- additional: 기타 정보
DNS registrar: 도메인 이름 등록을 관리하고 제어하는 공인된 조직 또는 사업체로, 도메인 이름을 사용하려면 DNS registrar을 통해 해당 도메인을 등록해야한다.