写真1

 IPを利用しているネットワークでは,どうやって同じネットワークに相手がいるかを判断するのだろうか。IPアドレスは通常,「192.168.108.20」のように4つの3けたの数字で表されるが,これは,さらにネットワーク・アドレスとホスト・アドレスに分けられている(写真1[拡大表示])。どこが分かれ目かは,設定したサブネット・マスクによって異なる。例えば写真1では,サブネット・マスクは「255.255.255.0」である。これを2進数で表現すると,「11111111 11111111 11111111 00000000」となる。この先頭から1の部分がネットワーク・アドレスだと考えればよい。つまり写真の場合は,「192.168.108」がネットワーク・アドレスで,「20」がホスト・アドレスである。2つのマシンが同じネットワークかどうかは,両者のネットワーク・アドレスを調べればよい。ネットワーク・アドレスが同じであれば,同じネットワークに存在する。逆に言えば,そうなるようにIPアドレスを各マシンに設定しなければ,ルーター・ネットワークはきちんと動作しない。

 次にルーティングだが,基本的には,[TCP/IP]プロパティの[ゲートウェイ]タブで指定されたゲートウエイが,他のネットワークにデータを送ってくれるルーターだと考えてよい。

 前回と今回の解説で,MACアドレスとIPアドレスの違いが理解できただろうか。要は,MACアドレスは登録や維持,変更といったアドレス管理が不必要というメリットがある半面,ネットワーク全体の構造(トポロジ)とアドレス体系が完全に独立になるためにMACフレームの中継処理が複雑となり,LAN 間での中継性能は低下する。一方のIPアドレスはきちんとしたアドレス管理は必要だが,ネットワークを複数に分割し,その間の効率的な中継処理を提供する。そのためルーターは,Ethernetとトークン・リングやEthernetとFDDIといった異なる種類のLANの接続,LANとWANの接続,などに有効である。

コリジョン・ドメインとブロードキャスト・ドメイン

 ブリッジとルーターが出てきたので,ここで,ブロードキャストやデータの衝突であるコリジョンについて,簡単に説明しておこう。これらは次回説明する名前解決にも関係するし,スイッチング・ハブを理解するためにも必要な話なので,重要である。

 前回も説明したように,基本的なLAN間接続機器には,リピータ,ブリッジ,ルーターの3種類がある。ネットワークの教科書などでは,それぞれ,物理層,データリンク層(MAC層),ネットワーク層で中継するものであるといった説明がされている。この説明が理解できなくてもよい。要するにどんなデータがどこまで到達するかの違いだ,と考えておけばよいだろう。

図1
 これも前回説明したが,1本のEthernetでは,あるマシンが送ったデータは,すべてのマシンに届けられる。これを言い換えると,誰かがデータを送っている間は,他のマシンはデータを送ることができない。万が一,2台が同時にデータを送信すると,データ同士が衝突して壊れてしまう。これをコリジョンと呼ぶ(図1[拡大表示])。コリジョンが発生すると,それぞれのマシンは適当な時間の後に,データを再送する。先ほど“1本のEthernet”という表現をしたが,この“1本”というのは,実は“コリジョンが発生しうる範囲”を示す。これを,コリジョン・ドメインと呼ぶ。

 LAN間接続機器で言えば,ブリッジのポート配下がコリジョン・ドメインである(図2[拡大表示]左)。リピータはその名のごとく増幅器なので,LAN上の電気信号をせき止めることはしない。つまり,リピータで接続したLANは,合わせて“1本”である。図2右は,図2左を現在のネットワーク構成に合わせた形で書き直したものである。通常のハブは,複数のポートを備えたリピータ(マルチポート・リピータ)である。そのため,ハブの配下に何台のパソコンが接続されていようとも,同時にデータを送信できるのは1台だけである。

図2
 ブリッジは,コリジョンをせき止める。つまり1本のLANをブリッジで分けると,同時にデータを送信できるマシンを2倍にできる。LAN全体の帯域を増やすことができるのだ。ブリッジでは,片方のポートから入ってきたデータは,他方に転送すべきものだけ転送し,そうでなければ廃棄する。ここで“LAN上のすべてのマシンあて”であるブロードキャスト(一斉同報)・データは,“すべて”にあてるため,無条件で転送する。

 このブロードキャストは,ルーターのところでせき止められる。つまり,“LAN上のすべての”の本当の意味は,“同じネットワーク上のすべての”ということである。そのため,ルーターのポート配下が,ブロードキャストが届く範囲であるブロードキャスト・ドメインとなる(図2左)。現在使われているスイッチング・ハブは,マルチポート・ブリッジと同じような動作をするため,スイッチング・ハブでコリジョン・ドメインを分離できるが,ブロードキャスト・ドメインは分けることはできない(図2右)。

