본문 바로가기
CS/네트워크

[네트워크] 응용 계층 Application Layer : DNS

by DenverAlmighty 2024. 12. 11.

1.  DNS (Domain Name System) 서비스

호스트명과 IP를 매핑해주는 서비스이다.

추가적으로, 호스트 aliasing, 메일 서버, 로드 분배(한 도메인에 여러 웹서버 IP로 분산) 기능을한다.

분산 데이터베이스를 사용해서 매핑 정보를 저장한다.

 

* DNS를 중앙 집중식으로하지 않는 이유는 무엇일까?

중앙 집중화를 하게되면,

장애 발생 시 많은 서비스가 동작하지 못한다. 

또한, 한 곳으로 모이면 트래픽 양이 너무 커진다. 

그리고 중앙 집중식 데이터베이스까지 왔다갔다하는데 많은 네트워크를 거쳐야한다.

유지 관리에도 어려움이 많아진다.

 

2. DNS 구조

1) 분산, 계층구조 데이터베이스

 

DNS 서버는 아래 3단계의 계층 구조로 이루어져있다.

  • Root DNS Server 
  • TLD (Top Level DNS) : 기관/국가별 도메인 서버
  • Authoritative DNS Server : 회사, 기관 별 DNS 서버

(1) Root DNS Server

네임 서버 계층의 최상위 계층이다.

local name server가 매핑 정보를 가지지 않은 경우 contact된다. 

 

 

(2) Top-Level Domain(TLD) Server

top-level 도메인과 top-level 국가 도메인을 말한다.

top-level 도메인은 .com, .net, .edu,  등이 있고, top-level 국가 도메인은 .kr, .uk, .fr, .jp 등이 있다.

도메인에 해당하는 Authoritative Server애 대한 정보를 가지고있다.

.com은 Network Solutions 라는 기관에서 관리한다.

.kr은 한국인터넷정보센터에서 TLD 서버를 관리한다.

 

(3) Authoritative DNS Server

authoritative DNS 서버는 조직 자체 DNS 서버를 말한다.

조직내 host 정보를 가지고있다. 조직이나 서비스 제공자가에 의해 관리된다.

 

 

(+) Local DNS 네임 서버 

default name server, proxy name server라고 도 불린다.

Local DNS 서버는 위의 계층 구조에 포함되지 않는다.

각 ISP(Regidential ISP, 회사, 기관)이 DNS서버를 설치하는 경우이다.

호스트가 DNS 쿼리를 만들면, 쿼리는 Local DNS 서버에 보내진다.

Local DNS 서버는 이름-주소 변환 쌍 캐시를 가지고있으면 변환 주솔르 알려주고, 가지고있지 않으면 프록시처럼 동작해 DNS 서버(root name server)로 보낸다.

 

 

3.  DNS 동작 방식

1) DNS 동작 방식

Local DNS 서버는 해당 주소에 대한 캐시를 가지고있지 않으면

해당 주소를 어떤 Authoritative DNS Server가 아는지 모르기 때문에  Root DNS 서버에게 연락한다.

Root DNS 서버가 답을 주는 방식이 2가지가있다.

하위 DNS서버를 알려주는 반복(iterated) 쿼리 방식과, 하위 DNS서버에게 물어봐서 답을 찾아다주는 재귀(recursive) 쿼리 방식이있다.

(1) 반복(iterated) 쿼리 방식

질문받은 서버는 local DNS 서버에게 "나는 모르는데 얘한테 물어봐하고" 아래 단계 DNS 서버 주소를 알려준다. 

DNS 동작 방식 : 반복 쿼리

 

 

(2) 재귀(recursive) 쿼리 방식

DNS 동작 방식 : 재귀 쿼리

재귀 쿼리 방식을 사용하는 경우, 상위 계층일수록 부하가 커진다. 

 

 

2) 캐싱 / 업데이트

로컬 네임 서버는 일반적으로 TLD서버를 캐싱한다. 그래야 루트 네임 서버를 자주 방문하지 않게된다. 

매핑 후 네임 서버는 매핑 정보를 캐싱 시간(TTL. Time To Leave) 정보와 함께 캐싱한다.

캐시 항목 시간(TTL) 초과 후 삭제된다. 

 

캐시된 항목이 오래되었을 수 있는데(out-of-date)

호스트가 IP 주소를 변경하면, 모든 TTL들이 만료될 때까지 알려지지 않을 수 있다.

IP 주소 변경 시 업데이트/알림 매커니즘은 IETF 표준에 제안되어있다.

 

(1) DNS recodeds

각 DNS 서버에 각각 아래 종류의 RR이 저장된다.

  • Root : 각 도메인의 TLD 서버
  • TLD : 각 조직의 authoritative 서버
  • Authoritative : 호스트명과 IP 주소 맵핑

 

RR format : (name, value, type, ttl)

  • type=A
    • name : 호스트명
    • value :  IP 주소
  • type=NS
    • name : 도메인
    • value  : authoritative 네임 서버의 호스트명
  • type=CNAME
    • name : alias명,
    • value : 실제 호스트명
  • type=MS
    • value : 메일 서버명

 

 

 

4. DNS에 동작 예시

5. root DNS 서버에 쿼리 보내야하나 캐싱하기 때문에 Root DNS 서버 거치지 않고 .kr TLD 서버에게 전송

 

 

1) DNS 레코드 등록 과정

  1. 새 회사 설립 (Blueberry)
  2. authoritative server에 아래 등록
    1. 웹 서버의 type A 레코드 등록 (www.blueberry.kr)
    2. 메일 서버의 type MX, A 레코드등록 (blueberry.kr)
  3. DNS 등록 기관에 이름 등록 (blueberry.kr). (이름, Authoritative 네임 서버의 IP주소) 제공
  4. .kr TLD서버에 2 RR 등록
    1. (blueberry.kr, dns1.blueberry.kr, NS)
    2. (dns1.blueberry.kr, 212.212.212.1, A) 

 

 

2) 등록한 레코드 방문하기

  1. 사용자 호스트가 DNS 쿼리를 LDNS에게 보낸다.
  2. LDNS가 .kr TLD서버에 연락한다.
  3. .kr TLD서버는 Bluberry의 authoritative server NS와 A 타입  RR을 포함하고있다  .kr TLD 서버에 등록했기 때문이다.
  4. .kr TLD 서버는 Bluberry의 authoritative server NS와 A 타입  RR을 포함하는 DNS 응답을 사용자 LDNS에게 보낸다.
  5. 사용자의 LDNS가 www.blueberry.kr  웹서버의 IP 주소를 묻는 DNS 쿼리를  212.212.212.1(authoritative server) 에게  보낸다.
  6. Bueberry의 Authoritative DNS가 212.212.212.4(www.blueberry.kr 의 IP 주소)를 포함한 DNS 응답을 호스트의 LDNS에게 보낸다.  
  7. 사용자의 LDNS가 212.212.212.4(www.blueberry.kr의 IP 주소)를 사용자 호스트에게 보낸다.
  8. 이제 사용자의 브라우저가 212.212.212.4에게 TCP 연결을 초기화하고, HTTP 요청을 전송할 수 있다.