DNS(Domain Name System)

更新日:

example.comのような人間が読めるドメイン名を、コンピュータが通信に使うIPアドレスに変換する仕組み。「電話帳」に例えられることが多い。

なぜ必要か

コンピュータ同士の通信は最終的にIPアドレス宛てに行われるが、IPアドレスは数字の羅列で人間には覚えにくい。DNSがあることで、人間はexample.comのような覚えやすい名前を使い、裏側でコンピュータがIPアドレスに変換して通信できる。

階層構造

DNSは1台のサーバーが全てを管理しているわけではなく、階層的に分散管理されている。

. (ルート)
 └─ .com (トップレベルドメイン, TLD)
     └─ example.com (権威DNSサーバーが管理)
         └─ www.example.com (実際のレコード)
  • ルートDNSサーバー: 「.comの情報はここに聞け」と案内する最上位
  • TLD(トップレベルドメイン)サーバー: .com, .jpなどの単位で管理、次にどこへ聞けばよいか案内
  • 権威DNSサーバー: そのドメイン(example.com)の実際のレコードを持つ、最終的な回答者

名前解決の流れ(再帰的問い合わせ)

ブラウザにhttps://example.comと打ってから通信が始まるまでの流れ:

  1. PCがDNSキャッシュ(自分やOSが覚えている過去の結果)を確認。あればそれを使って終了
  2. なければ、通常はキャッシュDNSサーバー(ISPや会社が用意しているもの、多くは再帰的に代行してくれる)に問い合わせる
  3. キャッシュDNSサーバーも知らなければ、ルート→TLD→権威DNSの順に辿って最終的なIPアドレスを取得
  4. 取得したIPアドレスをPCに返し、以降はそのIPアドレス宛てにTCP通信(HTTPなど)を開始

この過程は基本的に[TCP・UDP|UDP]で行われる。小さいデータで素早くやり取りしたいため。

代表的なレコードタイプ

レコード意味
Aドメイン名 → IPv4アドレス
AAAAドメイン名 → IPv6アドレス
CNAME別のドメイン名への別名(エイリアス)
MXメールの配送先サーバー
NSそのドメインを管理する権威DNSサーバー
TXT任意のテキスト情報(ドメイン所有権の証明などに使われる)

関連