DNS에 대하여 알아보자

Devookim·2021년 2월 23일
1
post-thumbnail

DNS란?

Domain Name System의 약자로 IP주소를 외우기 어렵기 때문에 DNS를 이용하여 IP주소를 매핑해주어 복잡한 IP를 외우지 않아도 호스트에 접근할 수 있다.

과거에는 하나의 호스트 파일에 모든 주소와 이름을 저장하고 주기적으로 갱신했다. 모든 주소와 이름을 호스트파일에 저장을 하면 크기가 너무 커지고 전 세계의 모든 호스트파일에 변화가 있을 때 마다 갱신하는 것은 불가능하기 때문에 오늘날에는 여러대의 DNS서버를 이용하여 관리하고 있다.

Domain Name 구조

khweather.devookim.ga를 예시로 들어보자.

도메인의 마지막에는 .이 찍혀있는데 생략되어있다. 정확하게는 khweather.devookim.ga. 인 것 이다.
마지막 . 은 Root, ga는 Top-level, devookim은 Second-level, kheather은 sub로 나눌 수 있다.

도메인 이름 공간은 도메인 이름을 트리 형태로 구성한 것이다. 트리는 루트 존에서 시작하여 여러개의 하위 존으로 나뉜다. 각 DNS존은 하나의 권한 있는 네임 서버에 의해 관리되는 노드들의 집합이다.

khweather.devookim.ga에서
ga가 최상이 노드이고
devookimga 도메인의 서브도메인이며
khweatherdevookim.ga도메인의 서브도메인이다.

서브도메인은 127단계까지 가능하며 각 레이블은 최대 63개의 문자를 사용할 수 있고 전체 도메인 이름은 253자를 넘을 수 없다.

도메인 동작 원리

1) 클라이언트가 khweather.devookim.ga 에 접속하려고 할 때 맨 처음 로컬 NS로 요청을 보낸다. 로컬 네임서버는 루트 서버의 주소를 알고 있기 때문에 루트서버에 요청을 보낸다.

2) 루트서버는 최상위 도메인 서버에 khweather.devookim.ga 를 참조하라고 요청을 보낸다. 그러면 ga 네임서버가 응답을 할 것이고 ga 네임서버의 주소를 로컬 네임서버에 응답한다.

3) 로컬 네임서버는 ga 네임서버에 khweather.devookim.ga 를 참조하라고 요청보내고 devookim 네임서버가 응답을 한다. 그러면 ga 네임서버는 devookim 네임서버의 주소를 로컬 네임서버에 응답한다.

4) 로컬 네임서버는 결국 khweather 네임서버의 주소를 알게 되었고 khweather.devookim.ga 를 참조하라고 요청을 보낸다. khweather 네임서버는 IP주소를 알고있기 때문에 로컬네임서버에 IP주소를 응답한다.

5) IP주소를 응답받은 로컬 네임서버는 클라이언트에게 IP주소를 응답한다.


각 서버에는 도메인네임 혹은 서버주소와 도메인타입을 통해 권한을 판별한다.
예를 들어 Top-level domain서버 에서는 dns4u.ga에 대한 요청을 ns01.freenom.com주소로 응답하고 있고 authoritative name serverdns4u.ga에 대한 요청을 52.231.13.22주소로 응답하고 있다.

resolution

이런 과정을 이름-주소 해석(name - address resolution)이라고 하는데 두가지 방식이 있다.

  1. 반복적 해석(iterative)
    위 예시처럼 네임서버에 들어온 요청에 대해 IP주소가 존재하면 IP주소를 응답하고 그렇지 않으면 다른 네임서버의 주소를 응답하며 반복 해석한다.

  2. 재귀적 해석(recursive)
    서버가 요청에 대한 권한이 없다면 다른 네임서버에 쿼리를 전달하면서 반복 해석한다.

도메인 타입

  • A
    도메인을 ip로 가르키게 하는 것

  • CNAME
    도메인을 다른 도메인으로 가르키게 하는 것


참고 - 생활코딩
참고 - MS document
참고 - AWS
참고 - 교재

profile
I am Woo

0개의 댓글