Network

[Network] DNS

2juhyunju 2022. 8. 17. 13:44

DNS( Domain Name System )란

인터넷은 각각 IP주소를 갖고있다.  이 IP는 네트워크로 연결된 각 사이트를 구분할 수 있는 서로 다른 IP 주소를 갖어야 한다.

인터넷에 연결 되어 있는 다른 모든 사이트들과 인터넷으로 통신하려면 다른 사이트들의 IP주소를 알고 있어야 한다.

하지만 약 IP주소는 몇 십억개의 가까운 갯수이고 특정 사이트의 IP주소는 그 사이트와 별 연관성도 개연성도 없이 할당되어 있어 사이트들의 각 IP 주소를 기억하기는 사실상 불가능에 가깝다. 만약 IP주소를 기억하기 쉬운 이름으로 접근 할 수 있으면 좋지 않을까? 라고 생각해서 사용하게 된 것이 DNS이다. DNS는 각 사이트의 할당되어 있는 도메인 이름을 IP주소로 바꿔 주거나 그 반대의 변환을 수행 할 수 있게 해준다.


DNS 동작방식

기본 동작 방식

가장 기본적인 클라이언트와 DNS 서버의 동장박식이다. 만약 DNS 서버가 인터넷의 모든 호스트에 대한 IP 주소를 갖고있다면 이 처럼 동작 할 수 있다. 하지만 DNS 서버 한개가 인터넷의 모든 도메인 이름을 갖고 있는것은 불가능하다. 이 문제는 DNS 서버에 저장 공간 뿐만 아니라 수시로 생성되고 사라지는 DNS 정보를 일일이 갱신하는것이 힘들기 때문이다. 그래서 DNS 서버는 한대에서 모든 DNS 정보를 처리 하지 않고 계층적으로 이루어진 구조에서 단계별로 정보를 제공한다.


계층별 동작 방식

 

위에서 말했다시피 한대의 DNS 서버가 모든 정보를 가지고 있는것은 어려운일이다. 그래서 DNS 서버 여러대에 도메인 정보를 분산해서 저장하고 있다. DNS 요청을 중계하는 DNS 서버를 제외한 나머지 서버들은 지정된 계층에서만 DNS 응답 및 처리를 하고 있다.

순서를 요약 하자면 다음과 같다.

 

1. 클라이언트가 google.com 요청 

2. Local DNS 서버에 goolg.com 정보가 있다면 응답

3. 정보가 없다면 Root DNS 서버에 요청

4. Root 서버는 com으로 끝나는 정보를 갖고 있는 TLD 서버 IP 주소를 응답

5. TLD 서버는 나머지 도메인을 알고 있는 SLD 서버 주소를 응답

6. SLD 서버는  나머지 도메인 주소를 질의 후 Local 서버에 응답

7. 최종적으로 클라이언트에게 응답

 

* Root DNS : 순환 쿼리를 처리하기 위해 가장 높은 단게의 요청을 처리하는 DNS 서버

* TLD DNS : .com,.net.,.kr 등으로 끝나는 이름에 대한 정보를 가지고 있는 DNS 서버

* SLD DNS : 나머지 도메인 주소를 갖고있는 DNS 서버

 

 

DNS Query

여기서 알아야하는 부분이 DNS Query 라는것이 있다.  DNS Query는 클라이언트와 DNS 서버사이 에서 이루어지는 요청과 응답 방식이다. 이 요청과 응답 방식은 재귀 쿼리 (Recursive Query) 반복적 쿼리 (Iterative Query) 가 있다.

재귀 쿼리 (Recursive Query)

  • 클라이언트는 클라이언트가 요청한 DNS 서버에게만 요청을 전송하고 요청에 대한 응답을 수신
  • 요청을 하고 요청에 대한 정확한 응답을 수신하는 과정
  • 클라이언트가 DNS 서버에 요청할 때 발생
  • DNS 서버가 다시 다른 DNS 서버에게 요청 하는 경우에도 사용 이를 요청의 전달이라고 한다.

반복적 쿼리 (Iterative Query)

  • 로컬 DNS 서버가 클라이언트의 요청을 처리하기 위해 다른 DNS 서버로부터 계층별로 단계적으로 쿼리하는 과정
  • 로컬 DNS 서버는 이 반복적인 과정을 통해 정보를 순차적으로 수집 후 최종적으로 정확한 IP 주소를 알아낸다.

DNS 레코드

DNS 상에서 도메인에 관한 설정을 하기 위해 사용되는 일련의 문자들을 DNS 레코드라고 한다.

DNS 서버가 요청을 받았을 때 어떻게 처리할것인가에 대한 정보가 DNS 레코드에 담겨있고 그 요청 방법에 대한 다양한 유형이 있다.

레코드 종류 설명
A,AAAA 특정 호스트의 주소 ( IPv4,IPv6)
CNAME 별칭을 부여한 특정 도메인 주소
MX 메일 교환기에 대한 정보
NS 도메인 네임 서버 정보
PTR IP 주소에 대한 호스트 이름
SOA 도메인 시작 정보
TXT 다양한 정보를 포함할 수 있는 텍스트 문자열