DNS
네트워크 상의 도메인 네임을 IP 주소에 매핑해 주는 시스템으로, 초기에 호스트 네임 별로 IP 주소 정보를 시스템 안의 hosts.txt 파일로 관리하던 것이 관리 대상이 증가하고, 기술의
발달에 따라 분산 구조로 관리가 가능하도록 개발된 시스템이다.
DNS 도메인 네임은 a-z, A-Z, 0-9, 하이픈(-)
문자만 허용한다.
DNS Components
- TLD: Top Level Domain. 루트 도메인 하위의 상위 도메인
Country code TLD |
Generic TLD |
국가적 성격 |
국제적 성격 |
kr, jp, us, uk, it 등 |
com, org, net, edu, gov, mil 등 |
- SLD: Second Level Domain. 도메인 등록 조직, 국가 등 소속 기관의 성격으로 분류. gTLD의 하위 도메인일 경우, 최종 사용자가 정의한 도메인을 등록하여 사용한다.
- Third Level Domain: SLD 하위 도메인으로, gTLD를 제외하고 최종 사용자에 의해 정의된 도메인
Sub Domain: 사용 목적에 따라 최종 사용자에 의해 정의된 도메인. a.b.com의 경우 a 가 서브 도메인에 해당한다.
Name Server
도메인 네임 스페이스에 대한 정보를 저장하는 호스트. 일반적으로 네임 스페이스에 대한 정보를 파일 형태로 가지고 있고, 해당 존에 대한 권한을 가지고 있다. 마스터/슬레이브 구성의 네임 서버의 경우, 보조 네임 서버에서 마스터 네임 서버의 존 파일을 읽어 서비스 한다. 또한 캐싱 기능으로 TTL 값을 이용한다. 한번 들어온 질의에 대하여 응답을 저장해 두고, 같은 질의 시 해당 응답을 돌려준다.
Zone
네임 스페이스 내부의 일부분으로, 해당 존의 네임 서버는 도메인 파일이 아닌 존 파일을 읽는다.
Resolver
OS에 포함된 네트워크 소켓 라이브러리에 포함된 프로그램으로, 브라우저 등 DNS 클라이언트의 요청을 네임 서버로 전달하고, 메인 네임과 IP 주소를 받아 클라이언트에 제공하는 기능을 수행.
-
Recursive DNS
일반적인 재귀적 네임 서버. 클라이언트로 최종 결과값을 반환하며, 리졸버로부터 질의 요청이 들어온 경우, 네임 서버가 직접 탐색하여
결과를 반환한다.
-
Iterative DNS
루트 네임서버, 일부 TLD 네임 서버의 형태. 자신이 직접 관리 하지 않는 질의는 응답이 가능한 네임 서버 목록으로 응답하는 방식.
- PQDN (Partially Qualified Domain Name): 호스트 네임으로 시작하지만 루트 도메인까지 명시되지 않은 도메인.
- FQDN (Fully Qualified Domain Name): 호스트 네임부터 네임 스페이스의 루트까지 표시된 도메인 네임. DNS 존 파일에서는 PQDN과 구분하기 위해 도메인 끝에 마침표를 붙여 FQDN임을 식별한다.
DNS zone, 도메인 네임과 관련된 정보를 갖는 레코드로, 각 값들이 이름과 값으로 바인딩 된다. 이 정보들이 DNS 네임 서버 내에 레코드 집합으로 구성된다. DNS 쿼리에 대해 1개 이상의 레코드 값을 포함한 DNS 메시지를 응답한다.
Record type |
설명 |
NAME |
VALUE |
A |
호스트 네임에 대한 IPv4 주소 |
호스트 네임 |
IP 주소 |
AAAA |
호스트 이름에 대한 IPv6 주소 |
호스트 네임 |
IP 주소 |
NS |
존, 도메인 네임에 대한 권한 네임 서버의 호스트네 임 |
도메인 네임 |
호스트 네임 |
CNAME |
별칭 호스트 네임에 대한 공식 호스트 네임 |
별칭 호스트 네임 |
공식 호스트 네임 |
SOA |
DNS zone 시작. 모든 zone은 1개의 SOA 레코드를 가짐 |
Zone 이름, 마스터 네임 서버 이름, 관리자 메일 주소, 보조 네임 서버의 갱신 시간 등 |
|
PTR |
포인터. IP 주소에 대한 도메인 네임(RDNS) |
4.4.8.8.in-addr.arpa google-public-dns-b.google.com |
|
HINFO |
호스트 정보 |
|
|
MX |
메일 서버 별칭에 대한 호스트 네임 |
메일서버 별칭 |
호스트 네임 |
TXT |
텍스트. 다양한 정보 기입 |
|
-
AXFR (Authoritative Zone
Transfer)
마스터 네임 서버에서 보조 네임 서버로 전체 존 파일을 전송하는 것
-
IXFR (Incremental Zone
Transfer)
존 파일의 이전 값과 비교하여 변경된 부분만 전송하는 것. 권한 서버가 요청 받은 내용이
부족할 경우 무시되고 AXFR 응답을 보낸다.
리소스 레코드는 도메인 네임에 설정할 수 있는 데이터 타입이다. 도메인 네임을 키 값으로 하여 이를 도메인 네임에 필요한 데이터를 설정하는데, 사전에 정의된 데이터 타입과 포맷으로 해야 한다. 도메인 네임과 IP 주소 매치를 위해 사용된다.
-A 리소스 레코드: Host Address란 의미로 도메인 네임에 매치되는 IPv4를 정의한다.
Name |
Class |
TTL |
Type |
Address |
IN |
|
A |
202.xxx.xx.xxx |
Ø Class: IN(InterNet) 외에도 있지만 현재 대부분 IN사용
TTL: 요청된 리소스 리코드는 TTL에 명시된 시간 소요 후 삭제되어 재요청이 필요. 생략 시 SOA 리소스 레코드에 정의된 default
TTL 적용
Ø NS (Name Server) 리소스 레코드: 도메인 존의 네임서버를 정의.
Ø CNAME 리소스 레코드: Canonical
Name. 도메인 네임에 별칭을 매치. 해당
도메인 네임에 대한 리소스 레코드를 동일하게 접근하여 사용하므로, 정보를 CNAME이 상속받는다.
ex) www.naver.com IN
CNAME naver.com 참조 시 naver.com 리소스
레코드를 참조하여 정보를 반환한다.
-SOA 리소스 레코드: Start of a zone Of Authority. 존에 대한 권한 시작을 의미. 하나의 도메인 존에 반드시 하나의 SOA가 존재하는 특수 레코드로, 도메인 존의 default 설정과 마스터 네임 서버 지정 등에 사용된다.
Name |
TTL |
Class |
Type |
Master NS |
Responsible person |
Serial; Refresh; Retry; Expire; Minimum; |
naver.com |
|
IN |
SOA |
ns.naver.com |
admin.ns.naver.com |
(…) |
Name: 상위 도메인 존에게 위임 받은 도메인
존의 도메인 네임
마스터 네임 서버: NS 리소스 레코드와 A 리소스 레코드를 통해 도메인 존에 대한 리소스 레코드 생성, 변경, 삭제 등의 권한을 위임 받음
Responsible person: 도메인 존 관리 담당자 메일 주소
Serial: 도메인 존 파일에 대한 버전 정보. 정보
변경 시 증가. 이 값을 기반으로 슬레이브 네임 서버가 마스터 네임서버의 최신 리소스 레코드 정보를 획득한다.
Refresh: 슬레이브 네임 서버가 마스터 네임서버에 도메인
존 파일 버전을 질의하는 초단위 시간으로, 해당 시간만큼 대기
후 마스터에 질의
Retry: 슬레이브 네임 서버가 마스터 네임 서버에 질의
실패 시 재시도 하는 초 단위 시간으로 Refresh 보다 작은 값 작성
Expire: 슬레이브 네임 서버가 질의 실패 시 마스터로부터 얻은 정보의 유효 시간 초 단위 작성. 해당
도메인 존에 대한 질의 무시
Minimum: 도메인 존 파일에 있는 리소스 레코드들의 default
TTL 값 작성(초 단위)
SOA 끝 필드의 각 설정 값들은 기본 초 단위이며, D, H, W로 각각 일, 시간, 주로 작성 가능하다.
-MX 리소스 레코드: 수신 메일 서버를 정의. 호스트명이나 도메인 네임으로만 정의가 가능하다. IP 주소 입력 시 도메인으로 인식하여 존재하지 않는 도메인이 되어버린다. 레코드 입력 시 마지막에 .을 붙인 FQDN을 사용한다.
'System Engineering > Network' 카테고리의 다른 글
HTTP - 6. Proxy (0) | 2018.07.24 |
---|---|
HTTP - 5. Web Server (0) | 2018.07.24 |
HTTP - GET, PUT, POST (0) | 2018.07.24 |
HTTP - 3. URI, URL (0) | 2018.07.12 |
TCP/IP - 2. IP (0) | 2018.07.10 |