第21回 ファイル共有プロトコルSMB/CIFS(その2):基礎から学ぶWindowsネットワーク(1/3 ページ)
Windowsネットワークの核心、SMB/CIFS解説の第2回。SMBプロトコルにおけるリソースの公開とその使用までの処理を追う。
前回は、SMBプロトコル理解の第一歩として、Windows OSにおけるファイル共有サービスの利用方法について解説した。今回からは、SMB/CIFSプロトコルの実際の動作やAPI、パケット構造などについて解説していく。
SMB/CIFSの歴史
■連載目次
第1回 Windowsネットワークの舞台裏
第2回 レイヤ・モデルとファイル共有
第3回 NetBIOSを理解する(1)
第4回 NetBIOSを理解する(2)
第5回 NetBIOSの通信の実際
第6回 TCP/IP始めの一歩
第7回 IPアドレスとネットマスク
第8回 アドレス・クラスとIPアドレス
第9回 IPルーティング
第10回 IPパケットの構造
第11回 MACアドレスを解決するARP
第12回 TCP/IPを支えるICMP
第13回 データグラム通信を実現 UDP
第14回 信頼性を実現するTCP(1)
第15回 信頼性を実現するTCP(2)
第16回 信頼性を実現するTCP(3)
第17回 LLCとNetBEUI
第18回 NetBIOS over TCP/IP(1)
第19回 NetBIOS over TCP/IP(2)
第20回 ファイル共有SMB/CIFS(1)
第21回 ファイル共有SMB/CIFS(2)
第22回 ファイル共有SMB/CIFS(3)
第23回 ブラウザ・サービス
WindowsネットワークのSMB/CIFSプロトコルを使ったファイル共有サービスは、もともと1980年代中ごろに発表されたMS-Networks(IBMブランドではPC-Networksとして販売されていた)から始まるものである。その後、LAN Manager(IBM名LAN Server)やOS/2 LAN Manager、Windows for Workgroups(Windows 3.1/3.11ベースのネットワーク対応Windows)、Windows NT、Windows 95、UNIXなど、ネットワーク機能を組み込んださまざまな製品が開発され、そのたびに中核となるSMBプロトコルも拡張されてきた。とはいえ、現在のWindows OSで利用されているSMBプロトコルの基本機能は、Windows NTの登場時にほぼ完成の域に達し、その後はあまり目立った機能拡張は行われていない。Active DirectoryやLDAPといった現在のサーバで利用されている多くの拡張機能は、SMBプロトコルの拡張ではなく、別のプロトコルが開発されたり、既存のインターネット・サービスのプロトコルなどをベースに開発されている。
以下に、過去から現在に至るWindows関連の主なネットワーク製品を挙げておく。
製品 | 概要 |
---|---|
PC-Networks/ MS-Networks |
1980年代中ごろにMS-DOS上に実装されたネットワーク機能。SMBの初期バージョンが実装された |
LAN Manager | ファイル・サーバ専用のOSとして開発され(OS/2やMS-DOS上などに実装された)、のちにUNIX上にもSMBプロトコルのサーバが実装された。ユーザー・レベルのセキュリティを実装 |
OS/2 | マルチタスクOSシステム |
LAM MAN DOS | DOS用のSMBクライアント |
Windows for Workgroups | Windows 3.x用に実装されたSMBサーバ/クライアント |
Windows NT | Windows NT用SMBサーバ/クライアントを実装。現在のSMBプロトコルがほぼ完成 |
Windows 2000 | CIFSをサポート |
SMBプロトコルを実装した主要な製品とその概要 |
SMB/CIFS関連ドキュメント
SMBやCIFSは、ファイル・サーバ用のプロトコルとして開発からすでに20年以上経っているが、これらのプロトコルは、もともとはマイクロソフト社が中心となって独自に開発・改良を進めている独自のプロトコルである。だが最近では、契約を結べば、一定の条件の元では、ある程度まで仕様書を入手することが可能となっている。ただし最新のWindows OS上に実装されているSMBプロトコルの完全なソース・コードなどが入手できるわけではなく、プロトコル仕様が定義されたドキュメントなど、一部の情報が提供されるだけのようである。ネットワーク・プロトコルが相互に運用できるようになるためには、そのパケット構造が定義されているだけでなく、実装にかかわるパラメータ(タイムアウト値はいくつか、リトライはどうするか、エラー時にはどのようなエラー・コード返すか、など)も重要な要素となるが、そのあたりの情報などは公開されていないようだ(そもそも、そんなに厳密なプロトコルや挙動が定義されているわけではなく、実環境でチューニングやパラメータ設定の調整などを繰り返して進化してきたプロトコルのように思われる)。
それでもいくらかは情報が公開されているし、Windowsネットワークと相互に運用するためにさまざまな企業や団体などが解析を行い、その結果がドキュメントなどにまとめられている(一部は、マイクロソフトも協力している)。SMB/CIFSプロトコルの概要やパケット構造の定義などを知るには、以下のようなドキュメントを参照するとよいだろう。
- Common Internet File System (CIFS) File Access Protocol[マイクロソフトCIFSドキュメント・ファイル(英文)]
- Common Internet File System (CIFS)[マイクロソフト MSDNドキュメント(英文)]
- CIFS: A Common Internet File System[マイクロソフト MINDドキュメント(英文)]
- LMX Server[The Open Group(英文)](LMX ServerはUNIX上に実装されたSMBサーバ。LMXはLAN Manager/Xの略)
- Common Internet File System Technical Reference[SNIA(Storage Networking Industry Association)(英文)](SNIAはネットワーク・ストレージに関する業界団体)
- 日本Sambaユーザ会(SambaはUNIX上で利用できるSMBサービス)
Copyright© Digital Advantage Corp. All Rights Reserved.