名前解決の仕組み
ストーリー
「先輩、DNSがドメイン名をIPアドレスに変換するのは分かりました。でも、具体的にどういう順番で調べるんですか?」
「いい質問だね。実はDNSの名前解決って、何段階ものステップを経ているんだ」
「何段階も!?」
「でも心配しないで。一度流れを理解すれば簡単だよ」
名前解決(DNS Resolution)とは
ドメイン名からIPアドレスを調べることを 名前解決 と呼びます。
www.example.com → 名前解決 → 93.184.216.34
名前解決の全体フロー
www.example.com にアクセスしたときの流れ:
Step 1: ブラウザのキャッシュを確認
↓ (見つからない)
Step 2: OSのキャッシュ・/etc/hostsを確認
↓ (見つからない)
Step 3: DNSリゾルバに問い合わせ
↓ (キャッシュにない)
Step 4: ルートDNSサーバーに問い合わせ
↓ 「.comのTLDサーバーはこれだよ」
Step 5: .com TLDサーバーに問い合わせ
↓ 「example.comの権威サーバーはこれだよ」
Step 6: example.comの権威DNSサーバーに問い合わせ
↓ 「www.example.comのIPは93.184.216.34だよ」
Step 7: DNSリゾルバがキャッシュして、結果を返す
↓
Step 8: ブラウザがIPアドレス宛てに接続
各ステップの詳細
Step 1〜2: ローカルキャッシュの確認
まず、一番近い場所(自分のPC)に答えがないか確認します。
[ブラウザ]
「www.example.com のIPアドレスを知ってる?」
→ キャッシュにある → すぐにIPアドレスを使う
→ キャッシュにない → OS に聞く
[OS]
/etc/hosts を確認 → あればそれを使う
OSのDNSキャッシュを確認 → あればそれを使う
→ どちらにもない → DNSリゾルバに聞く
Step 3: DNSリゾルバへの問い合わせ
PCが設定されているDNSサーバー(通常はISPのDNSサーバー)に問い合わせます。
[あなたのPC] → 「www.example.com のIPは?」 → [DNSリゾルバ]
DNSリゾルバのキャッシュにあればここで解決。なければ次のステップへ。
Step 4: ルートDNSサーバーへの問い合わせ
[DNSリゾルバ] → 「www.example.com のIPは?」 → [ルートDNSサーバー]
[ルートDNSサーバー] → 「.com はこのTLDサーバーに聞いて」
ルートサーバーは「.com」「.jp」「.org」 などの管理先を知っています。
Step 5: TLDサーバーへの問い合わせ
[DNSリゾルバ] → 「www.example.com のIPは?」 → [.com TLDサーバー]
[.com TLDサーバー] → 「example.com はこの権威サーバーに聞いて」
TLDサーバーは「example.com」の権威サーバーの場所を知っています。
Step 6: 権威DNSサーバーへの問い合わせ
[DNSリゾルバ] → 「www.example.com のIPは?」 → [example.com 権威サーバー]
[権威サーバー] → 「93.184.216.34 だよ」
権威サーバーが最終的な「 正解」を返します。
Step 7〜8: 結果の返却と接続
[DNSリゾルバ] → キャッシュに保存
[DNSリゾルバ] → 「93.184.216.34 だよ」 → [あなたのPC]
[ブラウザ] → 93.184.216.34 に接続 → Webページが表示される
再帰問い合わせと反復問い合わせ
再帰問い合わせ
PCがDNSリゾルバに「答えを見つけてきて」と丸投げする方式。
[PC] → 「www.example.com のIPを教えて」 → [リゾルバ]
← 「93.184.216.34 だよ」 ←
反復問い合わせ
DNSリゾルバがルート→TLD→権威サーバーに順番に聞いていく方式。
[リゾルバ] → ルート → 「.com TLDに聞いて」
[リゾルバ] → .com TLD → 「権威サーバーに聞いて」
[リゾルバ] → 権威 → 「93.184.216.34 だよ」
通常、PCからリゾルバへは再帰問い合わせ、リゾルバから各DNSサーバーへは反復問い合わせが使われます。
名前解決にかかる時間
キャッシュがある場合
所要時間: 1ms 以下
キャッシュにヒットすれば、ほぼ瞬時に解決します。
キャッシュがない場合(フル解決)
所要時間: 20〜100ms程度
ルートサーバーから順番に問い合わせるため、少し時間がかかります。
実感
通常はキャッシュのおかげで遅延を感じることはありません。ただし、初めてアクセスするサイトや、キャッシュが切れた直後は少し遅く感じることがあります。
逆引き(Reverse DNS)
通常の名前解決は「名前→IPアドレス」ですが、逆に「IPアドレス→名前」を調べることもできます。
正引き: www.example.com → 93.184.216.34
逆引き: 93.184.216.34 → www.example.com
逆引きはメールサーバーの認証やログの分析で使われます。
まとめ
| ポイント | 内容 |
|---|---|
| 名前解決 | ドメイン名からIPアドレスを調べること |
| 解決の順序 | キャッシュ → リゾルバ → ルート → TLD → 権威 |
| キャッシュ | 結果を一時保存して高速化 |
| 逆引き | IPアドレスからドメイン名を調べること |
チェックリスト
- 名前解決の流れを順番に説明できる
- DNSリゾルバの役割を理解した
- ルート→TLD→権威サーバーの階層を理解した
- キ ャッシュが名前解決を高速化することを理解した
次のステップへ
名前解決の仕組みが理解できましたね。
次のセクションでは、DNSレコードの種類 を学びます。Aレコード、CNAMEレコードなど、DNSにはさまざまな情報が登録されています。
推定読了時間: 30分