애플리케이션 계층 - DNS

기운찬곰·2020년 10월 13일
1

Computer Science

목록 보기
26/27

DNS(Domain Name System)

도메인 네임 시스템(Domain Name System, DNS) 은 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행할 수 있도록 하기 위해 개발되었다.

특정 컴퓨터(또는 네트워크로 연결된 임의의 장치)의 주소를 찾기 위해, 사람이 이해하기 쉬운 도메인 이름을 숫자로 된 식별 번호(IP 주소)로 변환해준다. 도메인 네임 시스템은 흔히 "전화번호부"에 비유한다.

이 DNS를 운영하는 서버를 네임서버(Name Server)라고 한다. 서버 구축에 대한 지식이 있으면 어렵지 않게 구성하는 것이 가능하다고 한다. 규모가 있는 사이트의 경우에는 네임서버를 자체 운영하는 경우가 많다.

가볍게 영상하나 보고 시작하도록 하자. 끝나고 나서 한번 더보자. DNS가 세삼 대단하다는 것을 느낄 수 있을 것이다.

동작 원리

1단계. 사용자 시스템은 DNS 애플리케이션의 클라이언트 측을 실행한다.

2단계. 브라우저는 URL에서 호스트 이름 example.com를 추출하고 호스트 이름을 DNS 애플리케이션의 클라이언트 측에 전달한다.

3단계. DNS 클라이언트는 호스트 이름이 포함 된 쿼리를 DNS 서버로 보낸다.

4단계. DNS 클라이언트는 DNS 서버로부터 호스트 이름에 대한 IP 주소(93.184.216.34)가 포함 된 응답을 받는다.

5단계. 브라우저가 DNS에서 IP 주소를 받으면 해당 IP 주소의 포트 80에있는 HTTP 서버 프로세스에 대한 TCP 연결을 시작할 수 있다.

🚨 주의. 기본 동작원리가 이렇다는 것이다. 사실 이것보다 더 복잡하다. 밑에서 설명하겠다.

주요 DNS 목록

DNS를 잘못 설정할 경우 인터넷 이용에 문제가 생길 수 있다. 신뢰할 수 없는 DNS는 해킹, 파싱 등에 노출되므로, 신뢰할 수 있는 DNS 서버만 이용하는 것이 권장된다.

네트워크 속성을 보면 저는 KT를 쓰고 있어서 DNS가 KT인 것을 알 수 있다.


DNS 계층 구조

그렇다면 전세계의 DNS가 하나이고 모든 컴퓨터가 그쪽으로 접속해서 IP를 반환받을까? 버틸 수 있는 컴퓨터가 존재할까...? 당연히 DNS는 한개가 아니다.

DNS의 특징은 분산 계층 데이터베이스이다. DNS를 많은 서버로 나누고 이들을 계층 형태로 구성하며 전 세계로 분산시켜놓았다.

계층구조

도메인 주소 맨 뒤에는 사실 .이 생략되어 있다. 만약 URL이 blog.example.com이라면 사실은 blog.example.com.이라는 도메인이 있는 셈이다. 그리고 이에 해당하는 IP를 찾아가는 과정을 설명하자면 아래와 같다.

1단계. .에 해당하는 Root DNS 서버 중 하나에 먼저 접속한다. 그리고 그 서버에서 최상위 레벨 도메인이 .com을 갖는 Top-level DNS 서버 IP 주소를 찾는다.

2단계. 다시 Top-level DNS 서버에 접속합니다. 다시 그 서버에서 .example.com을 갖는 책임서버(Second-level) DNS IP 주소를 찾습니다.

3단계. .example.com을 갖는 책임서버에 접속한다. 거기서 마침내 blog.example.com 도메인에 해당하는 IP를 찾을 수 있게 되는 것이다.

출처 : https://www.cloudflare.com/ko-kr/learning/dns/glossary/dns-root-server/

Root DNS -> Top-level 서버 -> 책임서버 이런식으로 찾아내려가는 계층구조로 이해하면 된다.

1. Root DNS

DNS와 특정 프로토콜들의 제한, 즉 파편화되지 않은 사용자 데이터그램 프로토콜(UDP) 패킷의 실질적인 크기 제한으로 인해 루트 서버 수를 13개 서버 주소로 제한하도록 결정되었다(A부터 M까지 있음). 2020년 1월 11일 기준으로 애니캐스트 어드레싱을 사용하면 루트 서버 인스턴스의 실제 수를 더 크게 잡을 수 있으며 그 수는 1034이다.

2. Top-level DNS

최상위 도메인(Top-level domain, TLD)은 인터넷에서 도메인 네임의 가장 마지막 부분을 말한다. 예컨대 ko.wikipedia.org의 최상위 도메인은 .org가 된다. 최상위 도메인은 .com과 같은 일반 최상위 도메인.kr 같은 국가 코드 최상위 도메인으로 나뉜다.

가령, 베리사인 글로벌 레지스트리 서비스 사는 com TLD에 대한 TLD 서버를 담당하고 있다고 한다.

3. Authorative Name Server

책임 DNS 서버. 조직의 자체 DNS 서버, 조직의 명명 된 호스트에 대한 IP 매핑에 권한있는 호스트 이름을 제공한다. 조직 또는 서비스 제공 업체에 의해 유지 보수 가능하다.


도메인 이름 등록과정

구성요소

등록 과정을 설명하기전에 어떤 기관과 관계자가 있는지 먼저 알아보도록 하겠다.

  • Registrant 등록자 : 일반인(고객). 대부분은 여기에 속함'
  • Registrar 등록대행자 : Cafe24, 닷홈 같은 도메인 대행 등록 업체들이 존재한다. 1년에 2~3만원이면 내아이피에 도메인을 등록할 수 있다.
  • Registry 등록소 : 최상위 도메인을 관리하는 역할을 한다. 일례로 베리사인 글로벌 레지스트리 서비스 사가 com을 관리하고, 에듀코즈 사가 edu를 관리하고 있다.
  • ICANN : 국제인터넷주소관리기구(Internet Corporation for Assigned Names and Numbers, ICANN)는 1998년에 설립된 인터넷의 비즈니스, 기술계, 학계 및 사용자 단체 등으로 구성된 기관으로 인터넷 DNS의 기술적 관리, IP 주소공간 할당, 프로토콜 파라미터 지정, 루트 서버 시스템 관리 등의 업무를 조정하는 역할을 한다.

등록과정

이제 DNS 등록 과정을 알아보자.

  1. 우리는 93.184.216.34라는 서버를 가지고 있다. 이 서버에다가 example.com이라는 도메인을 부여하고 싶다.
  2. 우리는 example.com과 IP, 약간의 수수료를 Registrar 등록대행자에게 보내면서 등록 신청을 한다.
  3. Registrar 등록대행자는 Authorative Name Server(a.iana-servers.net)에다가 example.com은 93.184.216.34라는 것을 등록한다. 이 Authorative Name Server는 자신이 직접 구축할 수도 있고 무료를 이용할 수 있고 지금처럼 Registrar 등록대행자를 이용할 수도 있다.
  4. Registrar 등록대행자는 example.com의 NS(Name Server)는 a.iana-servers.net이라는 것을 Registry 등록소에게 알려준다.
  5. Registry 등록소는 Top-level Domain Sever(a.gtId-servers.net)에다가 마찬가지로 example.com의 NS는 a.iana-servers.net라는 것을 등록한다.
  6. ICANN이 관리하는 Root Name Server(a.root-servers.net)은 이미 com의 Top-level Domain Sever가 a.gtId-servers.net라는 것을 알고 있다.

탐색과정

  1. 이제 클라이언트가 여러분의 서버에 접속하려고 한다. 클라이언트는 이미 DNS Sever가 등록되어있다. 예를 들어 앞서 KT가 168.126.63.1인 것처럼.
  2. DNS Sever는 Root Name Server가 무엇인지 이미 가지고 있다. 따라서 a.root-servers.net을 이미 알고 있다. 물론 여러개를 알고 있겠지?
  3. 우리의 서버는 example.com이라고 등록되어있다. 따라서 example.com의 IP가 무엇인지 알아야 한다. DNS Server는 Root Name Server에게 물어본다. Root Name Server는 com을 보고 com을 관리하는 Top-level domain을 알려준다.
  4. 다시 DNS Server는 Top-level domain을 관리하는 a.gtId-servers.net에 가서 물러본다. a.gtId-servers.net는 example.com이 a.iana-servers.net이 관리한다는 것을 알고 있다.
  5. 다시 DNS는 Server는 a.iana-servers.net에 가서 example.com에 대해 물어본다. 드디어 93.184.216.34를 획득할 수 있는 것이다.
  6. 최종적으로 클라이언트는 93.184.216.34로 서버에게 요청해서 웹 페이지를 받아볼 수 있는 것이다.

👉 유튜브 영상 참고


참고 자료

profile
배움을 좋아합니다. 새로운 것을 좋아합니다.

0개의 댓글