Skip to content

Dev

DNS

Network1 min read

이 글은 성공과 실패를 결정하는 1%의 네트워크 원리 책을 읽고 정리한 글이다. 여기서 dns 리졸버, socket라이브러리에 관한 내용은 생략한 채로 내용을 정리하였다.

DNS 사용 이유

HTTP 통신을 하기 위해선 상대방의 IP주소를 알아야만 네트워크 통신이 가능하다. 마치 휴대폰으로 상대방의 전화번호를 알아야 통화를 할 수있는 것처럼, 인터넷 세계에서도 상대방의 IP주소를 알아야만 네트워크 요청이 가능하다.

하지만, 우리는 일반적으로 숫자로 구성되어있는 IP주소가 아닌 문자로 구성된 도메인 주소를 입력하여 네트워크 요청을 보낸다.

Search

휴대폰 전화번호에 따른 별칭처럼 도메인 주소도 IP주소와 함께 키-밸류 쌍으로 매칭되어 있어 www.google.com을 검색하면 이에 매칭된 IP주소를 찾아 OS에 해당 IP주소로 네트워크 요청을 보내도록 되어있다.

일반적으로, DNS가 도메인 서버명에 따른 IP주소를 매칭하기 위하여 사용하지만, 메일주소와 메일서버를 매칭하기 위하여 DNS에 등록하여 사용할 수도 있다.

DNS 조회 메세지 구성

IP주소를 찾는 과정은 우선은 가장 까까운 DNS 서버에 조회 요청을 하는 것으로부터 시작된다. 여기서 DNS 서버에 요청 메세지의 구성요소를 살펴보겠다.

1) 이름
서버나 메일 배송 목적지와 같은 이름

2) 클래스
DNS 구조를 고안 했을 때 인터넷 이외에도 네트워크에서의 다른 이용목적까지 검토하여 클래스 정보를 만들었지만, 현재는 인터넷만 사용되어 IN 이라는 값만 있다.

3) 타입
타입에 따라 클라이언트에 응답하는 내용이 달라진다. ex) A : IP주소, MX : 메일 배송 목적지 기타 등등..

이름클래스타입return
www.example.comINAAAA192.0.0.111
www.exam.co.krINAAAA201.0.0.123
mail.comINMX10 example.co.kr

이렇게 이름,클래스,타입 세 가지의 조회메세지를 구성하고 DNS 서버로부터 조회 요청을 하면, 메세지 구성에 따른 return값에 있는 IP주소를 응답하여 넘겨준다.

DNS 서버에서 IP주소 탐사 과정

DNS 서버는 단일 서버로 구성되어 있는게 아니라 세계 곳곳에 여러 서버가 연대하여 IP주소를 탐색해 나아가 응답을 받는다. 운영체제별로 다르게 구성되어있지만, 기본적으로 설정된 DNS 서버의 IP주소가 설정되어 있다. 이 설정된 DNS IP 주소를 시작으로 요청한 도메인에 대한 IP 주소가 탐색되어진다. (Window기준으로 터미널 창에서 nslookup으로 조회하면 도메인 ip주소가 확인 가능하다)

www.google.com에 대한 전체적인 dns 탐사과정을 살펴보겠다.

DNSEXPLORE

www.google.com 도메인 주소의 IP주소에 대한 질의를 시작으로 .(점)으로 도메인 계층 서버가 연대하여 최종 IP주소를 응답하여 클라이언트에게 넘기면 해당 IP주소로 엑세스가 가능해진다.

위의 그림은 기본 동작을 나타낸 것이다. 한 대의 DNS서버에 복수의 도메인 정보가 등록되어 있을 수도 있어 한 대의 DNS 서버가 존재한다고 단정하긴 어렵다.

또한, DNS는 캐시기능을 제공하여 DNS 서버로부터 요청하기전에 캐시 데이터베이스에서 확인 후 바로 응답값을 줄 수도 있다.

Window 커맨드 기준으로 ipconfig /displaydns를 검색해보면 캐시된 데이터를 확인 할 수 있다.

[Refference]

  • 성공과 실패를 결정하는 1%의 네트워크 원리