まずは用語の整理
ドメイン空間
.comや.jp等のトップレベルドメインを含む「ドメイン」で表現されるツリー構造の全てを表現する言葉
ゾーン
ゾーンはドメイン空間の中の一部を表す言葉。example.jpゾーンは/jp/example配下の空間を表現する。
ネームサーバ
ドメインを問い合わせると、紐づけられた情報を返却するサーバの総称。主として二つの機能を持つが、どちらも同じプロトコルを用いる
権威サーバ
ゾーンについての一次情報を返却する。
キャッシュサーバ
自身ではゾーンを管理せず、他のDNSサーバ(権威サーバまたはキャッシュサーバ)に再問合わせを行い、結果を返却する。
一度問い合わせた結果は「一定時間」保持し、再度問い合わせを受付けた場合は別のDNSサーバに問い合わせることなく、有効期限内のゾーン情報を返却する。
キャッシュの機能を持たず、再問合わせを行うシステムは特に「リゾルバ」と呼ばれる。
ラベル
63バイト以下
ドメイン名の最小構成要素。
[名前] == [ラベル].[ラベル].[ラベル]
名前
255バイト以下
TTL
符号付32bitの整数。正の値に限定される。(なんで符号付なんや……)
UDPメッセージ
512バイト以下
リソースレコード(RR)
特定のドメイン名における情報。実際にDNSをユーザが使用する際にはここを参照する事を目的にしている事が多い。
一つのRRは少なくとも[タイプ][クラス][TTL]の三要素以上で構成される
タイプ
A
一番よく使うアレ。ドメイン名とIPアドレスを直接紐づける。IPv6はAAAAを用いるが今回はIPv4を考えるため気にしない。
CNAME
昔はよく使ったアレ。Aレコードに対してシンボリックリンクのように別名をつけるのに使う。
一つのIPアドレスに対して複数のAレコードが設定できるため、実はあまり使い道が無い。
HINFO
ホストが使用するCPUとOSを表現する。こんなの使ったことない。
MX
電子メールのエクスチェンジを設定する。MXレコードはさらに優先度を設定する。数値が小さいほうが優先のため、優先度0が最優先。
PTR
別のゾーンを含む、ドメイン名空間の別の場所へのポインタ(これではちょっと意味が分からない……)
一般的には逆引きアドレスを表現するのに用いられる。
SOA
このRRが所属するゾーンの情報が記載される。
[権威サーバ(MNAME)] [管理者メールアドレス(RNAME)] (
[シリアル(SERIAL)]
[リフレッシュ時間(REFRESH)]
[リトライ時間(RETRY)]
[有効期限(EXPIRE)]
[ネガティブキャッシュの有効期限(MINIMUM)]
)
- SERIAL: 大きければ優先。整数のみ
- REFRESH: ゾーン情報の有効期限
- RETRY: REFRESHが失敗した場合、何秒後に再取得を試みるか
- EXPIRE: REFRESHが失敗した場合、何秒間古い情報を持ち続けるか
- MINIMUM: 存在しないドメインについての情報について「存在しない」という情報を何秒間持ち続けるか
CLASS
プロトコルを指定する。インターネット用にはINが用いられるので、普段見るのはINのみのはず。
IN
インターネットシステム。よく見る。
CH
CHAOSシステム。
ちょっと意味が分からないので後でもうちょい調べる。
今回の目的はGSuiteの無料版使ってて個人利用申請し忘れてたので、自前でサービス作るのに必要かな、というところなのでこの辺で。
MX,A,NSとラベル,RRの概念を理解できれば大丈夫。
でもDKIMとかSPFもDNS使った技術なのよね。
この辺はDNSというより電子メール関連の技術扱いなのか。