DNSが名前解決する仕組み
2025-02-14
なぜ今更DNS?
近年では、便利なサービスが増える一方で、その裏側で動く技術についての理解が後回しになりがちです。
この記事を通じて、DNSがどのように名前解決を行うのか、その仕組みを理解してくれると嬉しいです。
DNS(Domain Name System)とは
インターネット上で「ドメイン名」と「IP アドレス」を対応付ける仕組みです。
例えば、example.com
というドメイン名を入力すると、対応する IP アドレスを返してくれるので、ブラウザがウェブサイトにアクセスできます。
では、この DNS ではどのように名前解決を行うの具体的に見ていきましょう。
名前解決の流れ
1. キャッシュの確認
キャッシュは以下の 4 つのレイヤーで確認し、キャッシュが存在すれば名前解決が完了し即座に IP アドレスを取得します。
- ブラウザキャッシュ
- 過去にアクセスした Web サイトのドメインと IP アドレスの対応を保持
- ブラウザ内部でキャッシュ情報を確認し即座に IP アドレスを返すことが可能
- OS キャッシュ
- OS が持つ DNS クエリ結果のキャッシュ情報を確認
- Windows の場合
ipconfig /displaydns
コマンドで確認 - macOS の場合
dscacheutil -cachedump -entries
で確認可能
- ルーターキャッシュ
- 自宅やオフィスのルーターが持つ DNS キャッシュを確認
- ルーター設定画面から確認・リセットが可能
- リゾルバのキャッシュ(ISPや企業のDNSサーバー)
- ISP や企業の DNS リゾルバも過去の問い合わせ結果を一定期間保持し、再利用することで応答時間を短縮
2. リゾルバの問い合わせ(再帰的・反復的)
- キャッシュがなければISPのDNSリゾルバに問い合わせ
- リゾルバはDNSクエリを処理する専用サーバであり、ISP が提供するリゾルバが最初に問い合わせを受け付ける役割を持つ
- 再帰問い合わせ: クライアントがリゾルバに完全な解決を依頼(通常のWebアクセスで利用)
- 反復問い合わせ: リゾルバが各DNSサーバーに順次問い合わせ、自分で情報を取得する(DNSの内部動作)
3. ルート DNS サーバーへの問い合わせ
- リゾルバはルートDNSサーバーに問い合わせ
- ルートDNS サーバーはドメイン階層構造の最上位に位置しトップレベルドメイン(TLD)サーバーの情報を提供
4. TLD(Top-Level Domain)サーバーへの問い合わせ
- リゾルバはルートDNSサーバーが返した情報をもとにTLDサーバーへ問い合わせ
- TLD サーバーは
.com
.jp
など各トップレベルドメインを管理 - 該当する権威 DNS サーバーの場所を返す
5. 権威 DNS サーバーへの問い合わせ
- リゾルバはTLDサーバーの情報を使い権威DNSサーバーに問い合わせ
- 権威DNSサーバーは該当ドメインに関する正式なIPアドレスを返す
- IPアドレスはこのサーバーで初めて確定する
- 一部の権威DNSサーバーもキャッシュを持ち、頻繁な問い合わせに対して応答速度を向上
6. 名前解決の完了
- リゾルバは取得したIPアドレスをクライアントに返す
- クライアントは受け取ったIPアドレスを使用し、該当するサーバーにHTTPリクエストを送信
- Webページがブラウザに表示される
名前解決の流れの図解イメージ
text
クライアント
↓ 再帰問い合わせ
リゾルバ
↓ 反復問い合わせ
ルートDNS
↓
TLD DNS (.com / .jp)
↓
権威DNS(example.com)
↓
リゾルバ
↓
クライアント
具体例での流れ
- クライアント のブラウザで
https://www.example.com
を開く - クライアント が DNS リゾルバに
www.example.com
の IP アドレスを問い合わせる - リゾルバがルート DNS、TLD DNS、権威 DNS と順に問い合わせて IP アドレスを取得
- ブラウザが IP アドレス(例えば
93.184.216.34
)にアクセスしてウェブサイトを表示
まとめ
DNS は、ドメイン名と IP アドレスを対応付ける仕組みであり、キャッシュを活用しながら効率的に名前解決を行います。
- キャッシュの確認 → ブラウザ・OS・ルーター・リゾルバのキャッシュを優先
- リゾルバの問い合わせ → ISP や企業の DNS リゾルバが問い合わせを担当
- ルートDNS → TLD DNS → 権威DNS の順で検索し、最終的な IP アドレスを取得
DNS の仕組みを理解することで、ネットワークトラブルの原因特定やパフォーマンス改善に役立ちます。
実際に nslookup や dig を使って、自分の環境で DNS の動作を確認してみるのもおすすめです。