それでは、Windowsネットワーク・レイヤの構成がおおよそ分かったところで、これらを踏まえて、実際のWindowsネットワークにおいて、共有ファイルをアクセスしたときに何が起こるのかを追跡してみよう。具体例を使って各部の働きを再確認することで、より直感的にWindowsネットワーク・レイヤの働きについて理解していただけるだろう。
例としては、前回もご紹介した最も単純なワークグループ・ネットワークを例にとる。確認の意味を込めて、前回掲載したネットワーク構成図を以下に再掲しよう。ただし、前回は最も身近なTCP/IPネットワークを想定したが、今回はNetBEUIネットワークだと仮定して、図中にあったIPアドレスは削除した。
ここで、ワークグループ・サーバである「SV01」の共有フォルダである「usr」の中にある「a」という名前のフォルダ以下の「text.txt」という名前のテキスト・ファイルを、「PC01」からネットワークを経由してオープンするとしよう。このような場合、普通ならエクスプローラを開いて、「ネットワーク コンピュータ」で「SV01」アイコンをダブルクリックし、共有フォルダの中身を一覧表示して当該ファイルのアイコンをダブルクリックするところだろうが、ここでは次のように、[スタート]メニューの[ファイル名を指定して実行]から表示されるダイアログで、
\\sv01\usr\a\text.txt
と直接コンピュータ名と共有ファイル名を指定する。このようにWindowsでは、「\\」の直後にコンピュータ名を表記し、続けてそのコンピュータがネットワークに公開している共有フォルダや共有ファイルの名前を通常のディレクトリ指定と同様に行うことができる(この表記法はUNC:Universal Naming Conventionと呼ばれる)。共有ファイルへのアクセスの説明の前にこのように回りくどい操作をするのは、「ネットワーク コンピュータ」でのコンピュータ一覧では、「ブラウジング(browsing)」と呼ばれる別の機能が使われるからだ。このブラウジングについては次回以降で説明する予定である。つまりここでは、説明を簡単にするために、ブラウジングの説明を後回しにしたいということだ。
こうして共有ファイルを公開しているコンピュータの名前(SV01)と共有フォルダ名(usr)、サブフォルダ名(a)、共有ファイル名(text.txt)を指定して[OK]ボタンをクリックすると、エクスプローラからWindowsのカーネル・モードにあるリダイレクタが呼び出される。
クライアント側である「PC01」でファイル・アクセスを実行すると、まず最初にエクスプローラから、Windowsのカーネル・モードにあるリダイレクタが呼び出される。「リダイレクタ」とは「redirector」のことで、「redirect=転送する」ということから分かるとおり、実行されたファイル・アクセスのアクセス先を調査し、適当なデバイスへのアクセスに切り替える。
例えば、ファイル・アクセスがローカル・ハードディスクやローカルのCD-ROMなどに対するものなら、リダイレクタはファイル・アクセスをそれぞれのデバイスへのアクセスに切り替える。具体的には、対応するボリュームのファイル・システム・ドライバ(NTFSやFAT、CDFSなど)を呼び出す。CDFSはCompact Disc File Systemの略で、CD-ROM向けのファイル・システムである。
しかし今回アクセスするファイルはネットワークの先にあるので、リダイレクタはアクセス先をネットワーク処理モジュール(図の「ネットワーク・プロトコル」)に切り替える。実は「ネットワーク・プロトコル」の中身こそ、すでにご紹介したWindowsのネットワーク・レイヤなのである。
従ってリダイレクタから呼び出されるのはSMBである。前述したとおり、SMBは共有ファイル/共有プリンタを実現するためのアプリケーション・プロトコルである。SMBは、NetBIOSのセッション指向の通信機能を用いて、サーバ側のSMBサーバとの間に通信用のセッションを確立し、そこを通じてファイル・アクセスのためのコマンドやデータをやり取りする。例えばファイルをアクセスしたければ、SMBのファイル・オープンやファイル読み出し要求を送信し、その結果としてファイルの内容のデータを受け取る。
NetBIOS経由で送信されたコマンドやデータは、実際には、その下位にあるNetBEUIやTCP/IP(の持つセッションやデータグラム通信機能)を使って、相手のコンピュータまで届けられる。そして、これはさらに下位にあるNDISを通って、ネットワーク・インターフェイスから送信され、それがサーバ側のネットワーク・カードへと届く。
ネットワークからサーバが受け取ったファイルのアクセス要求は、ネットワーク・プロトコル・レイヤの下位から上位に順次送られ(具体的には、ネットワーク・インターフェイス→NDISドライバ→NetBEUIトランスポート・プロトコル→SMB)、最終的にはWindowsカーネル内でのファイル・アクセスをつかさどるサーバ・ドライバに渡される。サーバ・ドライバでは、これをローカル・ディスク(ハードディスクやCD-ROMなど)へのアクセスに変えて、ファイルのオープンや読み出しの結果を再度ネットワーク・プロトコルを通してクライアント側に返す。こうしてクライアント側では、メモ帳が起動され、「\\sv01\usr\a\text.txt」ファイルがオープンされて、その内容がメモ帳のウィンドウに表示される。このように内部的には、ローカル・ストレージとはまったく異なるルートを通ってファイルがアクセスされるのだが、メモ帳を起動したユーザーから見れば、両者の違いは分からない。
今回は、ネットワークの基本であるOSI参照モデルと、それに照らし合わせたWindowsネットワークの階層モデル(最も単純化したもの)をご紹介し、それらのネットワーク・プロトコル・レイヤを経由して、共有ファイルのサービスが実現されている様子について説明した。この際今回は、「ネットワーク・プロトコル・レイヤ」を1つのブラック・ボックスとして扱った。共有ファイルという最も分かりやすいケースを例にとったが、これを可能にするのがWindowsネットワークの大きな働きである。しかしネットワークを経由して正しく、効率的にデータをやり取りするには、そのための手続きが必要である。これを理解することこそ、Windowsネットワークを理解することにほかならない。
これでほぼ外堀は埋まった。次回からは、いよいよ今回ブラック・ボックスとして扱った「ネットワーク・プロトコル・レイヤ」の内部へと本格的に足を踏み込むことにしよう。
Copyright© Digital Advantage Corp. All Rights Reserved.