기술(IT)

주소 변환 기술 - DNS (Domain Name System)

2019. 10. 1.
728x90

DNS(Domain Name System)는 인터넷이나 사설 네트워크에 연결된 컴퓨터, 서비스 또는 기타 자원에 대한 계층적이고 분산된 명명 시스템이다. 가장 두드러지게, 그것은 더 쉽게 암기되는 도메인 이름을 기본적인 네트워크 프로토콜로 컴퓨터 서비스와 장치를 찾아내고 식별하는 데 필요한 숫자 IP 주소로 번역한다. 그것은 다양한 정보를 각 참여 단체에 할당된 도메인 이름과 연결한다. 도메인 이름 시스템은 또한 그것의 핵심에 있는 데이터베이스 서비스의 기술적 기능도 명시한다. 도메인 이름 시스템은 각 도메인에 대해 권한 있는 이름 서버를 지정하여 도메인 이름을 할당하고 인터넷 자원에 이러한 이름을 대응하는 책임을 위임한다. 네트워크 관리자는 할당된 이름 공간의 하위 도메인에 대한 권한을 다른 이름 서버에 위임할 수 있다. 이 메커니즘은 분산 및 내결함성 서비스를 제공하며 단일 대형 중앙 데이터베이스를 피하고자 설계되었다. 그것은 DNS 프로토콜, 즉 DNS에 사용된 데이터 구조 및 데이터 통신 교환의 상세 명세를 인터넷 프로토콜 스위트의 일부로 정의한다. 인터넷은 도메인 이름 계층과 인터넷 프로토콜(IP) 주소 공간이라는 두 개의 기본 네임스페이스를 유지한다. 도메인 이름 시스템은 도메인 이름 계층을 유지하고 도메인 이름과 주소 공간 간에 변환 서비스를 제공한다. 인터넷 이름 서버와 통신 프로토콜은 도메인 이름 시스템을 구현한다. DNS 이름 서버는 도메인의 DNS 레코드를 저장하는 서버다. DNS 이름 서버는 해당 데이터베이스에 대한 질의에 대한 응답으로 응답한다.



도메인 이름 공간

도메인 이름 공간은 트리 데이터 구조로 구성된다. 트리의 각 노드 또는 리프에는 도메인 이름과 관련된 정보를 포함하는 라벨과 0개 이상의 자원 레코드가 있다. 도메인 이름 자체는 오른쪽에 있는 상위 노드 이름과 연결된 라벨로 구성되어 있으며, 점으로 구분된다. 트리는 루트 구역에서 시작하는 구역으로 세분된다. DNS 영역은 영역 관리자의 관리 선택에 따라 하나의 도메인으로만 구성되거나 많은 도메인 및 하위 도메인으로 구성될 수 있다. DNS는 또한 별도의 클래스를 병렬 네임스페이스 트리의 배열로 생각할 수 있는 클래스에 따라 분할될 수 있다. 클래스 인터넷을 위한 계층적 도메인 이름 시스템. 모든 구역에 대한 행정 책임은 추가 구역을 생성하여 나눌 수 있다. 새로운 구역에 대한 권한은 지정된 이름 서버에 위임된다고 한다. 부모 구역은 새로운 구역에 대해 권위 있는 구역이 되는 것을 멈춘다.


도메인 이름 구문, 국제화

도메인 이름 형성에 관한 규칙의 확정적 설명은 RFC 1035, RFC 1123, RFC 2181 및 RFC 5892에 나타난다. 도메인 이름은 기술적으로 라벨이라고 불리는 하나 이상의 부분으로 구성되어 있으며, example.com.과 같이 전통적으로 연결되고 점으로 구분된다. 도메인의 계층은 오른쪽에서 왼쪽으로 내려간다. 왼쪽의 각 라벨은 도메인의 하위 영역 또는 오른쪽의 하위 도메인을 지정한다. For의 경우 라벨은 com 도메인의 하위 도메인이고 www는 example.com.의 하위 도메인이다. 이 세분화 나무는 127단계까지 올라갈 수 있다. 라벨은 0에서 63자를 포함할 수 있다. 길이 0의 null 라벨은 루트 존에 대해 예약되어 있다. 전체 도메인 이름은 텍스트 표현에서 253자의 길이를 초과할 수 없다. DNS의 내부 이진 표현에서 최대 길이는 이름의 길이도 저장하므로 255 옥텟의 저장 공간이 필요하다. 8진법으로 나타낼 수 있는 도메인 이름 라벨의 문자를 사용하는 기술적 제한은 없지만, 호스트 이름은 선호되는 형식과 문자 집합을 사용한다.

