- DNS(Domain Name System)
- 네임 체계
: 네임 체계는 이론적인 상위 단계에서 볼떄 세 가지 주요 기능을 포함함
: 네임 생성과 조직을 관장하는 네임 공간(Name Space)
: 네임과 주소 간의 관계를 설정하는 네임 등록 기술(Name Registration)
: 네임을 주소로 변환하는 과정을 담당하는 네임 변환(Name Resolution)
- 네임 구조
: 가장 일반적인 유형으로 단순 네임공간과 계층적 네임 공간이 있음
: 단순 네임 공간에서는 서로 아무런 연관이 없음(소규모 네트워크)
: 계층적 네임 공간은 특정한 방식으로 네임을 조직하기 위해 다단계 구조를 이용함(대규모 네트워크, 인터네트워크)
- 네임 등록
: 네임 체계에서 주소를 네임에 연결하는 과정
: 일반적인 방법으론 수동 테이블 관리, 브로드캐스트 등록, 데이터베이스 등록이 있음
(수용할 수 있는 용량과 복잡도 순서)
- 네임 변환
: 네임을 주소로 변환하는 작업을 수행함(네임체계에서 젤 중요)
: 두 가지의 구성요소가 있는데 네임 변환기랑 네임 서버이다
: 네임 변환기는 네임 변환 과정에서 클라이언트 역할을 함
: 네임 변환에 이용하는 주된 방법은 테이블 기반, 브로드캐스트, 클라이언트/서버 방식임
(수동 테이블 관리, 브로드캐스트 등록, 데이터베이스 등록과 대응함)
- DNS 구성요소와 일반적인 기능
: DNS는 하나의 완전한 체계로 네임 체계의 세 가지 기본 기능을 구현하는 엄청난 수용력을 제공함
: DNS 네임 공간은 계층적이며 특정한 네임 지정 규칙을 가진 다계층 구조를 이용해 조직됨
: 네임 등록 체계는 도메인과 도메인을 관장하는 등록 기관의 계층 구조에 기반함
: DNS 네임 변환은 계층적이며 DNS 자원 레코드 데이터베이스를 찾아보고 클라이언트의 질의에 대답하기 위해서 특별한 메시징 프로토콜을 사용해 통신하는 네임 변환기와 네임 서버 간 대화에 맞게 설계됨
- DNS 구조적 구성 요소
- 루트(Root) : DNS 네임 구조의 개념적인 정상지점, DNS의 루트 도메인은 전체 구조를 포함함(루트의 길이는 0 = null)
- 브랜치(Branch) : DNS 계층에서 연속된 부분을 말함
- 리프(Leaf) : DNS 계층 구조의 말단에 있는 객체
- 최상위 도메인(TLDs) : 루트 바로 아래에 있는 최상위 단계의 도메인을 뜻함, 1단계 도메인(first-level domain)이라고 함
- DNS 라벨과 문법 규칙
- 길이 : 라벨의 이론상 0~63개의 문자임, 루트는 예외적으로 문자 라벨을 가지지 않음
- 기호 : 알파벳과 숫자, 대쉬 기호(-)만 허용됨
- 대/소문자 : 라벨은 대/소문자를 구분하지 않음
: 라벨은 부모 도메인 하에서 유일해야되지만 다른 도메인에서까지 유일할 필요는 없음
: 각 도메인이 자신의 하위도메인 이름에 대해서는 지역적 제어권을 갖게 하면서도 전체 도메인 이름이 전역적으로 충돌하는걸 막음
- 도메인 네임 생성
: 도메인 네임은 같은 네임 공간에 있는 특정 노드를 유일하게 식별해주는 문자열임
: 한 노드의 도메인 네임은 DNS 트리의 맨 위에서부터 해당 노드까지 있는 라벨을 오른쪽에서 왼쪽으로 연결시켜 만듬
: 각 라벨은 점(.)으로 분리함
- 전체주소 도메인 네임(FQDN, fully qualified domain name) /
상대주소 도메인 네임(PQDN, partially qualified domain name)
: 전체 주소 도메인 네임은 루트에서 해당 노드를 이르는 전체 경로의 모든 라벨을 가지고 DNS 네임 공간에서 한 노드를 유일하게 식별해 내는 완전한 도메인 네임임
: 부분 주소 도메인 네임은 도메인 네임의 일부만을 지정함(특정 부모 도메인 안에서만 의미가 있음)
: 부분 네임은 반드시 부모 도메인 환경 안에서 장비를 식별할 수 있도록 해석돼야 함
- DNS 계층 권한 구조
: 인터넷 네임 공간은 계층적 DNS 네임 공간과 일치하지는 않지만 구조적으로 유사한 권한 계층으로 관리함
: 계층의 꼭대기는 IANA/ICANN이 관리하고 여러 다른 부분의 네임 등록 권한은 다른 기간에 위임됨
: 네임 등록에 관한 정보는 자원 레코드에 유지됨
(이 정보는 여러 장소로 흩어져서 인터넷의 분산 네임 데이터베이스를 형성함)
- DNS의 일반적 기관 TLD
- TLD (Top Level Domain, 최상위 도메인)
: 인터넷 도메인 체계 상 루트 바로 밑에 있는 최상위 도메인을 말함
: root 도메인 바로 밑의 Top Level Domain으로써 크게 3가지로 분류 가능
- gTLD (generic TLD, 일반 최상위 도메인)
- 기관 유형 분류
- Generic gTLD . com, org, net, info
- Sponsored gTLD . aero, asia, cat, coop, edu, gov, int, jobs, mil, mobi, tel, travel, xxx
- Generic-Restricted gTLD . biz, name, pro
: 어떤 국가의 어떤 이용자도 등록이 가능한 일반적인(generic) 범주
- ccTLD (country code TLD, 국가코드 최상위 도메인)
: 지정학적 구조
: ISO 3166-1에 정해진 국별 코드를 사용한 TLD(Top Level Domain)을 말함
: 이는 국가에 귀속되며, 한국의 ccTLD는 .kr 임 . 例) .kr(한국), .jp(일본), .us(미국) 등 국가 도메인
: 국가분류 코드체계 : ISO-3166에 따르며 2 글자 영문코드임.
: kr, jp, fr 등 `two-letter code` . 국가 도메인은 ISO 3166에 두글자로 된 공식 단축 명칭이 지정됨
- ARPA (infrastructure gTLD)
: 원래의 ARPANET 과 관련된 특수한 도메인 (특수 기반 시설 TLD)
: 특정 IP 주소에 대해 호스트 이름으로 변환할 때 사용되는 용도로 주로 사용
: 이 경우의 도메인명은 in-addr.arpa
- DNS 네임 공간 관리적 계층 분할 : DNS 권한 구역
: DNS 네임 공간은 계층적으로 배열 되어 있어 계층 네임 구조와 비슷한 모양의 권한 계층도 있음
: 그러나 두 계층이 일치하지는 않음 (같다면 트리 구조 매 단계마다 분리된 도메인 권한 기관을 둬야됨)
: DNS 트리의 꼭대기 부분에서는 구조의 각 단계마다 분리된 기관을 지정하는 것이 타당해 보임
: 그러나 구조의 아래 단계로 내려가면 각 단계에 대응하는 분리된 기관을 갖는게 불편하거나 불가능해짐
(세세하게 모든 도메인마다 서버를 운영하기 힘들기 때문)
- 네임 공간을 권한 구역으로 나누는 방법
: 완전한 DNS 네임 구조는 구조상에서 연속된 노드들로 이루어진 그룹을 만들기 위해
: 인접 노드를 간에 컷(CUT)을 만드는 방법으로 분할함 -> 이런 그룹을 권한 구역 또는 단순히 Zone(구역) 이라고 함
: 각 Zone은 주로 Zone 안에서 제일 높은 단계에 있는 노드(루트랑 가까운 노드)의 도메인 네임으로 식별함
: DNS 에서 Zone은 서로 겹쳐서는 안되기 때문에 모든 도메인은 하나의 Zone 안에 있어야 함
: 네임 공간을 Zone 으로 나누는 일은 어떤 방법이든 상관 없음
: 실제로 네임 공간의 각기 다른 부분의 필요에 따라 네임 구조를 다양하게 나눈다
: 위 그림에서는 IANA/ICANN은 루트 도메인을 책임짐
: Educause라는 기관이 .EDU를 관리함
: 세 번째 구역은 googleple와 compsci 사이에 있는 컷을 제외한 googleplex.edu를 포함함
: Compsci.googleplex.edu는 독립적인 마지막 권한 구역이 관리함
: Zone은 DNS 네임 서버의 동작 원리와 네임 변환 원리를 이해하는데 중요함
: 구역 내에 존재하는 하위 도메인과 개개의 장비에 대한 모든 정보는
: 특정 DNS 네임 서버에 저장되어 있는 자원 레코드를 이용해서 표현됨
: 일반적으로 네임 서버는 구역 내에서 가장 높은 단계에 있음
: Zone에 대한 일정한 정보를 포함하는 네임 서버를 그 Zone의 권한 서버(Authoritative Server)라고 부름
- DNS 네임 서버 구조
: DNS 공개 네임 정보는 권한 계층에 필적하는 구조화된 DNS 네임 서버상의 분산 데이터베이스에 저장 됨
: 각 Zone은 자신의 정보를 주관하는 하나 이상의 dns 네임 서버를 가짐 -> 권한 네임 서버라고 함
- DNS 서버의 보조 기능
1) 다른 서버와의 상호작용
: DNS 변환 과정에서 종종 다수의 서버가 필요함
: DNS 요청의 유형에 따라 서버가 직접 클라이언트가 되어 다른 서버로 변환 요청을 하기도 함
2) 구역 관리와 이동
: 서버는 구역의 DNS 정보에 대한 관리 방법을 제공해야 함
: 그리고 마스터(1차) 서버와 슬레이브(2차) 서버 사이에서 수행되는 구역 전달을 위한 기능도 있음
3) 성능 향상
: 기능 서버는 처리하는 요청 수가 많음 -> 시간을 줄이는 여러 기술을 사용함
: 가장 중요한 것이 네임 정보의 캐싱임 (네거티브 캐싱이 성능 향상에 이용됨)
: 부하 분산도 이용함
4) 관리
- DNS 네임 서버 계층의 논리적 특징
: DNS 네임 서버 계층은 매우 논리적이지만 DNS 네임 서버 트리와 완전히 일치하지 않음
: 하나의 서버가 여러 개의 도메인과 하위 도메인을 관리 가능함
: DNS 네임 서버 계층의 구조는 네임 서버의 물리적 위치와는 아무 관계가 없음
- DNS 네임 서버 저장
: DNS 서버는 본질적으로 데이터베이스 서버의 한 유형임
: DNS에서 네임 정보를 포함하는 데이터베이스 항목을 자원 레코드(RR, resource records) 라고 함
: RR은 DNS 트리상의 노드에 대해 특정한 유형의 정보를 포함함
: RR에는 두가지 표현이 있음
: 이진 필드 포맷은 DNS 네임 서버와 변환기 사이에 통신에 사용함
: 문자 마스터 파일은 DNS 구역을 운영하는 관리자가 수정함
- DNS 네임 서버의 유형과 역할
- 마스터(1차)/슬레이브(2차)
: 구역마다 관리할 하나 이상의 DNS 네임 서버가 있어야 함
-> 구역에 대해 기술하는 RR 전체를 포함하기 때문에 권한 서버라고 함
: 네임 공간의 각 부분을 위한 네임 서버를 하나만 두는것이 좋지 않음
-> 두 개의 네임 서버를 두는 것 = 1차 마스터 네임 서버와 2차 슬레이브 네임 서버가 생김
: 마스터 네임 서버는 가장 필수적인 서버임
: 구역의 RR을 위한 마스터 파일을 유지하는 역할을 함, 구역내에 정보를 최종적으로 관리
: 슬레이브 서버는 아래 이유 때문에 중요함
1) 중복 네임 : 슬레이브 네임 서버는 자신이 지원하느 마스터 서버의 백업으로 동작함
2) 유지 : 하나 이상의 서버가 있으면 유지/관리를 위해 서버를 재시작할때 서비스를 중단할 필요 X
3) 부하처리 : 요청을 분산시켜 성능향상
4) 효율성 : 네임 서버를 지리적으로 특정한 위치에 두는것이 효율성이 좋은 경우가 있음(거리)
: 2차 네임 서버는 정기적으로 1차 서버의 정보를 얻어옴
: 마스터와 슬레이브 서버 둘 모두 자신이 관리하는 구역의 권한 서버로 간주됨
: 자체적인 DNS RR은 유지하지 않고 다른 구역에서 최근 사용한 정보만을 저장하는 DNS 서버가 있음
: 캐싱 전용 네임 서버라고 하는데 어떤 구역의 권한 서버도 아님
- DNS 네임 변환
: DNS의 주요 클라이언트는 DNS 네임 변환기라고 불리는 SW module 임
: 네임 변환기는 클라이언트 SW로부터 네임을 받아드링고 DNS 서버로 변환 요청을 발생/처리 하여 응답함
: DNS 네임 정보는 많은 서버들에 걸쳐 분산 데이터베이스로 저장됌
-> 하나의 요청/응답 통신을 사용해 네임 변환 수행은 불가능
: 변환기가 요청하는 자료를 가진 서버를 찾아야함
: 주로 루트 네임 서버에서 시작해 클라이언트가 요청한 자원 레코드(RR) 포함하는 특정 서버로 진행하는 메시지 교환을 통해 수행됨
: 실제로 DNS 표준으 적절한 서버를 찾아내기 위해 서버의 계층을 따라가는 두 가지 방버을 정의함
: 반복적 변환과 재귀적 변환임
- 반복적 변환
: 반복적 변환에서는 클라이언트가 적절한 정보를 가지고 있지 않은 네임 서버에게 요청을 보내면
: 서버는 다른 네임 서버 주소를 알려줌
- 재귀적 변환
: 재귀적 변환에서는 클라이언트가 요청한 정보가 없는 서버에게 요청을 보내면
: 서버가 필요한 레코드를 찾아내기 위해 다른 서버에게 요청을 보냄
- DNS 네임 변환 과정