본문 바로가기
💻 네트워크 𝗡𝗲𝘁𝘄𝗼𝗿𝗸

DNS란? 도메인과 URL의 차이, URL의 구조, 도메인의 계층 관계, DNS 동작 방식

by 비타민찌 2021. 7. 21.
728x90

DNS란?

도메인과 URL의 차이, URL의 구조, 도메인의 계층 관계, DNS 동작 방식

 

 

DNS가 뭔가요?

🔄 DNS 란?

DNS 또는 Domain Name System은,

사람이 읽을 수 있는 '도메인 ' 이름(예: www.amazon.com)을 컴퓨터 같은 기계가 읽을 수 있는 IP 주소(예: 192.0.2.44)로 변환하는 것 입니다.

 

도메인을 이해하기 위해서 전화기를 생각해 봅시다. 전화를 걸 때 필요한 정보는 전화번호 입니다.

그런데 친구들의 전화번호를 모두 기억하는 것은 힘들거나 불가능한 일이라,

전화기에는 친구의 이름과 그에 해당하는 전화번호를 저장해두죠.

그래서 친구이름 '토찌'를 입력하고 전화를 걸면, 전화기는 그 친구의 이름에 해당하는 전화번호를 찾아서 자동으로 전화를 걸어 줍니다.

 

도메인도 똑같습니다. 컴퓨터는 naver.com과 같은 도메인을 이해하지 못합니다.

대신 220.95.233.171과 같은 형식의 ip가 있어야 이에 해당하는 컴퓨터를 찾을 수 있습니다.

전화기로치면 친구의 이름이 도메인인 naver.com에 해당하고, 친구의 전화번호가 ip인 220.95.233.171에 해당합니다.

브라우저의 주소창에 220.95.233.171을 입력해보자. naver.com를 입력한 것과 같이 네이버의 홈페이지가 열릴 것 입니다.

 

이렇게 DNS 서비스는 전 세계에 배포된 서비스로서, www.minji.com과 같이 사람이 읽을 수 있는 이름을

192.0.2.1과 같은 숫자 IP 주소로 변환하여 컴퓨터가 서로 통신할 수 있도록 합니다.

 

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

 

DNS = 도메인 🔗 IP주소

 

🔃 도메인

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

 

'도메인'에 대해 조금 더 자세히 알아보자면, 도메인이란 인터넷 상에서의 주소인 'URL'의 일부로

외우기 힘든 IP 주소를(192.168.- 12자리 숫자를 외우는 것은 힘들어요..)

minji.com 처럼 기억하기 쉽게 만들어주는 전화번호부, '네트워크 호스트 이름'을 의미합니다.

 

그럼 www.naver.com 은 URL 일까요? 도메인 일까요?

 

 

도메인  URL

 

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

 

📡 URL과 도메인의 차이

URL은 도메인을 포함한 경로 입니다. (프로토콜 + 도메인)

한 예시로 test 폴더에 test.png라는 파일을 링크걸었다면

http://도메인/test/test.png/

위의 경로가 URL이 되고,

여기에 도메인이 포함되어 있는 식 입니다.

 

 

🗂 URL의 구조 : Uniform Resource Locator

서브도메인 이란?

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

도메인의 구성을 자세히 살펴봅시다. 예를들어, 도메인 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를 가리키고 있습니다.

 

naver.com
book.naver.com
movie.naver.com

 

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

 

 

🚪 도메인의 계층 관계

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

그리고 naver는 서브 도메인들을 포괄하는 상위 도메인으로 사용되고 있고,

.com은 최상위 도메인으로 영리 목적의 기업이나 단체나 서비스라는 점을 의미합니다.

그리고 최상위 도메인의 상위 도메인인 루트 도메인은

모든 도메인들의 뿌리이기 때문에 .com 이나 .net 과 같은 도메인 이름이 없고 그냥 . 으로 표시됩니다.

 

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

 

그런 이유로 도메인을 표기할 때 일반적으로 생략되긴 합니다!

리눅스를 아는 사람이라면

루트 도메인 '.' 에 '.com' 이라는 디렉토리가 있고,

'.com'안에는 '.naver' 라는 디렉토리가 있고,

'.naver'안에는 다시 www, book, movie가 있는 것 입니다. 이 관계를 그림으로 나타내면 아래와 같습니다.

 

 

 

  DNS 동작 방식

이제 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 주소를 알려줍니다.

 

직접 네이버 DNS 서버가 네이버 웹서버의 IP주소를 알려줌.

 

 

하지만 IP 주소를 모르면 루트 도메인 네임서버에게 문의합니다.

구글 DNS서버는 네이버 웹서버의 IP를 모르기 때문에 다른 dns 서버에게 물어봐서,

권한없는 응답으로 네이버의 웹서버 IP를 알려준다. 아래가 이 과정을 자세히 설명합니다.

 

(3) 루트 네임서버(.)는 도메인의 최상위 도메인이 .com인 것을 보고,

루트 네임서버에 등록된 .com 네임서버의 IP를 전달합니다.

 

나는 네이버 웹서버 IP 주소는 가지고 있지 않지만,
내가 가지고 있는 .com 네임서버에게 물어보면 도와줄꺼야.

 

 

(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://blog.naver.com/ghdalswl77/222331240558

https://www.opentutorials.org/module/288/2802

728x90

댓글