DNS その1

IPアドレスだと・・・

TCP/IPでは通信相手を指定するには、IPアドレスを使う必要があります。このIPアドレスは32ビットのビット列ですが、設定するときなどは人間でもわかるように8ビットずつ10進数に変換して「.」で区切っています。たとえば、「192.168.1.1」などですね。
でも、これでもやはり数字の羅列に過ぎません。1つや2つならともかく10個も20個もIPアドレスを覚えるのはとても大変です。

名前を付ければ

そこで、もっとわかりやすく通信相手を指定したいって思うようになります。「じゃ、コンピュータに名前をつければいいじゃないか!」という話になってくるわけですね。

TCP/IPの世界でコンピュータにつける名前のことをホスト名といいます。コンピュータにそれぞれ、ホスト名を設定してホスト名で通信相手を指定すると、とてもわかりやすくなります。また、意味のある名前であれば覚えるのもそれほど大変ではありません。

ただ、やっぱり通信するためにはIPアドレスが必要なんですね。それは以前に紹介している、IPヘッダのフォーマットを見るとよくわかるでしょう。IPヘッダには送信先IPアドレスと送信元IPアドレスの情報をいれないとダメです。
ですから、ホスト名からIPアドレスを求めるためのなんらかの方法が必要です。このホスト名からIPアドレスを求めることを名前解決(Name Resolution)と呼んでいます。

hostsファイル

では、この名前解決を行うためにどうしていたのでしょうか!?

昔は、各コンピュータ1台1台にhostsファイルというテキストファイルを置いていたんですね。このhostsファイルの中に各ホスト名とIPアドレスの対応表を書いています。

ホスト名を指定して通信をしようとすると、hostsファイルの中からホスト名に対応したIPアドレスに変換して通信を行っていきます。

ただ、簡単に想像がつくと思いますがコンピュータがたくさん増えてくるととても面倒になってきます。新しいコンピュータがネットワークに追加されると、そのコンピュータのホスト名とIPアドレスの対応をhostsファイルに追加しないとダメなんですね。しかも、すべてのコンピュータに・・・3台、4台ならまだなんとかなっても、10台、20台、100台、1000台・・・となってくるととてもそんなことはやってられません。

DNS(Domain Name System)

そこで、考え出されたのがDNS(Domain Name System)です。ホスト名とIPアドレスの対応表を個々のコンピュータがそれぞれ持つのではなくて、DNSサーバに対応表を置いておきましょう。そして、各コンピュータは必要に応じてDNSサーバに対して要求を出して、名前解決を行っていこう!という仕組みです。

ですから、個々のコンピュータはhostsファイルを持つ必要はなく、DNSサーバのIPアドレスを登録しておけばいいです。

たとえば下の図のようなネットワークで、venusというコンピュータからmarsというコンピュータに通信をしたいというときには、まずDNSサーバに対して「marsのIPアドレスはなんですか?」と問い合わせを送信します。すると、DNSサーバが該当のIPアドレスを返答します。そして、教えてもらったIPアドレスを使って、目的のmarsと通信を行うことができます。

DNSサーバを使っていれば、たとえネットワーク上に新しいコンピュータが追加されたとしても、DNSサーバ上でのみホスト名とIPアドレスの対応を追加してあげればいいだけです。hostsファイルのときのようにすべてのコンピュータで情報を更新する必要はなくなるわけですね。

また、インターネットでWEBページを見るときのURLがあります。これは、またHTTPのときに詳しくお話しますが、www.yahoo.co.jpなどはWEBサーバのホスト名なんですね。ですから、ブラウザでWEBページを見ようとするときには、DNSサーバに対して目的のWEBサーバのIPアドレスの問い合わせを行っています。

すると、「インターネット上のすべてのコンピュータのホスト名とIPアドレスをDNSサーバに登録するの?」って疑問が出てきますね。

そんなことは無理な話です。インターネット上には何億というコンピュータがつながってくるので、すべての情報を登録するのは現実的ではありません。そこで、DNSの仕組はインターネット上でうまく分散させているんです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA