トップ > スキル : ネットワーク > プロトコル(DNS)

ネットワーク

DNSの基本的役割

Webやメールでは、ドメイン名で相手を指名して通信を行います。Webサーバ、メールサーバなどの住所を表すものはIPアドレスですが、IPアドレスを使わずドメイン名で可能なのはDNSがあるからです。インターネットに欠かせないDNSは、縁の下の力持ち的存在です。ここでは、DNSの実体を理解することを目的に説明していきます。

DNSとは

Webやメールを使っている時に、DNSが働いていることはほとんど意識しません。インターネットを利用する際には、最初ユーザのパソコンにDNSサーバのIPアドレスを登録しておく必要があります。最近ではDNSサーバのIPアドレスを自動的に取得する仕組みが普及しつつあるので、さらにDNSの存在を隠してしまっているのが現状です。しかし、DNSはインターネットに欠かせない重要な役割を担っていることは事実で、これをきちんと押さえることでアプリケーションの仕組みも理解できます。

DNSの仕組みが生まれた頃を見ていきましょう。初期のインターネットでは、コンピュータはすべて、他のコンピュータの名前とIPアドレスを対応付けた対応表を持っていました。これは「HOSTS.txt」と呼ばれたテキストファイルでした。通信したいコンピュータが増えるたびにファイルにコンピュータ名とIPアドレスを書き込むだけのシンプルなものです。
しかし、コンピュータの数が増えてしまうと、そのたびにHOSTSファイルを更新する必要があり、またすべてのコンピュータが同じHOSTSファイルを持つことができない欠点が生じ、HOSTSファイルでは対処できなりました。このHOSTSファイルの問題を補える仕組みとしてDNSが生まれました。

基本的な役割は、両者ともほとんど同じです。ただ、DNSは世界中のDNSサーバが協力しながらドメイン名を管理する巨大システムなのです。

IPアドレスとドメイン名の対応

DNSの役目はIPアドレスとドメイン名の対応付けです。つまり、ドメイン名からIPアドレスを探し出すことだけを専門にしている仕組みがDNSなのです。最初からIPアドレスを知っているのであれば、IPアドレスからWebアクセスは可能です。でも、メールソフトはそうはいきません。なぜなら、メールも最終的にはIPアドレスで通信していますが、メールアドレスの@以降のドメイン名で通信するように作られているからです。
なお、FTPサーバは、IPアドレスを直接指定してもほとんど不都合が起こりません。

現在のインターネット環境では、サーバの管理者はたいてい、ドメイン名でアクセスしてくることを前提にして運用していますので、ドメイン名でアクセスするほうが良いとされています。また、サーバの移動やWebコンテンツの引越しなどを想定すると、IPアドレスが変わってしまうことが考えられます。しかし、ドメイン名であればIPアドレスが変わったとしても、対応付けがきちんと更新されることで絶対的なアドレスとして利用できます。IPアドレスは覚えにくいという欠点もあり、ドメイン名の必要性が高いことは言うまでもありません。

DNSの動作

では、DNSの働きを見ていきましょう。DNSの基本構成には「リゾルバ」と「DNSサーバ」があります。リゾルバは、コンピュータが問い合わせのために使うソフトウェアです。DNSサーバは、問い合わせに対して返答をするソフトウェアです。ドメイン名を問い合わせ、それに対する回答を得ることを「名前解決」と呼びます。

典型的な名前解決の流れをWebアクセスを例に説明してきます。アプリケーションとなるWebブラウザがドメイン名で通信を始めようとすると、アプリケーションはリゾルバにドメイン名を伝え、名前解決を依頼します。通常は、アプリケーション自身がリゾルバを持っています。
名前解決の指令を受けたリゾルバは、ローカル・サーバに問い合わせます。一般的なユーザのローカル・サーバは、プロバイダのDNSサーバになり、オフィスであれば社内向けに用意しているDNSサーバになります。
たいていの場合、ローカル・サーバは問い合わせに対する回答を知りません。そこで、ローカル・サーバは、自らのリゾルバを呼び出して、問い合わせられたドメイン名の対応表を持っているDNSサーバに問い合わせます。対応表とは、ドメイン名とIPアドレスが対応付けられたデータベースで「ゾーン情報」と呼ばれます。問い合わされたDNSサーバは、ゾーン情報から答えを取り出して、ローカル・サーバに返信します。受け取ったローカル・サーバは、リゾルバに答えを送って、名前解決が完了します。

リゾルバが行う問い合わせには2つの種類があります。リゾルバが出した問い合わせは、最終的に答えを要求する「再帰問い合わせ」が1つ目です。これは、問い合わせを受け取ったDNSサーバは、自分で調べて答えを返信しなければなりません。それに対してローカル・サーバのリゾルバの問い合わせは、必ずしも最終的な答えを要求するものではありません。DNSサーバが答えを知らなくても、答えを知っていそうなDNSサーバを紹介して、そのサーバに問い合わせわれるようにします。これを繰り返すことで、最終的な答えを知っているDNSサーバにたどり着くことになります。これが2つ目の「反復問い合わせ」と呼ばれるものです。

では、パソコンがwww.samle.comというWebサーバにアクセスする場合、どのように名前解決をしていくかを見ていきましょう。
まずWebブラウザはリゾルバに、「www.samle.comのIPアドレスを教えて」という名前解決を要求します。リゾルバは、ローカル・サーバに「www.sample.comのIPアドレスを知っていますか?」という問い合わせをします(再帰的問い合わせ)。ここで、ローカル・サーバが既に知っていれば、直接答えを返します。もし、ローカル・サーバが知らないのであれば、別のDNSサーバに問い合わせることになります(反復的問い合わせ)。
そこでまず最初に、「ルートDNSサーバ」と呼ばれる特別なDNSサーバに問い合わせます。ルートDNSサーバが知っているゾーン情報は、ドメイン名の最上位だけです。つまり、www.sample.comのcomドメインを管理しているDNSサーバのIPアドレスになります。ルートDNSサーバは、comドメインを管理しているサーバのIPアドレスをローカル・サーバに返信します。それを受け取ったローカル・サーバは、comドメインを管理しているサーバに「abc.com」を管理しているDNSサーバのIPアドレスを問い合わせます。comドメインはabc.comを管理しているサーバのIPアドレスを返信します。次に、ローカル・サーバはabc.comを管理するDNSサーバに「www.sample.com」のIPアドレスを問い合わせることになります。つまり、最終的な答えを知っているDNSサーバにたどり着くことになります。www.sample.comのIPアドレスを返信してもらったローカル・サーバはリゾルバに回答を伝え、最終的にリゾルバがパソコンに「www.sample.comのIPアドレスはXX.XX.XX.XXです」と名前解決が完了することになります。するとパソコンはwww.sample.comと直接通信を行うことができ、Webリクエストを行えることになります。

【DNS:DNSの基本的役割】