Domain

다양한 맥락에서의 Domain

  • 도메인은 다양한 맥락에서 다양한 의미로 해석될 수 있다.
  • 예를 들어, 네트워크 맥락에서 도메인은, 네트워크 리소스를 통해 다양한 유형의 데이터를 공유하는 어떠한 객체들의 집합을 일컫는다. 객체들이라하면, 컴퓨터, 사용자, 데이터베이스, 이메일 서버 등을 이 될 수 있다.
  • 프로그래밍 맥락에서의 도메인은, 해결하고자 하는 문제의 영역이라는 개념으로 사용된다. (이러한 관점으로 개발하는 방법론을 DDD(Domain-Driven Design)이라고 부른다.)

Domain or Domain Name?

  • DNS 에서 사용되는 도메인 네임은 도메인과 직접적인 관련이 있는 용어, 예를 들면 도메인의 이름을 뜻하는 의미를 가진 용어는 아니다. 도메인 네임은 고유의 의미를 가지는 용어 이다. 하지만 많은 경우, 위의 맥락들에서의 도메인이 아닌 도메인 네임과 같은 의미를 가진 줄임말로써 사용하곤한다. 따라서, DNS 의 맥락에서 도메인은 도메인 네임 과 은 의미를 가진 줄임말로써 사용하는 것이라고 보면 될 듯 하다.

Domain Name

  • 웹 사이트에 접근하는 데 사용되는 고유하고 기억하기 쉬운 주소.

왜 필요할까?

  • 웹 사이트의 실제 주소는 복잡한 숫자형 IP 주소(e.g. 192.0.2.2) 로 되어있으며, 모든 인터넷 상의 컴퓨터는 이 IP 주소를 통해 서로를 찾고 통신한다.
  • 하지만, 도메인 네임은 텍스트 문자열로 구성 되어있으며 단순한 숫자의 나열이 아닌 웹 사이트를 나타내는 단어를 포함(일반적으로) 하고 있다. 이 도메인 네임은 DNS 라는 것으로 실제 IP 주소로 변환된다. 따라서, 도메인 네임이 있으므로 특정 웹 사이트에 접속하기 위해 복잡한 IP 주소를 알 필요 없이, 웹 사이트에 접속할 수 있게된다.
    • 예를 들어, 도메인 네임이 없다면 Google 에 접속하기 위해서 Google 의 IP 주소를 알고 있어야 하며, 이를 브라우저에게 알려주어야 한다. 하지만, 실제로 우리는 주소창에 ‘google.com’ 이라는 도메인 네임을 입력하는 것 만으로 Google 에 접속할 수 있다.

누가 관리할까?

  • 도메인 네임 은 모두 도메인 레지스트리(Registry) 에서 관리한다. 도메인 레지스트리는 모든 도메인 네임을 유지 및 관리하는 기관이며, 데이터베이스의 역할을 한다.
  • 레지스트리에서는 도메인 네임 예약을 등록기관(Registrar)에 위임한다. 따라서 보통 웹 사이트를 만들고 도메인 네임을 등록하려는 사람은, 이러한 등록기관(가비아, AWS, CloudFlare 등) 을 선택하여 도메인 네임 을 등록한다.
    • 일반적으로 등록기관을 통해 등록이 가능하지만, 레지스트리에서 직접 등록해야하는 도메인 네임도 있다. .cl(칠레), .ee(에스토니아), .is(아이슬란드), .tr(터키) (OECD 회원국 4개국)과 .tk(토켈라우) (비 OECD 회원국 1개국)이 있으며, 이 다섯 개의 도메인 네임에 대해서는 등록기관이 아닌, 레지스트리를 통해야만 등록이 가능하다.

계층

  • 도메인 네임 은 일반적으로 각각 점(.)으로 구분된 2 - 3 부분의 식별자로 나뉜다.
  • 오른쪽에서 왼쪽으로 갈수록, 식별자는 가장 일반적인 것에서 가장 구체적인 것으로 바뀐다.
  • 도메인 네임 의 마지막 점, 즉 가장 오른쪽 부분은 최상위 도메인(Top Level Domain, TLD)이다.
  • TLD의 왼쪽에는 두 번째 레벨 도메인(2nd Level Domain, 2LD)이 있고 2LD의 왼쪽에 무언가가 있으면 세 번째 레벨 도메인(3LD)이라고 한다.
  • 이를 도식화하면 다음과 같다.

TLD (Top Level Domain)

  • 도메인 네임에서 마지막 점 뒤에 오는 모든 것을 뜻한다.
    • 예를 들어, google.com 에서 .com 은 TLD 에 해당한다.
  • TLD 는 도메인 네임의 목적을 분류하고 전달한다.

    • 몇 가지 예 :

      • ‘.com’ 은 영리 사업체용입니다.
      • ‘.gov’ 는 미국 정부 기관용입니다.
      • ‘.uk’ 는 영국의 도메인용입니다.
  • 인터넷에서 사용되는 모든 TLD 는 국제 인터넷 주소 관리 기구(ICANN) 로 부터 관리된다.

Google 의 예

  • ‘google.com’ 의 경우 :
    • ‘.com’ 은 TLD (가장 일반적).
    • ‘google’ 은 2LD (가장 구체적).
  • ‘google.co.uk’의 경우 :
    • ‘.uk’ 은 TLD(가장 일반적).
    • ‘.co’ 은 2LD.
    • ‘google’ 은 3LD(가장 구체적).

