DNSとは
DNSは、ドメイン名などの名前を、IPアドレスをはじめとする通信に必要な情報へ対応付ける分散型の名前解決システムです。正式名称はDomain Name System(ドメイン・ネーム・システム)です。
DNSは、ドメイン名などの名前を、IPアドレスをはじめとする通信に必要な情報へ対応付ける分散型の名前解決システムです。
一つの巨大な名簿を一社が持つのではなく、名前空間を階層に分け、それぞれの管理者が担当範囲の情報を提供します。名前を尋ねる段階と、得られたIPアドレスへ実際に接続する段階は別です。DNSの応答が得られても、Webサーバーとの通信が成功するとは限りません。

端末から見える問い合わせ先と、情報の管理者を分ける
- スタブリゾルバー
- 端末のOSにある名前解決機能です。設定された再帰リゾルバーへ問い合わせを渡し、アプリへ結果を返します。
- 再帰リゾルバー
- 端末に代わって必要なDNSサーバーをたどり、最終的な答えを集めます。家庭用ルーターが中継窓口に見える場合もあります。
- 権威DNSサーバー
- 担当するゾーンの正式な情報を保持し、その範囲について権威のある応答を返します。
再帰リゾルバーは通信事業者、組織、公開DNSサービスなどが提供します。一方、権威DNSサーバーは調べる名前の管理者側にあります。同じ「DNSサーバー」でも、利用者の代わりに調べる役と、正式な情報を提供する役は異なります。
ルートは答えを全部持たず、次の担当を案内する
- 1端末 → 再帰リゾルバー
調べたい名前とレコードの種類を問い合わせます。
- 2ルートDNS
対象のトップレベルドメインを担当するサーバーを案内します。
- 3TLDのDNS
対象ドメインを担当する権威DNSサーバーを案内します。
- 4権威DNS
管理中のレコードから答え、または別名への対応を返します。
- 5再帰リゾルバー → 端末
得た結果を返し、再利用できるよう一定期間保存します。
.jpや.comのようなルート直下の階層です。委任ではNSレコードと、必要に応じてそのサーバーへ到達するためのグルー情報が使われます。DNSは、IPアドレス以外の情報も扱う
AIPv4アドレス名前に対応するIPv4アドレスを示します。
AAAAIPv6アドレス名前に対応するIPv6アドレスを示します。
CNAME別名ある名前が指す正規名を示します。
MXメール配送先そのドメインのメールを受け取るサーバーを示します。
NS権威サーバーゾーンを担当するDNSサーバーを示します。
TXT文字列情報ドメインの検証やメール方針など、用途ごとの文字列を保持します。
DNSのデータ単位をResource Record(リソース・レコード)と呼びます。一つの名前に複数のAやAAAAレコードがあることも、問い合わせた種類のレコードが存在しないこともあります。「DNSは名前を一つのIPへ変換するだけ」とすると、この広がりを説明できません。
キャッシュは速くするが、変更をすぐには反映しない
各レコードにはTTL(Time To Live/タイム・トゥー・リブ)があり、再帰リゾルバーなどが結果を再利用できる時間を秒単位で示します。TTLが残っている間は権威サーバーへ毎回尋ねずに答えられるため、応答が速くなり負荷も減ります。
権威側のレコードを変更しても、以前の値を保存しているキャッシュはTTLが切れるまで古い答えを返すことがあります。これは必ずしも故障ではありません。また、存在しないという結果も一定期間キャッシュされる場合があります。
URL、検索欄、DNS問い合わせは別の処理
URLにはスキーム、ホスト、パスなどが含まれます。DNSが主に扱うのは、その中のホスト名に関係する情報です。/articles/guideのようなパスをDNSへ問い合わせるわけではありません。
ブラウザのアドレス欄へ一般的な語句を入力した場合、ブラウザが検索サービスへのURLを組み立てることがあります。それはDNSが語句の意味を検索しているのではありません。DNSは、接続に使う名前について指定された種類のレコードを調べます。
仕様の確認資料:RFC 1034「Domain Names — Concepts and Facilities」、RFC 1035「Domain Names — Implementation and Specification」、RFC 3596「DNS Extensions to Support IP Version 6」