IPアドレスの解決

  1. IPアドレスとホスト名

    次に、ホスト名からIPアドレスへの解決(およびその逆)について説明します。

    最近はやりのネット・サーフィンにおいては、「http://www.net-newbie.com」 などの文字列をタイプすると該当のWebサーバに接続してくれます。 インストール時を別にすれば、ネットワーク管理者でもない限り「1.23.45.78」 などというIPアドレスをタイプすることはないでしょう。 このような数値の羅列は、計算機側にとってみれば都合が良くても、 人間にとっては覚えにくいものです。

    しかし計算機側から見れば、 接続するために必要なのはあくまでもIPアドレスであり、 http://....はあくまでも人間が見やすいように考え出されたシンボルに過ぎません。 このように、IPアドレスを指すためのシンボルのことを ホスト名とか ドメイン名(*1)などといっています。

    (*1)…本当はこの呼び名は正しくありませんが、 ここでは便宜上このようにしています。

    ここで、

    IPアドレス→MACアドレス

    の時と同じように、

    ホスト名→IPアドレス

    へ変換する(IPアドレスの解決をする)ためのしくみが必要となります。

  2. ホスト名

    ホスト名は、英数字などを組み合わせたもの(*2)で、 1つのIPアドレスを示すシンボルです。上記の例では、 「http://www.net-newbie.com」の中の「www」がホスト名となります。

    (*2)…Sun のマニュアルによると、

    「ホスト名は、大文字、フィールド・デリミタ、NEWLINEまたは
    コメント以外の印刷可能文字なら何でもいれることができます」

    とあります。長さの制限については説明がありませんでした。 また、Linux や Windows NT における制限事項については、 残念ながらよくわかりません。

  3. hosts ファイル

    hosts という名前のファイルを作成することにより、 ホスト名←→IPアドレスの解決が行えます。このファイルは、 Linux では /etc/hosts 、Windows NTでは %SYSTEMROOT%\system32\drivers\etc\hosts という名のテキストファイルです。

    hosts ファイルのフォーマットを以下に示します。

    フィールド記述例
    IPアドレス12.34.56.78
    ホスト名hogehoge
    [別名 ....]hogehoge2 www.dokoka.co.jp
    [#コメント]# Web Server

    たとえば、hostsファイルに以下の記述があるとします。

    C:\>type c:\winnt\system32\drivers\etc\hosts
    192.168.0.1   hogehoge
    
    こういうふうに指定しておくと、コマンドの引数などに「192.168.0.1」 と指定するかわりに「hogehoge」と指定することができるようになります。 各コマンドが hosts ファイルを検索し、マッチするホスト名があれば、 対応するIPアドレスとして読み替えてくれます。

  4. hosts ファイルの限界

    インターネットにアクセスする場合は、 世界中どこでも同じように接続できる必要があるので、 世界中でIPアドレスやホスト名を一意にする必要があります。 かつては、ノードが追加されるたびに、 ある機関が hosts ファイルをせっせと更新して全世界に配布していたそうです。 しかし、増加するノード数と、 hosts ファイルを配布するためのトラフィックが無視できなくなり、 hosts ファイルの配布という手段はまもなく破綻してしまいました。

  5. DNS

    これに代わって考え出された手段が、 DNS(Domain Name System)と呼ばれるものです。

    DNSは、各ノードが hosts ファイルというローカルのデータベースを 検索する代わりに、ホスト名データベースを持つDNSサーバ (ネームサーバともいう) をネットワーク上のどこかに配置し、 通常の各ノード(DNSクライアント)は、 IPアドレスの解決をするためにDNSサーバに問いあわせを行う、 というものです。

    DNSでは、ドメイン(*3)という概念があります。 ドメインは、ある企業・学校や組織単位にドメイン名 という名称を付与し、 各ノードのホスト名はそのドメイン内でユニークであればよいというものです。 必要であれば、 ドメインの中にサブドメインというより小さな単位を設けても構いません。 これはすべて、そのドメインのネットワーク管理者に権限があります。

    (*3)…Windows NT における Windows Domain とは関係ありません。 これと区別するために「インターネット・ドメイン」といったりします。

  6. DNSの規則

    たとえば、「www.hoge.co.jp」というノードについて考えてみましょう。 この場合、「jp」(日本)という大きなドメインの中に「co」(会社組織) というサブドメインがあり、その中に「hoge」という会社のドメインがあり、 最後に「www」という1つのノードがあることを表しています。このように、 DNSは階層化されています。 単に「www」といっても世界中に山ほどあるので特定できませんが、 「www.hoge.co.jp」とすべての上位ドメインで修飾してやれば、 世界中どこからでもアクセスすることができるようになります。 このように、完全に修飾されたドメイン名のことを FQDN(Fully Qualified Domain Name --- 完全修飾ドメイン名)と呼んでいます。

  7. DNSクライアント

    各ノード(クライアント)側では、これらのことはあまり意識せず、 単にネットワークの構成のところでDNSサーバのIPアドレスを指定してやれば、 DNSにアクセスできるようになり、 冒頭で申し上げたようにWebサーフィンを楽しめるようになっています。

  8. DNSに関するTIPS

    よくMLなどの質問で,

    XXというソフトを使ってサーバに接続するのに 1 分くらいかかってしまいます.
    というのを見かけますが, このような現象はほぼ 100% DNS の設定に問題があることが多いです. ありがちな間違いとしては,

    クライアント側からの切り分け方としては, 「ping IPアドレス」で接続できるのに, 「ping ホスト名または FQDN」がだめという場合は, 十中八苦^H^H八九 DNS 設定です.