DNS

Jun 1, 2019


1. Domain Name System

호스트의 도메인 네임을 호스트의 네트워크 주소로 바꾸는 역할과, 그 반대로 호스트의 네트워크 주소를 호스트의 도메인 네임으로 변환하는 역할을 수행할 수 있도록 개발된 체계

  • 사람이 이해하기 쉬운 도메인 네임을 숫자로 된 IP 주소로 변환해준다. (반대의 경우도 포함)
  • DNS Server는 도메인을 위한 DNS 레코드를 저장하고 데이터베이스에 대한 쿼리의 응답 정보와 함께 응답하는 서버이다.

2. Domain Name 생성 규칙

RFC 1035, 1123, 2181에 정의되어 있다.
도메인 네임은 한 개 이상의 레이블로 이루어지고, 각 레이블은 점으로 구분된다. (example.com - 두 개의 레이블)

  • 가장 오른쪽의 레이블이 최상위 도메인을 의미한다.
  • 도메인의 계층 구조는 오른쪽에서 왼쪽으로 내려가고, 왼쪽의 레이블이 오른쪽 도메인의 서브 도메인이다. 서브 도메인은 127 단계 까지 가능하다.
  • 각 레이블은 최대 63 개의 문자를 사용할 수 있고, 전체 도메인 이름은 253 개의 문자를 초과할 수 없다. (실제로는 도메인 레지스트리에서 더 짧게 제한될 수 있다.)
  • 도메인 네임은 옥텟으로 표현 가능한 모든 문자를 사용할 수 있다. 그러나 DNS 루트 존과 대부분의 서브 도메인에서는 제한된 형식들과 문자들을 허용한다. 레이블에 사용될 수 있는 문자는 LDH 규칙을 따른다. 도메인 네임은 대소문자 구분 없이 해석되며, 하이픈으로 시작하거나 끝날 수 없다.
    • LDH (Letter, Digit, Hyphen) : 아스키 코드로 나타낼 수 있는 문자 집합의 부분 집합과 알파벳 대소문자(A~Z, a~z), 숫자(0~9), 하이픈(-)을 포함

3. CNAME, A Record

하나의 레이블은 두 가지 방식으로 도메인 네임이 부여된다.

  • CNAME (Canonical NAME) : 하나의 도메인에 다른 이름(별칭)을 부여하는 방식
  • A Record : 하나의 도메인 네임에 해당하는 IP 주소가 부여되어 있음
    bar.example.com // CNAME - foo.example.com
    foo.example.com // A Record - 192.0.2.23