永尾 幸夫 NTTデータ関西テクシス ソリューションマーケティンググループ テクニカルサポート担当

第1,2回では,IPアドレスを用いた通信の仕組みを解説した。しかし,単なる数字の羅列であるIPアドレスは人間には覚えにくい。そこで登場するのが「ホスト名」だ。今回は,「www.sample.co.jp」や「user@sample.co.jp」といった名前から,どのようにしてIPアドレスを知るのかがテーマである。解説は「DNS(Domain Name System)」が中心となる。さらにECサイトの運営などに携わっているSEならば,いくつかのDNSサーバーの種類や特別な情報の存在なども知っておきたい。

 前回までは,TCP/IP(Transmission Control Protocol/Internet Protocol)ネットワークの第一の基礎知識として,「IPアドレス」を用いたホスト間通信の仕組みを解説した。「192.168.100.10」のように表現される32ビットの数値であるIPアドレスを利用すれば,ルーターで網の目に接続されたインターネットでも効率的にデータを送れることが分かったと思う。ただ,このような数値はコンピュータにとっては扱い易いが,人間があて先として利用するには覚えにくく,難しい。数値を正確に入力しなければ,エラーの原因となったり,意図しないホストと通信してしまったりする。

 実際には,人間が数字の羅列であるIPアドレスを意識して使うケースは少ない。WWWアクセスや電子メールのやり取りでは,「www.sample.co.jp」や「user@sample.co.jp」といった人間が扱いやすい名前を使って相手を指定する。今回は,このホストの名前である「ホスト名」に関連するトピックスを取り上げる。特に,「DNS(Domain Name System)」が重要である。DNSは,ホスト名とIPアドレスの対応付けを管理し,情報の容易な検索を実現するシステムであり,インターネットにおいて欠かすことができないものだからだ。

写真1●pingで名前を使った通信を試してみる
「ネットワーク コンピュータ」を表示し(a),そこで確認できる名前にpingを実行してみると成功する(b)。しかし,架空の名前に対しては失敗してしまう(c)
写真2●hostsファイルで名前とIPアドレスを関連付ける
写真1cで失敗した名前と同bで知ったIPアドレスをhostsファイルで関連付けてみると(a),pingが成功するようになる(b)

「名前解決」の“原本”はテキスト・ファイル

 細かい説明に入る前に,まずはホスト名を使った通信を試してみよう。Windows95/98,Windows NTでデスクトップ上の「ネットワーク コンピュータ」を開くと,コンピュータの一覧が表示される(写真1[拡大表示]a)*1。ここで確認できる名前に対して,pingを実行してみてほしい。例えば写真1では「comp10」という名前が確認できるので,MS-DOSプロンプトで「ping comp10」と入力する。すると,「192.168.100.10」などのIPアドレスにあて先が変換され,通信が成功する(同b)*2

 この,ホスト名から該当マシンのIPアドレスを知る動作は,「名前解決(Name Resolution)」と呼ばれる。

 次に,先程確認したコンピュータの一覧にない架空の名前に対してpingを実行してみよう(写真1cでは「nikkeiopen」というホスト名にpingを実行している)。すると,あて先に届かないというメッセージが表示され,通信は失敗する。名前解決ができない,つまりホスト名に対応するIPアドレスが分からないからである。

 では,名前解決はどのように実現されているのだろうか。第2回で説明したように,IPアドレスからMAC(Media Access Control)アドレスを知るにはARP(Address Resolution Protocol)というプロトコルを使う。ブロードキャストで問い掛けると,該当するホストがMACアドレスを返信してくれる。しかし,ホスト名とIPアドレスの関係は,これとは大きく異なる。ホスト名とIPアドレスの組み合わせを,「hostsファイル」というテキスト形式のファイルとして,各ホストが保持するのが基本である*3

 hostsファイルは,Windows95/98/Meでは%windir%フォルダに置かれ,そこにホスト名とIPアドレスを登録すれば,名前解決が実現できる*4。実際に,先程名前解決に失敗した名前(写真1cでは「nikkeiopen」)を,その前に通信が成功したIPアドレス(同b「192.168.100.10」)に関連付けしてみよう。%windir%フォルダに「hosts.sam」というサンプル・ファイルが存在するので,それを「hosts」という名前でコピーし,メモ帳(notepad.exe)などで「192.168.100.10 nikkeiopen」という行を登録する(写真2[拡大表示]a)*5。そして,写真1cと同じようにpingを実行すると,今度は通信が成功する(写真2b)。実際の「192.168.100.10」というIPアドレスのマシンの名前は「comp10」ではあるが,写真2bではhostsファイルを基に名前解決を行い,「192.168.100.10」に対して通信を試みたために成功したのである。

 当然,hostsファイルでは1つのホスト名に関連付けられるIPアドレスは1つだけである。同じホスト名に複数のIPアドレスが関連付けられていると,どのIPアドレスをあて先としてよいかが判断できないからだ*6