라벨에 허용되는 문자는 ASCII 문자 집합의 하위 집합으로, 문자 a ~ z, A ~ Z, 숫자 0 ~ 9 및 하이픈으로 구성된다. 이 규칙은 LDH 규칙(글자, 숫자, 하이픈)으로 알려졌다. 도메인 이름은 대/소문자 구분 없이 해석된다. 라벨은 하이픈으로 시작하거나 종료할 수 없다. 추가 규칙은 최상위 도메인 이름이 숫자로만 되어서는 안 된다는 것을 요구한다.

DNS에서 허용되는 ASCII 문자 집합은 고유 문자나 스크립트에 많은 언어의 이름과 단어를 표시할 수 없도록 했다. 이를 가능하게 하기 위해, ICANN은 웹 브라우저와 같은 사용자 애플리케이션이 Funycode를 사용하여 유니코드 문자열을 유효한 DNS 문자 세트에 대응하는 IDNA(In Applications) 시스템의 국제화 도메인 이름을 승인했다. 2009년에 인터넷 주소 관리 기구는 국제화된 도메인 이름 국가 코드 최상위 도메인(ccTLD)의 설치를 승인했다. 또한 기존의 최상위 도메인 이름(TLD)의 많은 등록부에서는 RFC 5890, RFC 5891, RFC 5892, RFC 5893의 안내를 받아 IDNA 시스템을 채택하였다.


서버 이름

도메인 이름 시스템은 클라이언트-서버 모델을 사용하는 분산 데이터베이스 시스템에 의해 유지된다. 이 데이터베이스의 노드는 이름 서버다. 각 도메인은 해당 도메인에 대한 정보와 해당 도메인에 종속된 도메인의 이름 서버를 게시하는 권한 있는 DNS 서버를 하나 이상 가지고 있다. 계층의 맨 윗부분은 TLD를 조회할 때 조회할 서버인 루트 이름 서버에 의해 서비스된다.


권한 있는 이름 서버

권한 있는 이름 서버는 데이터 캐시만 유지하는 다른 이름 서버에 대한 질의를 통해 얻은 답변과는 달리 도메인 관리자나 동적 DNS 방법으로 구성된 데이터에서 DNS 질의에 대한 답변만 제공하는 이름 서버다. 권한 있는 이름 서버는 마스터 서버 또는 슬레이브 서버일 수 있다. 마스터 서버는 모든 구역 레코드의 원본(마스터) 사본을 저장하는 서버다. 슬레이브 서버는 마스터 레코드의 동일한 사본을 유지하기 위해 마스터와 통신할 때 DNS 프로토콜의 특수 자동 업데이트 메커니즘을 사용한다.모든 DNS 영역에는 권한 있는 이름 서버 집합이 할당되어야 한다. 이 서버 세트는 이름 서버(NS) 레코드와 함께 상위 도메인 영역에 저장된다. 권한 있는 서버는 그것의 응답에 "AA"(Authorative answer) 비트라고 불리는 프로토콜 플래그를 설정함으로써 권위 있는 것으로 간주되는 확정 답변을 제공하는 그것의 상태를 나타낸다. 이 플래그는 일반적으로 DNS 관리 쿼리 도구(예: dig)의 출력에서 두드러지게 재현되어 응답 이름 서버가 해당 도메인 이름의 권한임을 나타낸다.



재귀 및 캐싱 네임 서버

