ユーザーがホームページ閲覧やメール等でインターネットへのアクセスを開始すると、リゾルバは通信相手のIPアドレスをネームサーバーに問い合わせ、ネームサーバーは他のネームサーバーと連携して要求された情報を検索します。
問い合わせは着眼点によっていくつかの種類に分類できます。
DNSはドメイン(ホスト)名とIPアドレスを扱うデータベースで、問い合わせによってユーザーの求める情報が検索されます。何を検索対象とするかによって、問い合わせは〈正引き〉と〈逆引き〉に分類できます。
- 正引き (forward mapping)
ドメイン(ホスト)名をキーとしてAレコードを検索し、IPアドレスを得ます。
- 逆引き (reverse mapping)
IPアドレスをキーとしてPTRレコードを検索し、ドメイン(ホスト)名を得ます。
問い合わせのタイプに、反復的(iterative)問い合わせと再帰的(recursive)問い合わせの2つのタイプがあります。
両者の違いは問い合わせを受けたネームサーバーが、要求された情報を持っていなかった時の動作にあります。それぞれの問い合わせによるネームサーバーの動作は次のようになります。
- 反復的問い合わせ
- 問い合わせが自ゾーンに関するものであれば、そのデータを返します。
- 答えが見つからない場合、問い合わせドメイン名に近いネームサーバー名とIPアドレスを、ローカルデータから探して参照先として返します。別のネームサーバーに問い合わせることはしません。
- 要求元のネームサーバーは参照先を使って名前解決処理を続行します(返された参照先へ同じ問い合わせを送ります)。
- 再帰的問い合わせ
- 問い合わせが自ゾーンに関するものであれば、そのデータを返します。
- 答えが見つからない場合は、他のネームサーバーに反復的な問い合わせを繰り返し、最終的な回答(IPアドレス、もしくはドメイン名が存在しないエラー)を得て要求元に返します。このような同じ処理の繰り返しを再帰(的処理)といいます。
- 最初の問い合わせ先は、要求ドメイン名に近い情報を自分のキャッシュから検索します。該当する情報があればそのネームサーバーからスタートしますが、なにも手掛かりがなければルートネームサーバーからスタートします。
ユーザーが要求している情報を連携して検索するリゾルバとネームサーバーは、役割によっていくつかに分類されます。
ユーザーの機器に実装されている名前解決用のソフトウェアを、スタブリゾルバといいます。
アプリケーション(ブラウザやメーラー等)から名前解決の依頼を受けると、問い合わせ用のフォーマットに変換し、あらかじめ設定されているローカルネームサーバーに送信します。
ローカルネームサーバーから回答を受信すると、フォーマットを戻してアプリケーションに返します。
スタブリゾルバの出す問い合わせは再帰的問い合わせです。自身で名前解決する機能は持っていません。単にリゾルバと言った場合スタブリゾルバを指します。
ローカルネームサーバーをこのようにも呼びます。
DNSでは名前解決を依頼するソフトウェアをリゾルバと言います。スタブリゾルバから問い合わせを受けたローカルネームサーバーは、他のネームサーバーへの問い合わせを繰り返して名前解決を図ります。こうした自身で解決するリゾルバとしての働きからフルサービスリゾルバと呼ばれています。
スタブリゾルバから再帰的問い合わせを受けると、自分の持っている情報(キャッシュ及びローカルデータ)を検索し、該当情報をスタブリゾルバへ返信します。
該当する情報がない時は、ドメイン名空間の逆ツリー構造をたどるように他のネームサーバーへ反復的問い合わせを繰り返し、要求された情報を得てスタブリゾルバへ返信します。逆ツリー構造をたどる時は、利用できるキャッシュがあれば利用します。
各ネームサーバーへ問い合わせた結果はキャッシュとして保存し、同様の問い合わせに対してはキャッシュを利用します。
キャッシュネームサーバー(cache name server)とも呼ばれます。
ローカルネームサーバーはプロバイダや企業ネットワークが用意し、そのIPアドレスはプロバイダ契約者や企業内のパソコン(あるいはルータ)にDNSサーバーとして設定します。このIPアドレスをスタブリゾルバが参照します。
ローカルネームサーバーの役割は、限られたクライアントからの問い合わせに応えることにあります。不特定のクライアントから名前解決依頼を受けて、負荷の増大や予期せぬトラブルに遭わないため、一般的にはアクセスを許容するクライアントの範囲を契約者や社員に限定(アクセス制御)します。
ローカルネームサーバーは通常、ゾーンの権威を持ちません。
自ゾーンのゾーンデータを管理しゾーンに権威を持っています。自分が管理し権威を持っている情報に対する問い合わせにのみ回答を返します。
権威ネームサーバーは次の順序で該当する情報を返します。
- 自分が管理しているゾーン内のサブドメイン、ホストに関する問い合わせには、該当する資源レコードを返します。
- 委任しているゾーンへの問い合わせには、委任先のネームサーバー名とIPアドレスに関する資源レコードを返します。
- どちらも該当しない時は"情報なし"を返します。
ドメイン名空間最上位に位置し名前解決の起点となる権威ネームサーバーです。
登録されているルートネームサーバーの名称は13件(アメリカ10、ヨーロッパ2、日本1)ですが、複数のサーバーで同一名称(ホスト名とIPアドレス)を共有できるIPエニーキャスト(IP Anycast)を使って負荷分散・地域分散を行い、世界中の200以上のサイトで運用されています。
日本の組織に割り当てられているルートネームサーバーのホスト名は m.root-servers.net で、関連する資源レコードは次のように公開されています。
. | 518400 | IN | NS | m.root-servers.net. |
m.root-servers.net. | 3600000 | IN | A | 202.12.27.33 |
これと同じ名称・IPアドレスのルートネームサーバーは他の地域(国)にも存在し、もちろん日本にも他地域と同じルートネームサーバーがあります。ルートネームサーバーの配置は
Root Server Technical Operations Assnで見ることができます。
参照先の選択は問い合わせ元が行います。