ホスト名とコンピュータ名

TCP/IPの世界では、各ノードを IPアドレスで管理します。逆に TCP/IP を使わないのであれば、 IPアドレスをもらう必要はないわけです。昔の MS-DOS の時代は、 メモリの制限などの理由により標準では TCP/IP を使えませんでした。 サードパーティーの TCP/IP スタック・ソフトウェアを使えばできないことは ないのですが、メモリの制約を逃れるために、本質的でない、 不毛な努力を強いられます。しかし、Microsoft LanManager (以下 LanMan という) ソフトをインストールすれば、ネットワーク機能が使えたそうです (私は使ったことがないのでよくわかりません)。ただしその場合、 使える機能としては、以下のものに限られていました。

今流行のネットサーフィン(死語?)などは当然できませんでした。 もっとも当時は Web サイト自体がありませんでしたが:-)

LanMan は TCP/IP ベースのプログラムではなかったので、 IPアドレスを決める必要はありませんでした。その代わり、各 ノードに名前を付けて、 その名前で識別するようにしていました。この各ノードに付けられた名前のことを コンピュータ名 (正式には NetBIOS 名 --- ネットバイオス名)といいます。ということで、 コンピュータ名とIPアドレスは直接の関連性はありません。

ところが Windows 95/NT になると、 TCP/IP プロトコルが標準で提供されるようになり、 TCP/IP ベースのアプリケーションが使えるようになってきました。 TCP/IP を使うためには IP アドレスが必要となります。さらに UNIX のように、 基本的には TCP/IP しかしゃべれないマシンと通信を行ったり、 DNS と連動させたりするためには、 Windows ネットワークにおいてもホスト名が必要になります。

ホスト名は IP アドレスの別名で、人間が覚えやすくするためにつけるものです。 実際の通信には IP アドレスが使われるので、ホスト名をつけなければ通信が できないということは(少なくとも TCP/IP 的には)ありません。 一方コンピュータ名は LanMan の時代においては各ノードを識別するための 唯一の情報であったため、コンピュータ名の命名は必須事項でした。

ホスト名とIPアドレスの相互変換には HOSTS ファイルが使われます。HOSTS ファイルは以下のところにあります。

Windows 95
%WINDIR%\HOSTS
Windows NT
%SYSTEMROOT%\system32\drivers\etc\HOSTS

なお、HOSTS ファイルは自動的には作成されません。インストール直後は上記ディレクトリに HOSTS.SAM というサンプルファイルがあるので、これを HOSTS という名前でコピーして適当に変更してくれということなのでしょう。フォーマットは簡単で、1行ごとに IPアドレスとホスト名を羅列するだけです。HOSTS と DNS の優先順位について少し試してみたのですが、DNS を使う設定にしておいても、HOSTS ファイルに登録されていれば、そちらが優先されるようです。もちろん UNIX ではどちらを優先するかを明示的に指定できます。