- DNS는 거대한 분산 데이터베이스 시스템이며, 도메인 네임 스페이스는 이 DNS가 저장, 관리하는 계층적 데이터베이스이다.
- 도메인 네임 스페이스는 최상위 호스트인 루트가 존재하고 그 밑으로 인터넷에 연결된 모든 호스트가 트리 형태로 연속해서 이어진 계층 구조이다.
- 도메인 네임 스페이스의 호스트는 크기가 최대 63바이트인 레이블을 이름으로 갖는데 루트 호스트는 크기가 0인 널 레이블(null Label)을 가지므로 이름이 없는 것이나 마찬가지이다.
- 도메인 이름은 점(.)으로 구분한 호스트 레이블의 연속으로 표현한다.
ex)www.korea.co.kr이라는 도메인 이름은 루트 밑으로 kr, co, korea, www 호스트가 순차적으로 연결된 상태를 의미하고, www.korea.co.kr은 트리 구조의 제일 밑에 위치한 www 호스트의 도메인 이름이다.
도메인 네임 스페이스의 구조
- 계층 구조의 네임스페이스에서 호스트의 각 레이블은 점(,)으로 구분하고, 최상위부터 순차적으로 계층적 소속 관계를 나타낸다.
- 최상위 레이블은 기구의 성격, 그 아래 레이블은 기구의 이름, 그 밑으로는 기구 내부에 있는 단위 조직의 이름이다.
ex) media.korea.com도메인 이름에서 com은 기구의 성격, korea는 기구 이름, dedia는 기구 내부의 하부 조직 이름을 나타낸다. 따라서 도메인 이름이 media.korea.com인 호스트의 소속 관계를 쉽게 확인할 수 있다. 하위 기구의 네임 스페이스를 할당하고 관리하는 방식은 각 하위 기관의 네트워크 관리 책임자에게 위임된다.
- 도메인 네임 스페이스는 계층적인 트리 구조를 지원한다.
- 도메인 이름은 최하위 호스트의 레이블을 맨 위쪽에 두고, 상위 노드로 이동하면서 점(.)으로 구분한 레이블 이름을 연속으로 붙인다. 예를 들어, 최하위에 위치한 xx호스트의 도메인 이름은 xx.lcs.mit.edu이다. edu와 같이 루트 바로 밑에 위치한 호스트는 TLD(Top Level Domain) 최상위 도메인 이라 부르며 도메인 이름의 맨 오른쪽에 위치한다. 위 이미지에는 mil, edu, arpa라는 TLD 세개가 있음을 알 수 있다.
- 레벨이 같은 호스트는 저마다 이름이 유일해야 한다.
- 도메인이라는 명칭은 도메인 네임 스페이스에서 하부 트리 전체를 의미하며, 해당 도메인의 명칭은 하부 트리의 맨 상위에 위치한 호스트의 도메인 이름이다.
ex) 루트 바로 밑의 edu라는 이름은 호스트 하나에만 부여해야 한다. 반면 레벨이 다르면 이름이 같아도 도메인 이름의 유일성이 보장된다.
ex) 바깥 부분의 edu 도메인과 안쪽 부분의 mit.edu 도메인을 설명한다.
최상위 도메인의 일반 도메인은 조직의 종류에 따라 분류한다.
구분 | 설명 |
net | 네트워크 지원 센터를 포함한 네트워크 관련 기관 |
com | 상업적인 기관 |
biz | com과 유사한 비즈니스 목적의 회사 |
info | 정보 서비스 제공자 |
coop | 협동조합 |
pro | 전문가 관련 기관 |
aero | 항공 관련 기관 |
int | 국제기관 |
edu | 교육기관 |
org | 비영리 기관 |
museum | 박물관 관련 기관 |
gov | 미국의 연방정부 기관 |
mil | 미국의 국방성 기관 |
name | 개인 |
일반 도메인과 별도로 국가 코드 최상위 도메인도 정의해 사용한다. 국가 도메인은 두 글자로 구성된다.
ex) 한국은 kr, 미국은 us, 일본은 jp의 형식으로 정의된다. 인터넷 보급이 미미한 일부 국가에서는 자국 코드를 타국에 배정하는 서비스를 하기도 한다. 이는 .com도메인을 선호함에 따라 .com 도메인이 부족해지면서 특정 국가 코드의 의미가 .com 도메인을 대처하는 장점이 있기 때문이다.
ex) 투발루라는 나라의 국가코드인 tv, 코코스 아일랜드의 cc 등이 이에 속한다. 각 국가에 배정된 TLD를 어떻게 관리하느냐는 해당 국가의 관리자 몫이다.
레이블에 부여된 각 호스트는 도메인 이름을 갖는다. 도메인 이름은 하위 호스트의 레이블부터 시작해 루트에 이르는 경로에 위치한 모든 호스트의 레이블을 점(.)으로 연결한 것이다.
ex) lcs 레이블이 붙은 호스트는 lcs와 루트 쪽 경로에 위치한 mit, edu 레이블을 사용해 lcs.mit.edu라는 도메인 이름을 갖는다.
데이터베이스 서비스
- 인터넷 도메인 네임 스페이스를 계층 구조로 분할함으로써, 도메인 이름을 검색하는 작업이 상대적으로 간단해졌다.
- 전체 도메인 이름과 iP 주소 정보가 하나의 개념적인 저장소를 중심으로 유지, 관리되는 형태이지만, 각 하부 도메인을 관리하는 호스트에 이름, 주소 검색 권한을 위임함으로써 DNS 구조가 단순해진다.
- 귄한을 위임받은 도메인 관리 서버는 자신의 도메인 영역에 있는 모든 호스트에 관한 정보를 적절하게 유지해야 한다.
계층 구조의 네임 서버
DNS 시스템은 전 세계에 흩어져 있는 수많은 서버를 계층 구조 형식으로 관리하며, 호스트에 대한 이름 정보를 이들 서버에 분산되어 저장된다.
- 최상위에 위치한 루트 네임 서버는 mil, edu, arpa처럼 최상위 도메인(TLD)에 관한 정보만 관리한다.
- 최상위 도메인 서버는 mil, edu arpa와 같은 상위 레벨 도메인과 kr, jp와 같은 국가의 상위 레벨 도메인에 대한 관리를 맡는다.
- 이와 같은 권한의 위임 과정은 하부 구조 전체에 대해 재귀적으로 적용된다, 사각형 호스트는 전부 네임 서버이며, 하부에 관리하는 도메인이 존재한다.
- 이웃하는 네임 서버 끼리 정보가 필요할 때는 상위 네임 서버의 중개를 통해 정보를 얻는다.
ex) mil 네임 서버가 arpa 네임 서버가 관리하는 정보가 필요하면 루트 네임 서버의 중개를 통해 정보를 얻는다.
도메인 영역
- 임의의 네임 서버가 관리하는 영역을 존이라 한다. 앞서 설명한 도메인과 존은 의미가 유사하면서도 약간 다르다.
- 특정 네임 서버가 자신의 하위에 위치한 도메인을 전적으로 관리하면 존과 도메인이 동일하지만, 하부에 새로운 도메인이 추가되면 두 영역이 일치하지 않는다.
edu 도메인의 하부에 mit.edu라는 도메인이 존재하므로 edu 도메인에는 edu와 mit.edu 네임 서버가 모두 동작한다. 따라서 edu 도메인에는 서로 구분되는 존이 두 개 존재한다. mit edu 아래에 위치한 노드의 정보는 mit.edu 네임 서버가 전적으로 관리한다.
자원 레코드
- DNS 서비스는 이름과 주소 정보를 저장하기 위한 데이터베이스이므로 레코드 개념이 필요하다. 이를 위하여 자원 레코드(Resource Record)라는 개념을 사용해 DNS 데이터를 저장한다.
- 트리에 연결된 각 호스트는 자원 레코드와 관계되며, 네임 서버의 데이터베이스는 자원 레코드로 구성된다. 따라서 DNS 네임 서버가 DNS 클라이언트인 해석기에 반환하는 데이터는 자원 레코드가 된다.
Name
- 찾고자 하는 가변 길이의 도메인 이름이다. a는 자원 레코드에 보관된 정보가 해당 도메인 이름과 연관되었음을 의미한다. b의 질의 레코드는 원하는 도메인 이름을 기록한 후에 해당 정보를 찾도록 DNS 서버에 요청하는 용도이다.
Type
- 16비트 크기로 자원의 종류를 나타낸다. 주요 자원 레코드의 종류는 아래의 표와 같다.
Class
- 프롵토콜 패밀리를 의미하는데, 인터넷에서는 IN 값을 사용한다.
TTL(Time To Live) 생존기간
- 자원 레코드가 만기될 때까지의 유효 시간을 초 단위로 표시한다. 특정 호스트에 캐시된 정보가 만기되어 버려질 때까지 얼마나 오래 저장되어 사용할 수 있는지를 나타낸다. DNS 클라이언트가 동일한 도메인 이름의 정보를 여러번 요청하는 경우에 반복적으로 네임 서버를 호출하는 현상을 방지한다. 따라서 네트워크 트래픽을 감소시키고 서버의 과부하를 방지할 수 있다.
RD Length(RD 길이)
- 자원 데이터의 길이를 바이트 단위로 나타낸다.
RD(자원 데이터)
- 자원 레코드와 관계된 데이터가 기록되는데, 자원 레코드의 유형 값에 따라 내용의 구성과 크기가 달라진다.
질의 레코드(Query Record)는 DNS 클라이언트가 DNS 서버에 정보를 요구하는 용도로 사용되며, b처럼 Name, Type, Class라는 세 개의 필드로 구성된다.
질의 레코드와 자원 레코드는 DNS 메시지에서 구분되어 사용된다.
도메인 네임 서버는 모든 정보를 자원 레코드에 저장하며, 서로 다른 목적을 달성하기 위해 자원 레코드 유형을 정의한다.
주요 자원 레코드의 유형
유형 | 설명 |
A | 호스트의 IP 주소를 의미하며, 도메인 이름을 IP 주소로 변환하는 데 사용한다. |
NS | 도메인을 관장하는 인증된 네임 서버를 나타낸다. |
CNAME | 별명이 있는 호스트의 정식 이름을 의미한다. |
SOA | 존의 시작을 표시한다. |
WKS | 호스트가 제공하는 네트워크 서비스를 정의한다. |
PTR | 도메인 이름을 가리키는 포인터를 의미하며, IP 주소를 도메인 이름으로 변환하는 데 사용한다. |
HINFO | 호스트 정보를 의미하며, 호스트가 사용하는 하드웨어와 운영체제에 관한 정보를 제공한다. |
DNS 서비스의 주요 목적이 호스트의 도메인 이름과 IP 주소의 연관 관계를 처리하는 것이지만, 여러가지 부수적인 목적을 이루기 위해 다른 데이터도 관리한다. 이 중 중요한 기능이 메일 교환 정보의 활용이다. MX 레코드는 특정 메일 주소로 전송된 인터넷 메일이 다른 주소로 재전송 될 수 있도록 해준다.
DNS의 보안을 위해 다수의 자원 레코드가 정의 되었다.
ex) SIG(Security Signature) , KEY(Security key), NXT(Next Domain)등이 이에 해당된다.
또 다른 특수 용도의 자원 레코드로는 NAPTR(Naming Authority Pointer), IP 버전 6 주소를 위한 AAAA, 텍스트 문자열 저장을 위한 TXT 등이 있다.
Reference
쉽게 배우는 데이터 통신과 컴퓨터 네트워크
https://soso-hyeon.tistory.com/112
[쉽게 배우는 데이터 통신과 네트워크] CH14. DNS
01 DNS(Domain Name System) 서비스인터넷의 규모가 커지면서 호스트 파일을 수작업으로 관리할 수 없게 되었고, 이를 계기로 DNS 서비스가 탄생하게 되었다. 1 IP 주소 체계인터넷에서는 32비트의 이진
soso-hyeon.tistory.com
'CS > Network' 카테고리의 다른 글
[Chapter 14] DNS (DNS 프로토콜) (0) | 2025.02.18 |
---|---|
[Chapter 14] DNS (네임 서버와 해석기) (0) | 2025.02.18 |
[Chapter 14] DNS (DNS 서비스) (0) | 2025.02.18 |
[Chapter 13] 웹 WWW(CGI) (0) | 2025.02.18 |
[Chapter 13] 웹 WWW(HTTP) (0) | 2025.02.18 |