第19回 NetBIOS over TCP/IPプロトコル(その2)基礎から学ぶWindowsネットワーク(3/4 ページ)

» 2004年07月23日 00時00分 公開

 次は、通信に先立つNetBIOS名の検索について見てみる。

ブロードキャスト環境における名前の検索

 NetBIOSにおける通信では、最初に通信先の相手マシンを見つける操作が必要となる。NBT環境では、これはNetBIOS名から相手マシンのIPアドレスを求めるという操作になる。具体的には、通信相手のNetBIOS名をブロードキャストすると、その名前を登録したノード自らがその検索要求に対する応答パケットを返す、というふうに動作する。この場合、最初の問い合わせはブロードキャストだが、応答パケットはユニキャストとなる。

 以下に具体的な例を示しておく。これは、クライアント(PC)のコマンド・プロンプト上で「net view \\server」というコマンドを実行したところである。クライアントはこのコマンドを実行するために、まず「server」という名前のマシンを検索しようとして、NBTの検索パケットをブロードキャスト送信する。パケットの構造については前回の「2.NBTパケットの構造」にある「名前サービス・パケット」の項を参照していただきたい。

名前の検索パケット(ブロードキャスト環境)
NBTでは、通信に先立って、NetBIOS名から通信相手のマシンを特定するためのIPアドレスを求める。これを名前解決という。NetBEUIプロトコルと違って、NBTプロトコルでは、DNSに似た構造のパケットを利用して問い合わせや応答を行っている。この名前解決の結果は一定時間だけNetBIOSキャッシュに格納され、無用な問い合わせパケットの送信を抑えるようになっている。いったんIPアドレスが解決されれば、次は目的のマシンに対して直接ユニキャストで通信を開始する。
 (1)SERVERというNetBIOS名の問い合わせパケット。検索したい名前を問い合わせパケットに入れてブロードキャストで送信すると、該当するマシンが応答を返す。
 (2)応答パケット。NetBIOS名の所有者(登録しているマシン)が責任を持ってパケットを返す。
 (3)問い合わせ時はブロードキャスト・アドレス(172.16.1.255)あてに送信されるが、応答パケットはユニキャストで送信される。
 (4)目的のNetBIOS名。
 (5)結果のIPアドレス。これが「SERVER」に対するIPアドレス。

 名前解決の結果は一定時間だけNetBIOSキャッシュに格納される。次にまた通信を行う場合、キャッシュ中に該当するエントリがあれば、キャッシュからIPアドレスが取り出され、問い合わせパケットを送信することはない。NetBIOS名キャッシュの内容を確認するには「nbtstat -c」コマンドを実行すればよい。解決したNetBIOS名とユニークかグループかの種別、IPアドレス、寿命(キャッシュされているエントリの有効期限。単位は秒)の情報が表示される。

C:\>nbtstat -c

Local Area Connection:
Node IpAddress: [172.16.1.101] Scope Id: []

                  NetBIOS Remote Cache Name Table

        Name              Type       Host Address    Life [sec]
    ------------------------------------------------------------
    SERVER         <20>  UNIQUE          172.16.1.2          580

 この画面で、「Life」の場所に記録されているのがこの「SERVER<20>」というエントリの有効期限である。デフォルトでは600秒(10分)であり、これを過ぎるとキャッシュから削除される。その後SERVERに対する名前解決を行おうとすると、またNetBIOSの名前問い合わせパケットが送信され、結果がキャッシュに格納されることになる。

WINS環境における名前の検索

 次は、WINS環境におけるNetBIOS名の検索について見てみよう。

 WINSサーバが利用できる場合は、名前解決をブロードキャストではなく、WINSサーバが行う。WINSサーバへの接続はブロードキャストではなく、TCPやUDPによる通信によって行われるため(通常はDHCPなどで各クライアントへWINSサーバのIPアドレスを配布する)、IP的に到達可能な場所(IPリーチャブルなどという)にWINSサーバが存在すれば、どこに配置されていてもよい。そのため、複数のネットワークをまとめて1台のWINSサーバで管理したり、複数台のWINSサーバを相互に連携・複製させてWINSサーバで集中的に名前を管理したりすることにより、大規模なネットワークでもNetBIOS名を一括して管理することができる。ただしこのためには、各ネットワークにおけるマシン名やワークグループ名(ドメイン名)などが重複しないように、あらかじめ慎重に検討しておく必要がある。

 WINSサーバが存在する場合の名前解決の例を次に示しておく。先の例と比べると、最初の問い合わせパケットがブロードキャストではなく、WINSサーバへの直接問い合わせパケットになっているし、それに対する応答も、対象となるマシンが直接応答するのではなく、WINSサーバから応答が返っている。