pingで名前解決を実感する

 各マシンのIPアドレスからMACアドレスを知るには,ARPと呼ぶプロトコルで調べれば良いことは,前回説明した。では,コンピュータ名からIPアドレスを知るには,どうすればよいのだろうか。これが,これまで言葉だけは何回か登場した,“名前解決”である。

 実は,プロトコルとしてTCP/IPを利用しているWindows NTネットワークでは,Windows 95もWindows NTも,名前を2つ持っている。「コンピュータ名(NetBIOS名)」と「ホスト名」である。前者は,例えばファイル・サーバーへのアクセスやプリンタ・サーバーへのアクセスといったWindowsの世界で利用する名前であり,後者はWWWサーバーへのアクセスといった,純粋なTCP/IPの世界で利用する名前である。ただ,意識的に違えない限り,この2つはほぼ同じ名前が使われる。また,Windowsマシンでホスト名の名前解決を行う場合,それが失敗すると,次はその名前をコンピュータ名として考えて名前解決を試みる。このような背景から,基本的にはコンピュータ名を使うと考えておいて大丈夫だろう。

 まずは,自分のコンピュータ名を調べてみよう。Windows 95であれば,[コントロールパネル]の[ネットワーク]を選び,[ユーザー情報]タブを選べばよい。Windows NT 4.0ならば,同[ネットワーク]の[識別]タブにある。このコンピュータ名は,同じドメイン名でユニークでなければならない。そうしなければ,コンピュータ名とIPアドレス,MACアドレスを一意に対応付けできないからだ。

 次に,名前解決を実感してみよう。ここでも,毎度おなじみのpingコマンドが利用できる。MS-DOSプロンプトで,先ほど調べた自分のマシンのコンピュータ名を使って,

ping コンピュータ名

を実行してみよう。「Pinging コンピュータ名[ 自分のIPアドレス ]…」といった結果が返ってきたはずだ。できれば,隣の人のコンピュータ名とIPアドレスを調べ,同じようにコンピュータ名でpingをかけてみてほしい。やはり相手のIPアドレスが表示されたと思う。次は,誰も付けそうもないコンピュータ名でpingをかけると,「Bad IP address コンピュータ名」と返ってくる。名前解決に失敗したからである。

名前解決の基本はネーム・サーバー

図3
 IPアドレスとMACアドレスのマッピングは,ARPというブロードキャストによる単純な方法だけだったが,名前解決には3つの方法がある(図3[拡大表示])。

 一つは,ネットワーク上のすべてのマシンのコンピュータ名とIPアドレスの組み合わせのデータベースをもつネーム・サーバーを利用する方法である(図3a)。各マシンは,ネーム・サーバーのIPアドレスを知っている必要があるが,各マシンのコンピュータ名とIPアドレスの組に関する管理はネーム・サーバーだけに対して行えばよいため,メンテナンス性は高い。コンピュータ名のネーム・サーバーがWINSであり,ホスト名のネーム・サーバーがDNSである。前述したように,Windows NTサーバーでは,WINSとDNSを相互運用できるようになっている。

 次は,各マシンが通信する可能性のあるすべてのマシンのコンピュータ名とIPアドレスの組をファイルとしてローカルに保存しておく方法(図3b)。名前解決の速度は最も速いが,マシンを追加したり,あるマシンの名前を変えたりした場合は,すべてのマシンのファイルを書き換える必要がある。コンピュータ名に対する組み合わせはLMHOSTS,ホスト名に対する組み合わせはhostsというファイルに書き込む。

 最後は,ARPのようにブロードキャストで名前解決をすべてのマシンに依頼するもの(図3c)。C/S型やローカル・ファイル参照型のように,どこかにコンピュータ名とIPアドレスの組を用意する必要がない半面,ルーターを超えた名前解決はできない。

 自分のマシンは,どの方法で名前解決を行っているかは,設定の内容に依存する。どれか一つだけということはなく,設定によって試す順番が異なる。ただ,ルーターのあるネットワークや,外部のインターネットと接続する場合などはWINS/DNSを利用するのが普通だろう。実際にDNS,WINSを利用しているかどうかは,Windows 95であれば,[ネットワーク]-[ネットワークの設定]でTCP/IPのプロパティを表示し,[WINS設定],[DNS設定]を調べればよい。また,WINSサーバーをインストールしてあるNTサーバーでWINS マネージャを起動すれば,WINSの設定の内容を見ることができる。DNSの登録内容を見るには,Windows NTのコマンドプロンプト上でnslookupコマンドを実行すればよい。

 次回は,コンピュータ名とIPアドレスのマッチングである“名前解決”について解説する予定である。

 この連載は,日経オープンシステムに連載した「新人SEのためのネットワーク入門」の内容をもとに,Webコンテンツとして再編集したものです。なお,日経オープンシステム別冊「新人SEのためのネットワーク入門」では,本記事の内容を詳しく説明するほか,実践編としてトラフィックの把握やネットワーク設計の実際などの内容もご紹介しております。内容のご確認とご購入は,http://coin.nikkeibp.co.jp/coin/nos/se/でお願いいたします。