はじめに
Webブラウザーへ https://example.com/ と入力すると、ブラウザーは example.com という文字列をそのまま通信先にしているわけではありません。ネットワークで通信するには、通信先を示すIPアドレスを確認する必要があります。
この確認に使われる仕組みがDNSです。この記事では、再帰リゾルバーがDNSの階層をたどってIPアドレスを調べる流れを解説します。読了後には、再帰問い合わせと反復的な名前解決の役割を区別し、キャッシュが問い合わせを減らす理由を説明できるようになります。
DNSとは
DNS(Domain Name System)は、ドメイン名に関する情報を階層的かつ分散して管理し、問い合わせに応じて必要な情報を返す仕組みです。Web通信では、example.com のようなドメイン名からIPv4アドレスやIPv6アドレスを調べるために利用されます。この処理を名前解決と呼びます。
DNSが管理するのはIPアドレスだけではありません。メールの配送先、別名、ゾーンを担当するDNSサーバーなども、用途ごとのDNSレコードとして登録されます。DNSは単なる変換表ではなく、インターネット上の名前に関する情報を分担して管理する仕組みです。
DNSを含むアプリケーション層の位置づけは、アプリケーション層とは?OSI・TCP/IPモデルでの役割を解説で解説しています。
ドメイン名は階層構造で管理される
ドメイン名は、右側ほど上位になる階層構造を持ちます。例えば www.example.com では、com がトップレベルドメイン(TLD)、example がその配下のドメイン、www がさらに下位の名前です。階層の最上位には、通常は末尾の点として省略されているルートがあります。
DNSの名前空間全体を1台のサーバーで管理するのではなく、管理範囲を分けて運用します。この管理単位がゾーンです。各ゾーンの正式な情報を保持し、その範囲について権威のある回答を返すサーバーを権威DNSサーバーと呼びます。
上位のゾーンは、下位のゾーンを担当する権威DNSサーバーを示します。この委任により、ルートからTLD、その配下のドメインへ管理を分担しながら、必要な情報までたどれます。
DNSで名前解決する流れ
端末がWebサイトへ接続するときの一般的な名前解決は、次の流れで進みます。ここでは、端末やブラウザーなどの細かな実装差を除き、基本的な役割へ絞ります。
- ブラウザーなどのアプリケーションが、OSの名前解決機能へ
www.example.comのIPアドレスを求めます。 - 端末側で名前解決の問い合わせを中継するスタブリゾルバーが、再帰リゾルバーへ問い合わせます。
- 再帰リゾルバーは、キャッシュに利用できる回答があるか確認します。
- キャッシュに回答がなければ、ルートDNSサーバーへ問い合わせ、対象TLDを担当するDNSサーバーの情報を受け取ります。
- TLDのDNSサーバーへ問い合わせ、対象ドメインを担当する権威DNSサーバーの情報を受け取ります。
- 権威DNSサーバーへ問い合わせ、AレコードやAAAAレコードなどの回答を取得します。
- 再帰リゾルバーは回答を端末へ返し、端末は得られたIPアドレスを使って通信を開始します。

再帰問い合わせと反復的な名前解決の違い
端末から再帰リゾルバーへの問い合わせでは、端末は「最終的な回答を返してほしい」と依頼します。再帰リゾルバーは、キャッシュまたはほかのDNSサーバーへの問い合わせを使って回答を用意し、端末へ返します。これが再帰問い合わせです。
ルートやTLDのDNSサーバーは、問い合わせ対象の最終的なIPアドレスをすべて保持しているわけではありません。代わりに、回答を知っている可能性が高い下位のDNSサーバーを示します。再帰リゾルバーが、その参照先へ非再帰的な問い合わせを繰り返して権威DNSサーバーまでたどる処理が、反復的な名前解決です。
つまり、端末は再帰リゾルバーへ最終回答を求め、再帰リゾルバーが参照情報をたどります。端末がルートから順番にすべてのDNSサーバーへ問い合わせるわけではありません。
DNSキャッシュが問い合わせを減らす仕組み
再帰リゾルバーは、名前解決で得たDNSレコードや委任情報をキャッシュへ保存します。同じ情報が再び求められたとき、利用できるキャッシュがあれば、ルートから問い合わせをやり直さずに回答できます。これにより、応答時間とDNSサーバーへの問い合わせ回数を減らせます。
各DNSレコードには、キャッシュで再利用できる期間を示すTTL(Time To Live)が設定されます。通常はTTLが有効な間はキャッシュを利用し、期限後に必要となった時点で新しい情報を問い合わせます。そのため、権威DNSサーバーの登録内容を変更しても、以前の情報がしばらく利用されることがあります。
キャッシュは、OSやブラウザーなどにも存在する場合があります。DNSの変更がすぐにすべての利用者へ反映されないときは、複数の場所に保持されたキャッシュも考慮が必要です。
DNSで管理する主な情報
DNSでは、情報の種類をDNSレコードで区別します。名前解決やサービスの宛先確認でよく使われる主なレコードは次のとおりです。
| レコード | 主な役割 |
|---|---|
| A | ドメイン名に対応するIPv4アドレスを示す |
| AAAA | ドメイン名に対応するIPv6アドレスを示す |
| CNAME | 別名に対応する正規名を示す |
| MX | そのドメイン宛てのメールを受け取るメールサーバーを示す |
| NS | ゾーンを担当する権威DNSサーバーを示す |
Webサイトへの接続では、AレコードまたはAAAAレコードから通信先のIPアドレスを確認します。IPv4アドレスの基本は、IPv4アドレスとは?ネットワーク部・ホスト部とサブネットマスクを解説で解説しています。
DNSとHTTP通信の関係
DNSとHTTPは、Web通信の中で異なる役割を持ちます。DNSはドメイン名から通信先のIPアドレスを確認する仕組みであり、Webページの内容を要求したり返したりするプロトコルではありません。
通信先を確認した後、ブラウザーはWebサーバーへHTTPリクエストを送り、WebサーバーはHTTPレスポンスを返します。この続きは、HTTP通信の仕組みとは?リクエストとレスポンスの流れを解説で解説しています。
まとめ
DNSは、ドメイン名に関する情報を階層的かつ分散して管理し、問い合わせに応じて必要なDNSレコードを返す仕組みです。Web通信では、ドメイン名に対応するIPアドレスを調べる名前解決に利用されます。
端末は再帰リゾルバーへ最終的な回答を求め、再帰リゾルバーはキャッシュを確認したうえで、必要に応じてルート、TLD、権威DNSサーバーの順に参照先をたどります。取得した情報はTTLに従ってキャッシュされ、同じ問い合わせを効率化します。
コメント