名前の検索パケット(WINS環境)
WINSサーバが利用できる環境では、名前解決はWINSサーバに依頼して行われる(ネットワークの設定によっては、ブロードキャストやLMHOSTSファイルなど、ほかの方法を併用することもある)。先のブロードキャスト環境の場合とは違い、問い合わせとその応答は、WINSサーバとのユニキャスト通信によって行われる。
 (1)NetBIOS名の問い合わせパケット。WINSサーバに対して直接問い合わせパケットを送信している。ただしこのネットワーク環境の例では、SERVER自身がWINSサーバを兼用しているため、直接相手に問い合わせているようにも見える。
 (2)応答パケット。WINSサーバからの応答。
 (3)問い合わせ時も応答もともにユニキャストで通信しているため、ネットワークに余計な負担がかからない。

 WINSサーバには、WINSクライアントから送信されたNetBIOS名とIPアドレスが登録されている。またWINSサーバ同士で連携して内容を複製することも可能であり、負荷分散や耐障害性の向上に役立っている。以下にWINSサーバに登録されているデータの例を示しておく。

WINSサーバに登録されたNetBIOSエントリ
WINSサーバは、各クライアントが行っていた名前解決などの手段を代替するものであり、NetBIOS名を集中的に管理する。
 (1)これを選択して、[操作]メニューから[レコードの表示]を実行すると、現在登録されているNetBIOS名データベースの一覧を表示させることができる。
 (2)複製パートナーの設定。複数のWINSサーバでデータベースを複製・共有することができる。
 (3)登録されているレコード名。SERVERはブラウザ・サーバとしても機能しているので、「--_MSBROWSE_-」というNetBIOS名も保持している。PC1やSERVER、WORKGROUPという名前はWINSクライアントから登録された情報。静的なエントリを手動で登録することも可能であり、各クライアントでLMHOSTSファイルを個別に管理するよりも管理が容易になる。
 (4)NetBIOSリソース・タイプ。
 (5)このリソースに対して割り当てられているIPアドレス。
 (6)レコードの状態。WINSサーバでは、NetBIOS名の登録が削除されてもしばらくはそのまま残っており、キャッシュの役割を果たしている。
 (7)登録されたレコードの有効期限。

ブロードキャスト環境における終了時のNetBIOS名の解放

 各システムがシャットダウン(終了)する場合、そこで利用されていたNetBIOS名は「解放」され、(必要ならば)ほかのシステムが利用できるようになる。解放を明示的に指示することにより、この名前をキャッシュしている側では、そのNetBIOS名が利用できなくなったことを認識できる。

 解放のための通知は、どれか特定のマシンに対して通知するわけではないので、ブロードキャストで行われ、受信した側ではキャッシュ内容の削除などの処理を行う。また、この解放要求の送信に対する受信確認も特に必要とはしない。各マシンにキャッシュされたNetBIOSの名前解決の情報は、いずれ時間が経つと自動的に消去されるからだ。

システム終了時の名前の解放パケット(ブロードキャスト環境)
システムが終了する場合は、使用していたNetBIOSを「解放」し、サービスが利用できなくなったことを周囲に通知したり、ほかのマシンがその名前を利用したりできるようにする。終了時には、この3つのパケットだけが外部へ送信され、システムがシャットダウンした。ただしなぜか「コンピュータ名<20>(サーバ・サービス)」の解放要求は送信されていないようだ。
 (1)「WORKGROUP<1E>」の解放(Release)は、所属しているワークグループのブラウザ候補からの解放を表す。
 (2)「WORKGROUP<00>」の解放は、所属しているワークグループからの解放(離脱)を表す。
 (3)「PC1<00>」の解放はワークステーション・サービスの終了を表す。いずれのパケットに対しても、ほかのマシンからの応答はない。
 (4)これらのパケットはブロードキャストで送信されている。

WINS環境における終了時のNetBIOS名の解放

 WINSが導入されている環境では、システム終了時のNetBIOS名の解放要求は、WINSサーバに向けてのみ送信される。ブロードキャストは使われないので、やはりネットワークに対する負担は少ない。

システム終了時の名前の解放パケット(WINS環境)
WINSサーバを利用している場合は、NetBIOS名の解放要求はすべてWINSサーバへ送られ、さらにその応答を待つようになっている。
 (1)シャットダウンするシステムから送信されるNetBIOS名の解放要求。3つのNetBIOS名に対する解放がWINSサーバに送信されている。
 (2)WINSサーバからの応答。3つの解放要求はすべて受理され、解放が行われた。各解放要求にはそれぞれを識別するIDが付けられているため、このようにまとめて応答を返しても、要求と応答の対応が混乱することはない。
 (3)WINSサーバとの通信はユニキャストで行われる。

  

Copyright© Digital Advantage Corp. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
「サプライチェーン攻撃」対策
1P情シスのための脆弱性管理/対策の現実解
OSSのサプライチェーン管理、取るべきアクションとは
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。