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と打ってから通信が始まるまでの流れ:
- PCがDNSキャッシュ(自分やOSが覚えている過去の結果)を確認。あればそれを使って終了
- なければ、通常はキャッシュDNSサーバー(ISPや会社が用意しているもの、多くは再帰的に代行してくれる)に問い合わせる
- キャッシュDNSサーバーも知らなければ、ルート→TLD→権威DNSの順に辿って最終的なIPアドレスを取得
- 取得したIPアドレスをPCに返し、以降はそのIPアドレス宛てにTCP通信(HTTPなど)を開始
この過程は基本的に[TCP・UDP|UDP]で行われる。小さいデータで素早くやり取りしたいため。
代表的なレコードタイプ
| レコード | 意味 |
|---|---|
| A | ドメイン名 → IPv4アドレス |
| AAAA | ドメイン名 → IPv6アドレス |
| CNAME | 別のドメイン名への別名(エイリアス) |
| MX | メールの配送先サーバー |
| NS | そのドメインを管理する権威DNSサーバー |
| TXT | 任意のテキスト情報(ドメイン所有権の証明などに使われる) |