「ネットワークのページ」に戻る

reference count : access counter

WinsockとNetBIOS

Windowsではwinsockというパッケージを用いて、UNIXで使われる バークレーソケットと同じインターフェース(API)を使うことができます。 多くのネットワークアプリケーションはこれを用いて実現されています。 しかし、Windows のファイル共有やプリンタの共有はバークレーソケット ではなく、NetBIOSと呼ばれるインターフェース(API)を用いて実現されています。

NetBIOSのコンピュータ名はDNSの名前とは別物

このNetBIOSではインターネットで広く用いられているDNS(Domain Name Service) と異なる形のネームサービスを行います。Windowsで扱われる 「ネットワークコンピュータ」で表示されているコンピュータの名前は NetBIOSのネームサービスによって提供されているものです。 このために私はSambaを使ってUNIXマシンのファイルシステムを Windowsで使えるようにした際にとまどってしてしましました。 コンピュータを探そうとして、Windows の[スタートメニュー] から [検索]の[他のコンピュータ]を選択して、DNSのネームサーバに 登録されている名前を指定しても探し出すことができなかったからです。 ここで指定すべき名前は、DNSの名前ではなく、NetBIOSの提供する NetBIOS名だったです。 DNSとNetBIOSでの名前は別物なのです。 ここでは、このNetBIOSに関係する内容を扱います。

NetBIOSとはネットワーク操作用API

NetBIOSは1984年にIBMが開発したネットワークプロトコルの インターフェースの(API)です。 この詳しい説明をする前に、DOS時代のプロトコル群について 少し触れたいと思います。 DOS時代にファイルシステムの共有や、プリンタの共有を実現するために いくつかのプロトコルとそれを実現するプロダクトが開発されました。 それには以下のようなものがあります。
プロダクトプロトコル
LanManagerNetBEUIマイクロソフトが開発。 APIはNetBIOS拡張インターフェース。ルーティング機能なし
NetwareIPX/SPXNovell社が開発。ルーティング機能あり
このNetBEUIで採用されていたインターフェースはNetBIOSの 拡張インターフェースでした。 ここで使われている NetBIOSは通信処理を行うインターフェース(API)なので、 他のプロトコルを使う際にも利用できます。実際、これは ネットワークの操作をトランスポートプロトコルから切り離す ために作られたのです。

その思惑通りにNetwareを作っていたNovellもLanManagerのシステムと 共存するために、NetBIOS over IPXを作りました。 プロトコルとしてはIPXを用いますが、そのインターフェース(API)は NetBIOSと同じものを使えるようにしたのです。 またTCP/IPもNetBIOSのインターフェースから使えるようになりました。 これはNetBIOS over TCP/IP(あるいはNETBT) と呼ばれます。 このようにして、NetBIOSは複数で使うことのできるAPIとなりました。

以下に、Windowsのネットワークの階層構造を示します。

SMB (Server Message Block) など TCP/IP applications
NetBIOS interface (API) Winsock interface (API)
NetBIOS over IPX NetBIOS over NetBEUI NetBIOS over TCP/IP(NBT) Winsock
IPX/SPX NetBEUI TCP/IP
NDIS 3.0 interface

NetBIOSのネームサービス

ブラウズ

Windowsネットワークのユーザは利用可能なネットワーク上のリソースを 知るために「ネットワークコンピュータ」を開いて、確認します。 このようなリソースを表示することをブラウズと言います。

マスターブラウザ

この情報を管理するマシンがマスターブラウザです。 リソースを提供するコンピュータは、サービスを開始時と ある時間間隔ごとに定期的に、サーバ告知パケットをブロードキャスト します。マスターブラウザはこの情報を受け取って、 ブラウズリストを管理します。 ブラウズクライアントはそのリストを見たいときに、マスターブラウザに それを要求するのです。 では、ネットワーク上のどのマシンがマスターブラウザになるかは どのようにして決められるのでしょうか。必要が生じたときに (マスターブラウザがまだなかったり、マスターブラウザがダウンした時) ブラウザ選定プロトコルによって決められるのです。具体的には、 OSのタイプ(NT server, NT workstation, 95 など)、 オンラインの期間、ホスト名の長さなどによって選定されます。

ドメインマスターブラウザ

上で、リソースついてサーバはサーバ告知パケットを ”ブロードキャスト”してマスターブラウザに教える と書きました。通常ブロードキャストはルータを越えて送信することは しませんから、他のサブネットのコンピュータのブラウズは できないのでしょうか。これを可能にするのがドメインマスターブラウザです。 ドメインマスターブラウザは複数のTCP/IPサブネット上にあるNTドメインの ブラウズリストを管理します。それぞれのサブネットのNTドメインに存在する マスターブラウザが、ドメインマスターブラウザと同じ ブラウズリストの情報を持つように同期をとります。 この同期の手順ですが、マスターブラウザはそのNTドメインに ドメインマスターブラウザが存在するか、WINSサーバにたずね、 存在すれば、そのドメインマスターブラウザと通信して 同期をとることになります。

NetBIOS名の管理

NetBIOS名はインターネットのドメイン名とは全く異なる物です。 このNetBIOSの名前空間は階層構造になっておらず、一次元的なフラット な名前となります。これを管理する方法には以下の二つのものがあります。

LM_HOSTS

windowsディレクトリにはLM_HOSTSというファイルを作り、 そこにIPアドレスと名前の対応を書いておくと、そのマシンでは NetBIOS名を解決できるようになります。LM_HOSTS.SMPという名前の サンプルファイルがwindowsディレクトリ(c:\windowsなど)にあるので、それを 参照してください。

WINS (Windows Internet Name Service)

これは動的にNetBIOS名を管理する方法です。 各ホストはオンラインになった時にWINSサーバに自分を登録し、 オフラインになる時にWINSサーバ登録を削除します。 これにより、自動的に名前の解決ができるようになります。

コマンドプロンプトで使うコマンド

ブラウズリストを表示する
net view

net add e: \\hiagari\fujiki

用語集

プライマリドメインコントローラ

認証に必要なNTドメインのユーザアカウント情報を管理するホスト

SMB (Server Message Block)

NetBIOSを利用して実現したシステムの主要なものにSMBがあります。 SMBはWindowsのファイルおよびプリンタの共有を実現するために、 Windowsに標準でついているものです。階層的には Windowsネットワークの NetBIOS interfaceの上に位置します。

LM アナウンス

とは、LanManagerアナウンス・ブロードキャストのことで、 これはOS/2などのクライアントから参照するブラウズリストで 見えるようにするために必要


参考文献:Sambaリファレンス 翔泳社
「ネットワーク」のページへ戻る