Server/Network

[네트웍개론] Application Layer-DNS(The Domain Name System)

유쾌한고등어 2023. 4. 17. 16:00

DNS는 name server의 계층 구조 분산 데이터 베이스이다.

application-layer단 프로토콜이다.

DNS service에선 hostname을 IP주소로 변환해준다.

 

그렇다면 DNS서버는 어떻게 관리될까?앞서말했듯 DNS는 분산 계층 서비스이다.

centralize DNS는 single point of failure시 전체 서비스가 무너진다는 단점이 있다.

또한 트래픽량이 많고 거리가 먼사람은 느리다는 단점이 있다.

또한 결정적으로, scaleability가 불가능하다.

 

하지만 한쪽에서 모두 관리하므로 유지보수가 융이하다는 장점이 있다.

 

DNS 분산 구조는 다음과 같다.

클라이언트가  www.amazon.com IP를 원한다고 해보자.

클라이언트는 Root에서 .com 서버를 찾는다.

그 후 amazon.com DNS서버를 찾는다.

amazon.com에서 쿼리를 하여 www.amazon.com을  을 얻는다.

 

루트 노드 서버의 역할은 무엇일까.

이는 호스트 네임을 IP주소로번역한다.

Top-Level Domain(TLD) 서버는.com,.edu등의 모든 탑 레벨 서버를 유지 및 관리한다.

authoritative DNS servers는 조직이나 서비스 제공업체가 관리하는데,호스트이름에 대한 IP 맵핑을 제공한다.

 

또한 호스트가 DNS 쿼리를 만들면,쿼리는 Local DNS name server로 전송된다.

이는 proxy역할을 한다.또한 name-address 변환쌍 로컬 캐시를 가진다.

 

서버가 gain.cs.umass.edu의 IP주소를 원한다고 가정해보자.

iterated query의 경우는 다음과 같은 플로우로 흘러간다.

먼저 local DNS server에게 이 요청을 전달하고,

local서버는 root DNS server에 물어본다.

root가 모른다면 TLD 서버에 물어보고 그래도 모르면 authoritative에 물어본다.

이렇게하면 local DNS가 데이터를 가지고 있어 빠르게 받아볼 수있지만, 단점은,,local DNS server가 바쁘다...

 

recursitve query의 경우에는 local DNS서버에게 IP주소를 물어본다.

local이 모른다면 root에게물어보고,root도 모르면 TLD에 물어보고,그래도 모르면 authoritative에게 물어본다.

DNS name server는 캐시기능또한 존재한다.

요청이오면 캐시맵핑후 이 요청을 저장해둔다.

이는 일정시간이 지나면 사라진다.

이때 호스트의 IP주소가 업데이트되는경우에 캐시된 것은 최신이 아닐 수도 있다.

 

DNS레코드는 도메인에 연계된 IP주소,해당 도메인에 대한 요청의 처리방법에 대한 정보를 제공한다.

 

A 레코드는 도메인 주소를 갖고있는 레코드이다.IP주소를 value값으로 가진다.

CNAME레코드는 IP주소를제공하진않고, 하위도메인을 다른 도메인으로 전달한다.

NS레코드는 네임서버를 저장한다.

MX레코드는 이메일을 이메일서버로 전송한다.

 

DNS