참고한 것들
Resource Record?
- 간단하게 말하면 DNS 가 일종의 Key-value DB 니까 DB entry 정도라고 생각하면 된다.
Structure
1 1 1 1 1 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| |
/ /
/ NAME /
| |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| TYPE |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| CLASS |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| TTL |
| |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| RDLENGTH |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--|
/ RDATA /
/ /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
NAME- KV 의 Key 에 해당 - Domain 을 뜻한다.
TYPE- 이건 Record Types 에서 설명해주지
CLASS- 레코드에 대한 class 인데..
IN(Internet -0x01) 값만 사용된다.
- 레코드에 대한 class 인데..
TTL- Time-to-live: 보통 DNS 는 Recursive resolver 같은데에서 캐싱을 하기 때문에, 이 캐싱을 얼마나 할 것인가를 나타내는 값이다.
RDLENGTHRDATA의 길이.RDATA가 고정된 길이를 가지지 않기 때문에, 몇 바이트를 읽어야 하는지 명시하는 필드이다.
RDATA- 레코드의 실질적인 내용이 들어가는 곳.
TYPE에 따라 포맷이 달라진다.
Record Types
- 솔직히 이걸 다 설명하기는 좀 그릏고 흔히 사용되는 애들이나 좀 정리해 보자.
- RFC1035 에 있는 type 들을 전부 다 보여주면 다음과 같다:
| TYPE | VALUE | DESCRIPTION |
|---|---|---|
| A | 1 | A host address |
| NS | 2 | An authoritative name server |
| MD | 3 | A mail destination (Obsolete - use MX) |
| MF | 4 | A mail forwarder (Obsolete - use MX) |
| CNAME | 5 | The canonical name for an alias |
| SOA | 6 | Marks the start of a zone of authority |
| MB | 7 | A mailbox domain name (EXPERIMENTAL) |
| MG | 8 | A mail group member (EXPERIMENTAL) |
| MR | 9 | A mail rename domain name (EXPERIMENTAL) |
| NULL | 10 | A null RR (EXPERIMENTAL) |
| WKS | 11 | A well known service description |
| PTR | 12 | A domain name pointer |
| HINFO | 13 | Host information |
| MINFO | 14 | Mailbox or mail list information |
| MX | 15 | Mail exchange |
| TXT | 16 | text strings |
A, AAAA
- 어떤 domain 에 대한 IP 주소를 저장하는 레코드 타입이다.
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ADDRESS |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
ADDRESS: IP 주소를 저장하기 위한 32bit (8bit * 4) 필드 하나만 가진다.
NS
- Iterative resolve 를 할때 상위 zone 은 하위 zone 의 정보를 알려줘야 하기 때문에 하위 zone 의 nameserver 들을 알고 있어야 한다.
- 따라서 상위 zone 은 이
NS레코드 타입으로 해당 정보를 저장하고 query 가 왔을 때 응답해주게 된다.
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/ NSDNAME /
/ /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
NSDNAME: Nameserver 의 domain name 를 저장한다.- 즉, nameserver 의 IP 주소가 아닌 domain 을 저장하기에, 해당 domain 에 대한 A 레코드도 상위 zone 이 함께 갖고 있게 된다.
- 자세한 것은 Zone Delegation 문서를 참고하자.
CNAME
- Canonical name. Alias 라고 생각하면 된다.
- 즉, 이놈이 응답이 오면 “이놈은 이 domain 의 alias 입니다~” 라는 뜻으로 받아들이면 된다.
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/ CNAME /
/ /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
CNAME: 간단하게 원래의 domain 만 저장하는 필드 하나만 있다.
PTR
- Reverse query 라고 생각하면 된다.
- 즉, IP 로 domain 을 알아내고자 할 때 사용되는, A, AAAA 타입의 반대.
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/ PTRDNAME /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
PTRDNAME: IP 에 대한 domain 을 저장하는 필드 하나밖에 없다.