連載

基礎から学ぶWindowsネットワーク
―― Windowsネットワーク管理者への道 ――

第20回 ファイル共有プロトコルSMB/CIFS(その1)

1.Windowsネットワークの基本アーキテクチャ

デジタルアドバンテージ
2004/10/29

基礎から学ぶWindowsネットワーク
ユーザーから見たWindowsネットワークとその舞台裏
 ・・・
ファイル共有プロトコルSMB/CIFS(その1)
ファイル共有プロトコルSMB/CIFS(その2)
ファイル共有プロトコルSMB/CIFS(その3)
コンピュータの一覧を管理するブラウザ・サービス
 

 前回までは、NetBIOSやNBT(NetBIOS over TCP/IP)、TCP/IPといった、Windowsネットワークの下部を支えるプロトコルについて解説してきた。今回からはWindowsネットワーク・アーキテクチャの核心である、ファイル共有サービスと、それを実現するSMBプロトコルについて解説を行う。今回は、Windows OSにおけるファイル共有サービスの概要と、基本的な利用方法などについてまとめる。

 この連載ではWindows OS上に実装されているネットワーク機能を指して単に「Windowsネットワーク」と呼んでいるが、もともとこの機能はWindows以前から利用されていたものである。当初はMS-Networks(MS-DOS 3.xにネットワーク機能を付加したもの)で利用されていたサービスがその大元であると考えられるが、当時は現在のものほど機能は多くなかったし、当時のコンピュータの性能はあまり高くなかったので、MS-DOS上ではクライアント機能しか利用できなかった。サーバは、専用のLAN-Manager ServerやOS/2システムなどが利用されており、現在のように、サーバ機能とクライアント機能を同時に利用するのが一般的になったのは、Windows for Workgroups 3.x(このOSは日本語化されていない)以降である。

 なお、一口にWindowsネットワークといっても、そこに含まれる機能は多数あるし、Windows OSには次々と新しいプロトコルやサービスが実装され続けているが、本連載では、ファイル共有サービスおよびブラウズ・サービスまでを取り扱うことにする。

Windowsネットワークの基本アーキテクチャ

 Windows OSにおけるファイル共有サービスのアーキテクチャ(概略)を次に示しておく。ただし図ではクライアントとサーバを別々に記述しているが、現在のWindows OSではこれらは1台のコンピュータ上で両方実装されている。

Windows OSにおける基本的なファイル共有サービス
Windowsネットワークにおけるファイル共有サービスは、クライアント側で動作するWorkstationサービスと、サーバ側で動作するServerサービスのからなる。アプリケーションからのファイル・アクセス要求は「リダイレクタ(ローカルとリモートのアクセスを振り分ける機能)」によってWorkstationサービスへ向けられ、さらにトランスポート層サービスを経由してサーバ側のServerサービスに届けられる。
  アプリケーションからのアクセス要求は、リダイレクタを経由して、Workstationサービスへと届けられる。
  Workstationサービスは、下位のトランスポート層プロトコルを使って、アクセス要求をサーバ側のServerサービスへ届ける。
  Serverサービスではクライアントからの要求に従って実際のディスク上のファイルへアクセスし、結果をクライアントへ返送する。

 これを見ると分かるように、ファイル共有サービスは、クライアント側の「Workstationサービス」と、サーバ側の「Serverサービス」の2つから成り立っていることが分かる(サービス名はWindows NTやWindows 2000、Windows XPの場合)。この図を元にして、Windows OSのファイル共有サービスの仕組みについて見ていこう。Windowsネットワークにおけるファイル・アクセスの概要はすでに連載第2回「Windowsネットワークのレイヤ・モデルとファイル共有」でも述べているので、参考にしていただきたい。

 いまクライアント・コンピュータ上で、あるアプリケーションがサーバ上のファイルへアクセスしようとしているとする。するとその要求は次のような段階を経て、サーバに届けられる。

1.アプリケーションからのファイル・アクセス
 アプリケーションがネットワーク上のファイルをアクセスするといっても、ネットワーク上のサーバのファイルであることを特別に意識することはほとんどない。ローカルのファイルであっても、ネットワーク上のファイルであっても、アプリケーションではファイル名を表す文字列をWindows OSにそのまま渡すだけであり、その内容について特別に解釈する必要性はほとんどないからだ。例えばメモ帳に渡すファイル名がc:\user\suzuki\\test.txtでも\\winserver-01\user\suzuki\test.txtでも、メモ帳の処理は変わらない。指定されたファイル名(を表す文字列)をそのままWindows OSに渡すだけで、あとの処理はすべてOS側で行ってくれる。OS側では、渡されたファイル名がローカルのディスク上のものであるか、それともネットワーク上のサーバのものであるかを判定し、後者ならば、Workstationサービスへと引き渡す。