DNS

  • 앞서 Domain Name 파트에서 얘기했 듯, 도메인 네임은 DNS 를 통해 IP 주소로 변환하는 기능을 가지며, 이러한 과정 및 시스템을 DNS 라 일컫는다.

  • 일종의 주소책자 라고 생각할 수 있다. 사람은 nytimes.com 또는 espn.com과 같은 도메인 네임 을 통해 온라인으로 정보에 액세스합니다. 웹 브라우저는 인터넷 프로토콜(IP) 주소를 통해 상호작용합니다. DNS는 브라우저가 인터넷 자원을 로드할 수 있도록 도메인 네임 을 IP 주소로 변환합니다.
  • 사람이 읽을 수 있는 도메인 네임 을 머신이 읽을 수 있는 IP 주소로 변환하는 기능이 있다.

DNS 동작 방식

DNS 서버 (네임 서버)

  • DNS 는 다수의 DNS 서버로 구성되어있다. 각 DNS 서버는 상호작용을 통해 사용자가 요청하는 DNS 쿼리를 수신하여, 도메인 네임을 IP 로 변환하고, IP 에 해당하는 웹 사이트를 찾아 사용자가 해당 웹사이트에 접근할 수 있도록 한다.
  • 이러한 DNS 서버는 4가지로 분류할 수 있다. DNS 리졸버(재귀 확인자), Root 네임 서버, TLD 네임서버, 권한 있는 네임서버 이다. 따라서 DNS 리졸버를 제외한 각 서버는 네임서버라고도 부른다.

DNS 리졸버(재귀 확인자)

  • DNS 쿼리의 첫 단계로써, 사용자와 DNS 서버 사이의 중개자 역할을 하며, 각 DNS 서버 사이에서 요청과 응답을 하는 역할을 한다.
  • DNS 쿼리를 받은 후, 캐시된 IP 주소가 있다면 그것으로 응답한다. 그렇지 않다면, 첫 번째 요청을 Root 네임서버로 보내고 또 다른 요청을 TLD 네임서버로 보낸 후 마지막 요청을 권한 있는 네임서버로 보낸다. 이 과정 중에서 DNS 서버에서 받은 정보를 캐시한다.

    • 마지막 요청인 권한 있는 네임서버로부터 응답을 받은 후 응답을 클라이언트에 보낸다.
  • 대부분의 인터넷 사용자는 ISP에서 제공하는 DNS 리졸버를 사용한다.

Root 네임서버

  • Root 네임 서버는 모든 DNS 리졸버에게 알려져 있다. 따라서 Root 네임 서버는 DNS 쿼리 요청을 처리하는 프로세스의 첫번째 단계가 된다.
  • Root 네임 서버는 DNS 리졸버 의 요청을 받아 도메인 네임의 TLD 에 대한 정보를 DNS 리졸버에 응답한다.

TLD 네임서버

  • 특정 TLD 를 가지고 있는 도메인 네임에 대한 정보를 가지고있다. 예를 들어 TLD 네임서버는 .com 으로 끝나는 모든 웹 사이트의 정보를 갖고 있다.
  • DNS 리졸버 로부터 (Root 네임 서버의 응답) 요청을 받아, 권한 있는 네임 서버에 대한 정보를 DNS 리졸버에게 응답한다.
  • 일반적으로 도메인 등록 기관이 관리하는 서버이다.

권한 있는 네임서버

  • DNS 리졸버 로부터 (TLD 네임서버로부터 응답) 요청 을 받아, 해당 응답을 권한 있는 네임서버로 보낸다. 권한 있는 네임서버는 IP 주소를 확인하는 마지막 단계가 된다.
  • 권한 있는 네임서버는 도메인 네임에 대한 고유한 정보 를 포함하며 DNS A 레코드에서 찾은 도메인의 IP 주소를 DNS 리졸버에 제공하거나, 도메인에 CNAME 레코드(별칭)가 있는 경우 DNS 리졸버에 별칭 도메인을 제공한다.

DNS 레코드

  • 도메인 이름과 연계된 IP 주소 및 해당 도메인에 대한 요청의 처리 방법에 대한 정보를 제공한다.
  • 존 파일(Zone File) 이라는 형식으로 저장된다.
  • 모든 DNS 레코드에는 ‘TTL’이 있는데, 이는 time-to-live의 약어로 DNS 서버가 해당 레코드를 새로 고치는 빈도를 나타낸다.

A 레코드

...
example.com.        A      192.0.2.23
...
  • 주소, 즉 도메인의 IP 주소를 갖고 있다.
  • 따라서, 한번의 요청으로 IP 주소를 알 수 있다.

CNAME 레코드

...
example.com.        A      192.0.2.23
www.example.com.    CNAME  example.com
...
  • 도메인 네임의 별칭을 만드는 데 사용된다.
  • 예를 들어 위 처럼 존 파일에 CNAME 을 추가했다면, 이제 example.com 은 www.example.com 으로도 접속할 수 있다.
  • IP 주소가 바뀌어도 유연하게 대응할 수 있다는 장점이 있다.

NS 레코드

  • NS는 네임서버를 의미한다. 이는 앞서 얘기했던 DNS 서버 의 모든 네임서버를 의미하는 것이아닌, 권한 있는 네임서버 를 위미한다.
  • NS 레코드로 도메인 네임 대한 네임서버의 권한을 누가 관리하고 있는지 알려주는 레코드이다. 예를들어, 내가 example.co.kr 이라는 도메인을 가비아에서 구입해서 사용하고 있다고 하면, example.co.kr 도메인 네임을 관리하는 네임 서버는 가비아 가 되게 된다.
  • 즉 NS 레코드는 어떤 도메인 네임에 대한 처리를 다른 권한 있는 네임서버 에게 위임하는 기능을 가진 레코드이다.

출처