各ドメイン名に対して、それぞれ管理するサーバーが決まっています。
例えば、家庭PCからwww.example.jp
にアクセスすることを考えます。
PCは、家庭内のルーター(orホームゲイトウェイ)に内蔵されたDNSサーバーにwww.example.jp
の名前解決を依頼します。
DNSサーバーは、一定時間以内の参照はメモリにキャッシュ保存していますので、そのデータを参照して返しますが、全くJPドメインの参照が初めてだとすると、JPドメインを管理するサーバーをまず調べます。
これは、ルートサーバーと呼ばれるあらかじめDNSサーバーが知っている世界のDNSサーバーの大元のサーバー(同じデータを保持したサーバーが全部で13台あるので、そのどれか)にJPドメインを管理しているDNSサーバーアドレスを問い合わせます。
次にそのJPを管理しているDNSサーバーに、example.jp
を管理しているDNSサーバーを問い合わせます。
その次に、example.jp
を管理しているDNSサーバーにwww.example.jp
のアドレスを問い合わせます。
ということで、根本(ルートサーバー)から順にたどっていくことで一意のサーバーにたどり着きます。
その結果をPCに返します。
参考:ルートサーバーの一つ202.12.27.33
にJPの管理サーバーを問い合わせた例
D:\Temp>nslookup -type=NS jp 202.12.27.33
サーバー: M.ROOT-SERVERS.NET
Address: 202.12.27.33
権限のない回答:
jp nameserver = b.dns.jp
jp nameserver = d.dns.jp
jp nameserver = h.dns.jp
jp nameserver = e.dns.jp
jp nameserver = a.dns.jp
jp nameserver = f.dns.jp
jp nameserver = c.dns.jp
jp nameserver = g.dns.jp
D:\Temp>nslookup a.dns.jp 202.12.27.33
サーバー: M.ROOT-SERVERS.NET
Address: 202.12.27.33
権限のない回答:
名前: a.dns.jp
Addresses: 2001:dc4::1
203.119.1.1
上記は説明をわかりやすくするために簡略化しましたが、実際には家庭内DNSサーバーは、プロバイダのDNSサーバーに丸投げして、プロバイダのDNSサーバーがルートサーバーに問い合わせているのだと思います。プロバイダのDNSサーバーであれば、多くの場合は、キャッシュ上にデータが残っているでしょうから、ルートサーバーやJPのDNSサーバーに実際に問い合わせが行くことは少ないでしょう。