2.ネットワーク・アクセス
 リモートのファイル・サーバ上のファイルに対するアクセス要求は、Workstationサービスにおいて、「SMB(Server Message Block)」プロトコルを使ったアクセス要求に分解され、リモートのファイル・サーバに送信される。SMBプロトコルとは、Windowsネットワークにおける基幹ファイル・サービス・プロトコルである。ネットワーク階層でいえば、最上位のアプリケーション層やプレゼンテーション層に相当するファイル・サービス・プロトコルであり、下位プロトコルとしては、NetBIOSを経由してサーバと通信している。いままで述べてきたように、NetBIOSとはインターフェイスであり、実際のプロトコルとしてはNetBEUIやNBT(NetBIOS over TCP/IP)、IPX/SPXをトランスポート層として利用している。

3.ディスク・アクセス
 クライアントからSMBプロトコルを経由して送られてきたアクセス要求は、Serverサービスによって受信される。そして実際のディスク上のファイルへのアクセス要求として処理され、その結果がまたSMBプロトコルを経由して、クライアントへと送り返される。

SMBとCIFSプロトコル

 以上がWindows OSにおけるファイル共有サービスの概要であるが、もう少し詳しくネットワーク・プロトコルについてみると、次のようになっている(WorkstationサービスとServerサービスをまとめてファイル共有サービスとしている)。

Windowsネットワークにおけるファイル共有プロトコル
Windowsネットワークでは、SMBというファイル共有プロトコルを利用している。これは下位にNetBIOSインターフェイスを利用するプロトコルであり、実際のトランスポート層としてはNetBEUIやNBT、IPX/SPXが利用できる。だがNetBIOSはネットワーク管理の点から見ると望ましくないので(複数のポートを利用するし、ルーティングも困難、ブロードキャストが多い、ほかのインターネット・プロトコルとなじまない、など)、TCP/IPをダイレクトに利用するCIFSというプロトコルが開発された。CIFSはWindows 2000以降のWindows OSで利用できる。

 Windowsネットワークにおけるファイル共有サービス用のプロトコルは、「Server Message Block」(以下「SMB」と表記)とか、「Common Internet File System」(以下「CIFSと表記)と呼ばれている。当初のWindowsネットワークではSMBと呼ばれていたが、その後、仕様変更や機能拡張などを行い、現在ではCIFSという名称で公開され、Windows以外のシステムにも広く実装されるようになっている。マイクロソフト社のドキュメント中でもSMBとCIFSの両方の呼称が登場しているが、以下では特に断らない限り単にSMBと呼ぶことにする。

 SMBもCIFSもともに同じファイル共有サービスを提供するプロトコルであるが、下位のトランスポート層プロトコルの扱いが少し異なる。

 Windowsネットワークの開発当初から利用されているSMBでは、NetBIOSインターフェイスを経由してデータを送受信している。NetBIOSは、実際にはNetBEUIやTCP/IP、(図には含まれていないが)IPX/SPXをトランスポート層として利用するサービスである。よって、通信相手のサーバを見つける場合にはNetBIOSの名前解決サービスやデータグラム・サービスを利用するし、サーバとの通信にはNetBIOSの提供するセッション・サービスを利用する。この結果、サーバ名やクライアント名はNetBIOSの規約に基づいた名前を付ける必要があるし、もしもインターネットを介して通信しようとすると、(セキュリティ的なことは別にして)NetBIOSが通信できるようにネットワーク環境をセットアップする必要がある。

TIPS「ポート445(ダイレクト・ホスティングSMBサービス)に注意」

 これに対してCIFSは、NetBIOSインターフェイスを経由せず、ただ1つのTCPのポート(445番)だけでサービスできるように改良されたプロトコルである。提供するサービスそのものはSMBの場合とほとんど同じであるが、使用するポートが1つだけでよいので、ファイアウォールなどでの管理も容易になっている(NetBIOSでは複数のポートを使用する)。CIFSはWindows 2000以降のWindows OSで利用できる。


 INDEX
  [連載]基礎から学ぶWindowsネットワーク
  第20回 ファイル共有プロトコルSMB/CIFS(その1)
  1.Windowsネットワークの基本アーキテクチャ
    2.Windowsネットワークの基本的な使い方(1)
    3.Windowsネットワークの基本的な使い方(2)
 
 連載

TechTargetジャパン

Windows Server Insider フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH