DNS

·2023년 5월 3일
0

DNS

DNS or Domain Name System
사람이 읽을 수 있는 '도메인' 이름을 컴퓨터 같은 기계가 읽을 수 있는 IP 주소로 변환하는 것

ex) www.amazon.com -> 192.0.2.44

도메인 이해하기 위해 전화기를 예로 들자면
전화를 걸 때 필요한 정보는 전화번호다.
하지만 친구 전화번호 모두 기억 하는건 힘들고 불가능해
전화기에 친구 이름과 전화번호를 저장하고
철수에게 전화하면 전화기는 친구 이름에 해당하는 번호 찾아 전화 걸어준다.

도메인도 이와 같다.
컴퓨터는 naver.com 같은 도메인 이해 못하지만
220.95.233.171 같은 형식 ip 있어야 이에 해당하는 컴퓨터 찾을 수 있다.

DNS 서비스는 전 세계에 배포된 서비스로서 사람이 읽을 수 있는 이름을
숫자 IP 주소로 변환해 컴퓨터 서로 통신할 수 있게 한다.

DNS 서버는 이름에 대한 요청을 IP 주소로 변환해 최종 사용자가
도메인 이름을 웹 브라우저에 입력할 때 해당 사용자를 어떤 서버에 연결할 것인지를 제어하고 이를 '쿼리' 라고 부른다.

DNS = 도메인 & IP

도메인

인터넷 상에서의 주소, URL의 일부

'도메인'에 대해 조금 더 자세히 알아보면, 도메인이란 인터넷 상에서 주소인 'URL'의 일부로
외우기 힘든 IP 주소를 naver.com 처럼 기억하기 쉽게 만들어주는 '네트워크 호스트 이름'을 의미한다.

                                        도메인 ⊂ URL

                                  <URL에 포함 되어있는 도메인>

URL과 도메인의 차이

URL은 도메인을 포함한 경로이다. (프로토콜 + 도메인)
예를 들면 test 폴더에 test.png 파일 링크를 걸면
http://도메인/test/test.png/
위의 경로가 URL이 되고
도메인이 포함되어 있는 식이다.

URL의 구조

Uniform Resource Locator

서브도메인이란?

도메인 naver.com은 네이버의 서버를 가리킨다.
만약 네이버 내부 구성원들간에 커뮤를 위해 게시판 운영하고
naver.com 과는 다른 서버를 사용해야 한다면, 도메인을 새로 구입해야 할까?

DNS 서버에 bbs.naver.com에 대한 IP를 등록하면 naver.com과 bbs.naver.com이 가리키는 IP를 서로 다르게 설정해
각각의 도메인이 서로 다른 서버를 가리키게 할 수 있다. 이런 것을 서브 도메인이라고 한다.

서브 도메인을 이용하면 하나의 도메인이 여러개의 IP를 가리키게 할 수 있어서 도메인 구입 비용을 절약할 수 있는 장점이 있다.

www.naver.com , book.naver.com , movie.naver.com

모두 똑같은 naver.com 도메인 사용하면서도 각각 다른 컴퓨터의 IP를 가리키고 있다.

여러 도메인이 하나의 IP를 가리키도록하고, 도메인의 이름에 따라 서로 다른 디렉토리의 파일들이 서비스 되도록 할 수 있는데, 이런 방식을 가상호스트 (virtual host)라고 한다.

도메인의 계층 관계

위에서 www, book, movie를 서브 도메인이라고 부르고,
서버를 식별하기 위해 사용했다.

그리고 naver는 서브 도메인들을 포괄하는 상위 도메인으로 사용되고 있고
.com은 최상위 도메인으로 영리 목적의 기업이나 단체나 서비스라는 점을 의미한다.

최상위 도메인의 상위 도메인인 루트 도메인은
모든 도메인들의 뿌리이기 때문에 .com .net 과 같은 도메인 이름이 없고
그냥 . 으로 표시된다.

실제로 .naver.com이라고 쳐도 네이버와 연결된다.

이런 이유로 도메인을 표기할 때 일반적으로 생략되긴 한다.
리눅스를 안다면
루트 도메인 '.'에 '.com' 이라는 디렉토리가 있고
'.com' 안에는 '.naver' 라는 디렉토리 있고
'.naver' 안에 다시 www, book, movie가 있는 것이다.

DNS 동작 방식

DNS 서버 어떻게 동작하는지 알아보자
이렇게 전세계에는 수만대의 DNS 서버가 있다.

루트 DNS 서버 (전 세계에 13개: A~M 까지),
최상위 DNS 서버 (com, org, net, kr 등 모든 국가의 상위 레벨 서버),
책임 DNS 서버 (인터넷 통해 서비스 제공하는 모든 기관이 가지는 서버)로 나누어지고, 추가로 로컬 DNS 서버(사용자에게 직접적으로 도메인에 대한 질의를 받고 그에 대한 응답을 해주는 서버)

한대의 DNS 서버가 모든 도메인에 대한 정보를 가지고 있는 것은 어려운 일이다.
그래서 인터넷에서는 도메인 정보를 분산해서 저장하고 있다.
예를들어 naver.com의 IP 주소를 조회한다고 해보면, 이 도메인에서 가장 상위에 있는 도메인은 루트 도메인이다.

루트 도메인은 전 세계에 13개가 존재하고, 이 도메인의 IP는 잘 변경되지 않기 때문에 모든 DNS 서버는 루트 도메인을 알고 있다. 여기가 바로 출발점이다.

클라이언트는 브라우저가 설치된 컴퓨터다. 이 그림의 번호 순서대로 가보자면
우선 사용자가 URL을 주소창에 www.naver.com 입력하고 엔터를 치면

1) 브라우저가 설치된 컴퓨터는 www.naver.com의 IP 알아내기 위해 가장 가까운 곳에 위치한 DNS에 www.naver.com IP를 문의한다.

2) 가장 가까운 DNS 서버가 IP를 알고 있다면 직접 IP 주소 알려준다.

하지만 IP 주소 모르면 루트 도메인 네임서버에게 문의한다.
구글 DNS 서버는 네이버 웹서버의 IP 모르기 때문에 다른 DNS 서버에게 물어봐서, 권한이 없는 응답으로 네이버의 웹서버 IP를 알려준다.

3) 루트 네임서버(.)는 도메인의 최상위 도메인이 .com인 것을 보고,
루트 네임서버에 등록된 .com 네임서버의 IP를 전달한다.

4) 가장 가까운 DNS는 .com 도메인을 관리하는 네임서버에게 문의한다.
5) .com 네임서버는 .naver.com의 네임서버 IP 주소를 알려준다.
6) 가장 가까운 DNS 서버는 .naver.com의 네임서버에게 네이버의 웹서버인 www.의 IP를 문의한다.
7) naver의 네임 서버는 www.naver.com의 IP를 알려준다.
8) 최종적으로 가장 가까운 DNS 서버는 네이버의 네임 서버에게서 알아온 www.naver.com의 IP 주소를 클라이언트에게 알려준다.
9) 클라이언트는 해당 IP 주소에 특정 파일을 요청한다 (HTML 등...)
10) 클라이언트가 요청한 파일을 클라이언트에게 보여준다.

'가장 가까운 DNS 서버'의 의미

가장 가까운 DNS 서버의 의미는 클라이언트에 기본적으로 등록되어 있는 DNS 서버를 의미한다.
클라이언트는 최소 한개 이상의 DNS 서버가 등록되어 있어야 이 DNS 서버를 이용해서 접속하고자 하는 도메인에 대한 IP를 알아낼 수 있다.
기본 DNS라고도 하는데 이 정보는 인터넷에 연결하면 인터넷 서비스 제공자에 의해서 자동으로 설정된다. (KT, SK 등..)

출처
https://sudo-minz.tistory.com/13
https://javaiyagi.tistory.com/252

0개의 댓글