이론적으로 권위 있는 이름 서버는 인터넷의 운영에 충분하다. 그러나 권한 있는 이름 서버만 작동하면 모든 DNS 질의는 도메인 이름 시스템의 루트 영역에 있는 재귀 쿼리로 시작해야 하며 각 사용자 시스템은 재귀 작업이 가능한 해결사 소프트웨어를 구현해야 한다. 효율성을 향상시키고, 인터넷을 통한 DNS 트래픽을 줄이고, 최종 사용자 애플리케이션의 성능을 높이기 위해, 도메인 이름 시스템은 해당 도메인 이름 레코드의 구성(실시간-실시간)에서 결정된 일정 기간 동안 DNS 쿼리 결과를 저장하는 DNS 캐시 서버를 지원한다. 일반적으로 이러한 DNS 서버는 쿼리된 도메인의 권한 있는 이름 서버를 통해 DNS 루트로 시작하는 지정된 이름을 확인하는 데 필요한 재귀 알고리즘도 구현한다. 이 기능을 이름 서버에 구현하면, 사용자 애플리케이션은 설계와 운영에서 효율성을 얻는다. 이름 서버의 DNS 캐싱과 재귀 기능의 조합은 필수적이지 않다; 그 기능은 특별한 목적을 위해 서버에서 독립적으로 구현될 수 있다.

인터넷 서비스 제공자들은 일반적으로 그들의 고객들을 위해 재귀적이고 캐슁된 이름 서버를 제공한다. 또한, 많은 가정용 네트워킹 라우터는 로컬 네트워크의 효율성을 향상시키기 위해 DNS 캐시와 재귀자를 구현한다.



DNS 확인자

DNS의 클라이언트 쪽을 DNS 확인자라고 한다. 해결사는 도메인 이름을 IP 주소로 변환하는 등 궁극적으로 검색된 리소스의 전체 해상도(번역)로 이어지는 쿼리를 시작하고 순서를 정하는 책임을 진다. DNS 확인자는 재귀, 비반복 및 반복과 같은 다양한 쿼리 방법에 의해 분류된다. 분해능 프로세스는 이러한 방법의 조합을 사용할 수 있다. 비복수 쿼리에서 DNS 확인자는 서버가 권한이 있는 레코드를 제공하는 DNS 서버를 쿼리하거나 다른 서버를 쿼리하지 않고 부분 결과를 제공한다. 캐싱 DNS 결정자의 경우, 로컬 DNS 캐시의 비복수 쿼리가 결과를 제공하고 업스트림 DNS 서버의 초기 응답 후 일정 기간 DNS 리소스 레코드를 캐슁하여 업스트림 DNS 서버의 부하를 줄인다.

재귀 쿼리에서 DNS 확인자는 단일 DNS 서버를 쿼리하고, 다시 요청자를 대신하여 다른 DNS 서버를 쿼리할 수 있다. 예를 들어, 홈 라우터에서 실행되는 간단한 스텁 확인기는 일반적으로 사용자의 ISP에 의해 실행되는 DNS 서버에 재귀 쿼리를 한다. 재귀 쿼리는 DNS 서버가 필요에 따라 다른 이름 서버를 쿼리하여 쿼리에 완전히 응답하는 쿼리를 말한다. 일반적인 작업에서 클라이언트는 캐싱 재귀 DNS 서버에 재귀 쿼리를 실행하고, 그 후에 비회귀 쿼리를 실행하여 답을 결정하고 클라이언트에 단일 답변을 다시 보낸다. 결정자 또는 결정자를 대신하여 재귀적으로 작동하는 다른 DNS 서버는 쿼리 헤더의 비트를 사용한 재귀 서비스 사용을 협상한다. DNS 서버는 재귀 쿼리를 지원할 필요가 없다.



원형 종속성 및 접착제 기록

위임의 이름 서버는 IP 주소가 아닌 이름으로 식별된다. 즉, 해상도명 서버는 자신이 참조된 서버의 IP 주소를 알아내기 위해 다른 DNS 요청을 발급해야 한다. 대표단에 주어진 이름이 대표단이 제공되고 있는 도메인의 하위 도메인이라면, 순환 종속성이 있다. 이 경우, 위임을 제공하는 이름 서버는 위임에 언급된 권한 있는 이름 서버에 대해 하나 이상의 IP 주소를 제공해야 한다. 이 정보를 풀이라고 한다. 위임명 서버는 이 접착제를 DNS 응답의 추가 섹션에 있는 기록의 형태로 제공하고, 응답의 권한 섹션에 위임을 제공한다. 글루 레코드는 이름 서버와 IP 주소를 조합한 것이다.

LIST

댓글

추천 글