コンピュータ間の通信でTCP/IPを使用する場合、通信相手となるあて先を識別する値としては、「IPアドレス」が使用される。IPアドレスは、32bitのアドレス空間を用いてホストを識別するために割り当てられた、一意の値である。IPアドレスは通常、8bitずつピリオドで区切り、10進数で表記する(例「192.168.1.1」)。つまり、通信したい相手のIPアドレスが分かれば、データを相手に送ることができるということだ。
しかし、世界中のコンピュータのIPアドレスをあらかじめ知っておくことは難しいし、通信相手をIPアドレスで覚えておくことも難しいだろう。そこで、あて先をIPアドレスで指定する代わりに、人間が分かりやすい名前をコンピュータにホスト名として割り当て、ユーザーやアプリケーションで通信相手を指定する際にはホスト名を使用できると便利である。ホスト名にはアルファベットや数字などが使用できるため、コンピュータの役割ごとに人間が分かりやすい名前を割り当てることができる。例えばWebサーバになっているコンピュータには、「www」といった名前を割り当てられる。ユーザーやアプリケーションがあて先を指定する情報としてホスト名を使用する場合でも、実際のTCP/IP通信ではIPアドレスがあて先情報として使用されるため、指定されたホスト名が割り当てられたコンピュータのIPアドレスを、(何らかの方法で)取得する必要がある。この処理を「名前解決(name resolution)」と呼ぶ。「名前(ホスト名)を解決して、IPアドレスにする」という意味だ。名前解決を提供するサービスとしては「DNS」サービスが使用される。DNSサービスを提供するサーバを「DNSサーバ」といい、名前解決する必要のあるホスト名をDNSサーバが持つ「ゾーン」と呼ばれるファイルにレコードとして登録しておく。DNSでは登録されたレコードのホストだけが解決の対象となる。また名前解決を依頼する機能(DNSサーバに問い合わせる処理/サービス)を「リゾルバ(resolver)」という。
DNSのゾーンに登録されるレコードにはいくつか種類があるが、主要なレコードとしては次のものがある。
DNSによる名前解決の仕組みはインターネットでも利用されている。だがインターネットでの名前解決は少し複雑になる。
ある1台のDNSサーバが、インターネット上のすべてのホスト名とIPアドレスを登録/保持することは現実的ではない。レコードの総数が膨大で、1台のコンピュータではとても管理できないからだ。そこでDNSでは、インターネットで利用される名前を「ドメイン」という単位で分割して管理する、分散管理モデルを採用している。ドメインは階層構造で定義されている。
「ルート・ドメイン」や「トップレベル・ドメイン(TLD)」の管理や運営はICANN(Internet Corporation for Assigned Names and Numbers)が行っている。ICANNは、ドメイン名のほか、IPアドレス/ポート番号などの管理を指揮する国際的な非営利法人団体である
インターネットの名前空間はルート・ドメインと呼ばれる、先頭となるドメインから階層的に定義されている。そして、基本的に各ドメインには、それぞれDNSサーバが存在する。
これらの分散管理された環境での名前解決処理は次のように行われる。例えば、クライアントから、Webブラウザを使用して「http://www.example.com/」に接続したい場合、実際のアプリケーション・プロトコルとしてはHTTPプロトコルでアクセスするが、その前に、「www.example.com」というホストの名前解決処理(www.example.comのIPアドレスを求める処理)が必要となる。
まず、クライアントに設定されたDNSサーバ(ローカルDNSサーバ)にwww.example.comの名前解決要求を送る。ローカルのDNSサーバには、インターネット上のすべてのIPアドレスが登録されているわけではないので、ここでは解決できない。このような場合、ルート・ドメインのDNSサーバに問い合わせを行う。
ルート・ドメインDNSのゾーンにもwww.example.comが登録されているわけではない。ルート・ドメインのDNSサーバは、comドメインのDNSサーバを紹介(返答)する。その応答を受け、ローカルのDNSサーバは次は.comドメインのDNSサーバに問い合わせを行う。
comドメインのDNSサーバは、example.comドメインのDNSサーバを紹介(返答)する。するとローカルのDNSサーバは、今度はexample.comドメインのDNSサーバに問い合わせを行う。example.comドメインのDNSサーバには、www.example.comのIPアドレスが登録されており、ここで初めて名前解決ができる。解決されたwww.example.comのIPアドレスはローカルのDNSサーバに戻され、要求元のクライアントに返される。そしてクライアントは取得したIPアドレスあてにHTTPプロトコルの要求を送ることができる。
このようにインターネットで使用するDNSサーバは、インターネット上のルート・ドメインのDNSサーバに要求を送るため、ルート・ドメインのDNSサーバのIPアドレスを知っている必要がある。ルート・ドメインのDNSサーバのIPアドレスは公開されており、ルートヒントとして構成しておく必要がある。ルート・ドメインのDNSのIPアドレスは、以下のサイトから入手できる。また上位のドメインのDNSサーバには、下位のDNSサーバのIPアドレスをNSレコードとして登録しておく必要がある。
インターネット上のホストの名前解決が解決要求のたびに発生すると、インターネット上のトラフィックや、ルート・ドメインのDNSサーバの負荷が多くなってしまう。そのため、一度解決された名前はDNSサーバにキャッシュされ、一定期間保存されるようになっている。同じホストの名前解決要求が来た場合、キャッシュにレコードが保持されていれば、そこですぐに解決できる。
もしもインターネットに公開したいサーバがあれば、インターネット公開用のDNSサーバのゾーンにサーバの名前とIPアドレスのレコードを登録しておく必要がある。また公開用DNSサーバのレコードを、上位のドメインのDNSサーバにNSレコードとして登録してもらう必要がある。
DNSは、通信したいあて先ホストのIPアドレスを取得するために使用するサービスである。そのためDNSによるIPアドレスの取得が失敗すれば、たとえあて先ホストが正常に稼働していても、あて先ホストとは通信できなくなる。
そこでDNSでは通常、名前解決が失敗しないように、ゾーンの冗長構成を行う。クライアントが問い合わせた1台目のDNSサーバからの応答がない場合には、2台目のDNSサーバが応答できるように、ゾーンを持つサーバは、ほかのDNSサーバにゾーン情報のコピーを行う。この処理を「ゾーン転送」という。Windows OSが提供するMicrosoft DNSでは、マスタのゾーン(コピー元のゾーン)を「プライマリ・ゾーン」と呼び、コピーされたゾーンを「セカンダリ・ゾーン」と呼ぶ。
クライアントの参照先となるDNSサーバは、プライマリ・ゾーンを持つDNSサーバでもセカンダリ・ゾーンを持つDNSサーバでもよい。
Copyright© Digital Advantage Corp. All Rights Reserved.