NetBIOSコマンドを利用した通信手順とはどのようなものか? いくつかの具体例をもとに、実際のやりとりを概観する。
■連載目次
第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回 ブラウザ・サービス
前回は、NetBIOSネットワークにおいて、コンピュータや各種のサービスなどを識別するための「NetBIOS名」について解説した。ネットワークでの通信を正しく行うには、通信相手を特定(アドレッシング)するためのしくみが必要だが、NetBIOSでは、ユーザーなどが勝手気ままに付ける16bytesの文字列(=名前)を使ってこれを実現している(このうち最後の1bytesは、途中からネットワークのリソース・タイプを表す副指数として使われるようになった)。TCP/IPネットワークにおけるIPアドレスのように、サブネット・マスクなどでネットワークを論理的に分割し、それらのネットワーク間でパケットをルーティングするなどは考慮されていない。これはNetBIOSが、すべてのコンピュータやネットワーク・サービスが、フラットに接続された小規模なネットワークを想定して設計されているためだ。
そして第3回で解説したように、ネットワーク・アプリケーションは、ハードウェアBIOSのネットワーク拡張として設計された非常にプリミティブなNetBIOSコマンド(=API)を組み合わせることで、各種のネットワーク処理を行う。繰り返しになるが、第3回でご紹介した主要なNetBIOSコマンドの一覧をここに再掲載しよう。
コマンド名 | コマンドのはたらき | |
---|---|---|
一般 | ||
RESET | NetBIOS名を管理するテーブル、セッション・テーブルをリセットし、ステーションを再構成する | |
CANCEL | 直前に行った要求をキャンセルする | |
名前関連サービス | ||
ADD NAME | ユニーク名(NetBIOS名)を登録する | |
ADD GROUP NAME | グループ名(NetBIOS名)を登録する | |
DELETE NAME | 登録されている名前を削除する | |
セッション・サービス | ||
CALL | コネクションの確立要求を行う | |
LISTEN | ステーションをコネクション可能な状態にする | |
HANG UP | 確立されたコネクションを終了する | |
SEND | 確立されたコネクションを使ってデータを送信する | |
RECEIVE | 指定したコネクションを使ってデータを受信する | |
RECEIVE ANY | 任意のコネクションを使ってデータを受信する | |
SESSION STATUS | セッションの状態を取得する | |
データグラム・サービス | ||
SEND DATAGRAM | 特定のステーション、またはグループに向けてデータグラムを送信する。あて先としてグループ名を指定したときには、そのグループの各メンバがデータグラムを受信する | |
SEND BROADCAST DATAGRAM | ネットワーク内のすべてのステーションに向けてデータグラムを送信する | |
RECEIVE DATAGRAM | このステーションに登録されたNetBIOS名に向けたデータグラムを受信する | |
RECEIVE BROADCAST DATAGRAM | SEND BROADCAST DATAGRAMによって送信されたブロードキャストを受信する。ブロードキャスト・データグラムがステーションに到着しても、アプリケーションがこのコマンドを実行しなければ、そのデータグラムは破棄される | |
NetBIOS名によるNetBIOSネットワークでのアドレッシングの基礎を理解したところで、次はこれらのNetBIOSコマンドを使って、どのような手順で通信(データ交換)が行われるのかを詳しくみていくことにしよう。ただしネットワーク・アプリケーションの作成が目的ではないので、プログラム・コードは掲載せず、サーバ側とクライアント側でどのようなやりとりが行われるのか、その手順を説明するにとどめる。
具体的には、NetBIOS名がどのように登録されるのか、セッション・サービスにおいて、通信を行うためのセッションがどのような手順で確立されるのか、データグラム・サービスを使って、通信相手を指定したデータグラム通信がどのような手順で行われるのか、同じくデータグラム・サービスを使って、ネットワーク内のすべてのコンピュータに対するブロードキャストがどのように行われるのかを説明しよう。これにより、NetBIOS APIを呼び出しながらさまざまなサービスを実現しているNetBIOSアプリケーションのおおまかな挙動を理解することができるだろう。
Copyright© Digital Advantage Corp. All Rights Reserved.