ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • DNS(Domain Name System)의 개념과 정리
    Web Programming 2022. 2. 15. 14:57

     

    안녕하세요!

    이번 포스팅은 DNS에 대해서 알아보겠습니다. 포스팅을 하기 위해서 공부를 했는데 꽤나 복잡하고 어려운 개념이었습니다.

    DNS란 무엇인가요?

    DNS(Domain Name System)는 인터넷 전화번호부라고 할 수 있습니다.

    우리가 들어가는 인터넷 홈페이지는 전부 고유의 IP주소를 가지고 있는데 이 주소가 실제 웹사이트 주소라고 할 수 있습니다. 사람은 naver.com, espn.com과 같은 도메인 이름을 통해 해당 웹사이트에 접근을 합니다. 내부적으로는 DNS 서버에서 해당 Doman Name을 가진 IP주소를 찾아서 접근을 시도했던 브라우저에게 IP주소를 반환해줍니다.

     

    특정 서버에 IP를 매칭해서 하나씩 외우는 것은 비효율적이고 불편을 초래하기 때문에 숫자와 구분자(.)로 구성된 IP를 대신해 사용자가 기억하기 쉬운 영문, 숫자 및 구분자(.)로 이뤄진 도메인 네임이 등장했습니다.

     

     

    Domain Name의 정의

     

    포괄적인 의미로는 네트워크상에서 컴퓨터를 식별하는 호스트명을 가리키며,

    좁은 의미에서는 도메인 레지스트리에게서 등록된 이름을 의미합니다.

     

    * 도메인 레지스트리 : 최상위 도메인에 등록된 모든 도메인 네임의 데이터베이스

     

     

    Domain Name 의 구조

    도메인 네임은 위와 같이 구성되어있습니다.

    Top-level에 해당 하는 com은 상업적인 목적의 도메인을 뜻하는데 이외에도 국가를 뜻하는 kr이나 공인된 단체를 뜻하는 org 등이 있습니다. 

     

    DNS의 동작 과정 및 서버 종류

    DNS서버가 최고의 성능을 가져서 세상에 딱 하나만 존재한다면 위에서 언급한 것처럼 동작이 단순하게 이뤄질 것입니다. 하지만 도메인수가 너무 많기 때문에 그렇게 단순하게 동작하지는 않습니다. 일단 DNS 서버 종류를 계층화해서 단계적으로 처리한다는 것을 알아둬야 합니다.

    특히 도메인의 총관리는 ICANN에서 하기 때문에, DNS 서버도 최상위 도메인에서 개인 도메인의 서브 도메인까지 도메인 이름의 분류와 마찬가지로 디렉터리/계층 형태로 구분된다는 걸 생각하면 더 쉽게 이해할 수 있습니다.

     

        인터넷 사용자가 실제 쓰는 DNS 서버는 ISP(통신사) DNS 서버로 현재 자신의 PC에서 기본적으로 사용 중인 DNS 서버의 이름과 IP 주소를 명령 프롬프트 창에서 nslookup이라는 명령어로 확인할 수 있습니다.

    bora.net은 LG의 DNS 서버이며 SK, KT 모두 각각의 DNS 서버를 가지고 있습니다. 또한 nslookup naver.com과 같은 명령어로 웹 사이트들이 가지고 있는 IP주소를 찾을 수 있는데 실행화면은 다음과 같습니다.

    모든 웹사이트들은 특정 IP 주소를 가지고 있고 이 IP주소가 실제 주소입니다. 그러나 보안상의 이슈 때문에 이렇게 IP주소로 직접 접근하는 것은 대부분의 경우에 막혀있다고 생각하시면 됩니다.

     

     

    • Root DNS Server : ICANN이 직접 관리하는 최고 계층의 서버로, TLD DNS 서버 IP들을 저장해 두고 안내하는 역할을 합니다.
    • TLD(최상위 도메인) DNS Server : 도메인 등록 기관이 관리하는 서버로 Authoritative DNS 서버 주소를 저장해 두고 안내하는 역할을 합니다. 어떤 도메인 묶음이 어떤 Authoritative DNS Server에 속하는지 아는 이유는 도메인 판매 업체의 DNS 설정이 변경되면 도메인 등록기관으로 전달이 되기 때문입니다.

     

    • Authoritative DNS Server : 실제 개인 도메인과 IP 주소의 관계가 기록/저장/변경되는 서버입니다. 그래서 권한의 의미인 Authoritative가 붙습니다. 일반적으로 도메인/호스팅 업체의 네임서버를 말하지만 개인 DNS 서버 구축을 한 경우도 여기에 해당합니다.

     

    • Recursive DNS Server : 인터넷 사용자가 가장 먼저 접근하는 DNS 서버입니다. 위 3개의 DNS 서버를 매번 거친다면 효율이 좋지 않기 때문에 한번 거친 후 얻은 데이터를 일정 기간 동안 캐시라는 형태로 저장해 두는 서버입니다. 직접 도메인과 IP 주소의 관계를 기록/저장/변경하지는 않고 캐시만을 보관하기 때문에, Authoritative와 비교되는 의미로 반복의 Recursive가 붙습니다 대표적인 것이 KT/LG/SK와 같은 ISP(통신사) DNS 서버가 있고, 브라우저 우회 용도로 많이 쓰는 구글 DNS, 클라우드플레어와 같은 Public DNS 서버가 있습니다.

     

    DNS 서버는 모두 위 4가지 DNS 서버 종류 중 하나에 속하고 특히 브라우저는 캐시가 저장된 Recursive 서버를 사용하고 실제 네임서버를 설정하는 곳은 Authoritatve 서버입니다.

     

     

    전체적인 DNS 동작 원리

    1. 브라우저에서 naver.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. 가비아 서버는 “naver.com = 12.123.123.123”이라는 정보를 확인하고 이 IP를 알려줍니다. 동시에 ISP 서버는 해당 정보를 캐시로 기록해 둡니다.

     

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

     

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

     

    10. 화면에 나타납니다.

Designed by Tistory.