DNSのドメインと階層構造
DNSでは単一のDNSサーバがすべてのドメイン名を管理しているわけではない(図3)。前述した通り、DNSではルートと呼ばれるドメインを最上位に、複数のドメインがツリー状に構成されている。そして、各ドメイン内での名前解決をDNSサーバが分担している。各DNSサーバには、自ら名前解決できる範囲(ゾーン)が決まっており、それぞれ管理権限が分散されている。そして、名前解決のリクエストに応えられない場合は、他のDNSサーバに名前解決を依頼していく。
DNSの問い合わせを見る
実際のDNSでの問い合わせを見てみよう(図4)。クライアントPCのリゾルバはまずOSのTCP/IPで設定されたローカルのDNSサーバに「www.example.co.jp」のIPアドレスを求める名前解決の依頼を送信する。しかし、ローカルのDNSサーバがwww.example.co.jpのIPアドレスを知らなかった場合は、そのローカルのDNSサーバがリゾルバに代わって、別のドメインのDNSサーバに問い合わせを行なう。この問い合わせは、ドメイン名の右端に位置するルートから順々に実行される。つまり、FQDNの一番右のピリオド(ルート)から調べ、徐々に左側のドメインに移っていくのだ。
リゾルバはツリー構造の最上位にあるルートDNSサーバのアドレスだけは知らされている。そこで、ルートから問い合わせをかけ、TLDのDNSサーバを教えてもらう。そこで、次はjpドメインを管轄するDNSサーバを紹介する。その次にjpドメイン管轄のサーバは、co.jpのDNSサーバを紹介してもらう。そして、最終的にexample.co.jpのDNSサーバにたどり着く。ここにはホスト「www.example.co.jp」のIPアドレスが登録されているはずなので、それを最初にリクエストを受けたローカルDNSに返信する。これを送信元のホストに戻せば、めでたく宛先のIPアドレスを得ることができるわけだ。
つまり、通常は名前解決の依頼が来ても、ホスト名に対応するIPアドレスを知っているDNSサーバまで何度も問い合わせが行なわれるのだ。
名前解決を試してみる
では、Webブラウザを使って冒頭の名前解決の手順を実際に行なってみよう(画面1)。インターネットにつながっているWindows PCから「アクセサリ」-「コマンドプロンプト」を開き、
nslookup asciimw.jp
と入力してみよう。nslookupは、DNSの名前解決を依頼する行なうコマンドで、asciimw.jpがドメイン名である。入力すると
Server: dns1.grandsphere.net
Address: 61.213.188.1
Non-authoritative answer:
Name: asciimw.jp
Address: 202.225.5.24
という返事が戻ってくるはずだ(Windows XPの場合)。Serverと書いてあるのがDNSサーバのホスト名。Non-authoritative answer以下に書いてある「Name」が問い合わせドメイン名の「asciimw.jp」で、「Address」には対応するIPアドレスが戻されてきたというわけである。
メールアドレスの場合
今まではWebサーバの例で見てみたが、メールアドレスから宛先のメールサーバのIPアドレスを知る場合にもDNSが用いられる。
news@example.co.jpのようなメールアドレスの場合、@の前がユーザーアカウントで、@の後ろがドメイン部になる。そのため、Webサーバと同じように送信前に対象のドメイン名を管轄するDNSサーバを調べる。これにより、宛先のメールサーバのIPアドレスを得ることができる。
この連載の記事
-
第5回
ネットワーク
Windowsネットワークの名前と番号 -
第3回
ネットワーク
EthernetでのID「MACアドレス」を理解する -
第2回
ネットワーク
IPアドレスの柔軟な割り当てを実現するサブネットマスク -
第1回
ネットワーク
TCP/IPで使われるIPアドレスとポート番号 -
ネットワーク
完全解剖「名前とアドレス」<目次> - この連載の一覧へ