[로드맵 따라하기] DNS (Domain Name System)

Yumin Jung·2022년 12월 30일
1
post-thumbnail

DNS and how it works?

도메인이란?

웹 브라우저를 통해 특정 사이트에 진입을 할 때, IP 주소를 대신하여 사용하는 주소

도메인을 이용해서 한눈에 파악하기 힘든 IP주소를 보다 분명하게 나타낸다.
만약 IP주소가 지번 또는 도로명 주소라면, 도메인 이름은 (www.naver.com) 같은 해당 주소에 위치한 상호이다. (대명루첸아파트, 맘스터치, 학사반점 등)

DNS(Domain Name System)이란?

도메인 이름을 사용했을 때 입력한 도메인을 실제 네트워크상에서 사용하는 IP주소로 바꾸고 해당 IP 주소로 접속하는 과정이 필요. 이러한 전체 시스템을 의미

전세계적으로 약속된 규칙을 공유한다.
상위 기관에서 인증된 기관에게 도메인을 생성하거나 IP 주소로 변경할 수 있는 '권한'을 부여한다.
상위 기관과 하위 기관과 같은 '계층 구조'를 가지는 분산 데이터베이스 구조를 가진다.

DNS의 간단한 동작 원리

DNS가 어떻게 돌아가는지 간단하게 예를 들어보겠다.
1. 한 사람이 브라우저에서 naver.com을 검색했다.
2. 먼저 DNS 서버로 도메인 주소가 전달이 된다.
3. 서버 내부에서 도메인 주소를 토대로 "naver.com=13.343.434.434"라는 항목을 찾아낸다.
4. 브라우저에게 13.343.434.434의 IP주소를 가지고 있는 호스팅 서버로 가라고 지시한다.
5. 브라우저가 다시 IP주소로 접속한다.
6. 웹사이트 나타난다.

DNS의 계층구조

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

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

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

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

'.naver'안에는 다시 www, book, movie가 있는 것이다.

한대의 DNS 서버가 모든 도메인에 대한 정보를 가지고 있는 것을 어려운 일이다.

그래서 인터넷에서는 도메인 정보를 분산해서 저장하고 있다.
예를들어 naver.com의 IP 주소를 조회한다고 해보자. 이 도메인에서 가장 상위에 있는 도메인은 무엇일까?

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

[출처][ DNS 서버 ] DNS란? 도메인과 URL의 차이, URL의 구조, 도메인의 계층 관계, DNS 동작 방식|작성자 토찌

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브로드밴드 등)에 의해서 자동으로 설정된다.

또 다른 예시

  1. 브라우저에서 Nesite.com을 검색하고, 사용하고 있는 통신사인 KT DNS 서버에게 도메인 주소에 해당하는 IP 주소를 요청함
    (브라우저 기본 DNS 설정이 통신사 DNS 서버이기 때문)

  2. ISP 서버에선 캐시 데이터가 없다는 걸 확인하고 루트 DNS 서버에게 어디로 가야 하는지 요청함(캐시가 있다면 8.로 건너 뜀.)

  3. 루트 서버는 TLD DNS 서버 주소만 관리하기 때문에, ***.com 도메인을 보고는 COM 최상위 도메인을 관리하는 TLD DNS 서버 주소를 안내함.

  4. ISP 서버는 COM 서버에게 어디로 가야 하는지 다시 요청함.

  5. COM 서버는 가비아 DNS 서버에서 해당 도메인이 관리되고 있는 걸 확인하고 안내함.

  6. ISP 서버는 가비아 서버에게 또 다시 요청함.

  7. 가비아 서버는 “Nesite.com = 12.123.123.123”이라는 정보를 확인하고 이 IP를 알려줌. 동시에 ISP 서버는 해당 정보를 캐시로 기록해 둠.

  8. ISP 서버는 브라우저에게 힘들게 알아 낸 12.123.123.123 주소를 안내함.

  9. 브라우저는 12.123.123.123 IP 주소를 갖고 있는 호스팅 서버에게 웹사이트를 출력하라고 요청함.

  10. 드디어 보임.

profile
문과를 정말로 존중해