このようなネットワークの相互運用性や柔軟性を可能にしているのは、ネットワークが機能単位に階層的に構成されており、必要に応じて機能単位を取り替えられるようになっているためだ。これについては、Windowsが標準サポートするNetBEUIやTCP/IP、IPX/SPXプロトコルを例にとって前回簡単に説明した。
ネットワーク階層の基本モデルとして、ISOとCCITT(国際電信電話諮問委員会)によって決定されたOSI参照モデル(OSI reference model。「OSI階層モデル」と呼ばれることもある)がある。このOSI参照モデルでは、通信プロトコルを機能ごとに7つの階層に分類し、各階層で実現する機能を定義している。図にすると次のようになる。
図の最下位にある物理層(第1層)は、通信のための物理的な電気信号を規定するレイヤであり、最上位にあるアプリケーション層(第7層)はファイル転送やメッセージ送信などを行うネットワーク・アプリケーションのレイヤである。そしてこの間に5個のレイヤ(第2層〜第6層)が位置付けられている。Windows環境などでユーザーがネットワークを使う場合、ユーザーはあくまで上位のアプリケーションを使っているだけだが、実際の通信は、図のようなレイヤを順次下に下っていき、最終的な物理層を通してネットワークの先にあるコンピュータと通信することになる。
OSI参照モデルでは、これら各レイヤで提供されるべき機能が規定されている。図のとおり厳密には7つの階層に分けられるのだが、おおまかには3つのグループに分類して考えてよい。この3つのグループについては図の右側に示した。
最初の第1層と第2層は、ネットワーク・インターフェイスに対応するレイヤで、例えばイーサネットやケーブル・モデム、ADSLモデム、無線LANなどはこのレイヤに属する。このレイヤは、例えばイーサネットなど、同一通信媒体上にある2つのノード間で信号をやり取りし、パケットを交換するための機能を提供する。
第3層と第4層では、第1〜第2層のパケット通信の機能を使って、ネットワーク上にある任意の2つのノード間(同一通信媒体でなくてもよい)や、そのノード上で動作しているアプリケーション間でのデータ通信を可能にする。
そして5層〜7層では、下位層を使ってやり取りするデータの内容(ファイルやメッセージの転送など)を規定する。Windowsのファイル共有サービスは、このレイヤで規定されることになる。
2つのコンピュータが通信によって情報をやり取りするためには、両者で交換するデータの内容や、通信手順などをあらかじめ取り決めておかなければならない。これが「プロトコル(protocol)」であることは前回に述べた。前出の図において、各階層はそれぞれに規定された機能を提供すると述べたが、このとき提供される機能は「サービス(service)」と呼ばれる。そして上位層は、下位層が提供するこのサービスを利用して、自身のサービスを実装する。このとき、サービスを呼び出したり、サービスからの応答を得たりするための規約は「インターフェイス(interface)」と呼ばれる。
前出の図は、左右にある2つのコンピュータが通信する様子を示したものだ。OSI参照モデルを使ったネットワークを考える上で重要なことは、2つのコンピュータが通信する場合、プロトコルによって通信手順が規定されるのは、あくまで双方の同一レイヤだという点である。つまりプロトコルとは、図の左右方向(黒い矢印)を取り決めるものであり、インターフェイスとは縦方向(青い矢印)を取り決めるものだ。
例えば、図の左側の第7層から右側の第7層への通信手順は、あくまでこのレイヤ間でのみ守られていればよく、それ以下の層の実装がどのようなものであろうと構わない。具体的に、左側の第7層は、第6層が提供するインターフェイスを使ってサービスを呼び出す。すると第6層は第5層のインターフェイスを使ってサービスを呼び出す……、というふうに順次下層レイヤを呼び出し、第1層を経てコンピュータの外部へとパケットが送出される。次に右側のコンピュータでは、データを第1層で受け取り、第2層、第3層と上がって第7層に到達する。このとき、左右の第7層同士は共通のプロトコル(=通信手順)で通信しなければならないのだが、それ以外の層は、まったく異なる実装で実現されていても、インターフェイスさえ守られれていれば何ら問題がない。先に述べたような、イーサネットや無線LAN、ADSLなど、まったく異なる物理媒体を使いながら、特に意識することなく共有ファイルなどを使えるのは、このようにネットワーク・システムの内部がモジュール化され、階層化されており、異なるサービスを組み合わせ可能になっているためだ。
OSI参照モデルの詳細を解説するのは本稿の目的ではないが、各レイヤの機能について簡単にまとめておこう。
階層 | 名称 | 機能 |
---|---|---|
第7層 | アプリケーション層 | アプリケーション間でのデータのやり取りを規定する |
第6層 | プレゼンテーション層 | アプリケーション層で扱うデータの構造を規定する |
第5層 | セッション層 | プロセス間での同期や、接続形式(全二重/半二重)などを考慮しながら、通信するノード間での接続や解除、一時停止、再開などのセッションの手順を規定する |
第4層 | トランスポート層 | メッセージを確実に転送するための転送確認、エラー訂正などを行う |
第3層 | ネットワーク層 | ネットワーク・アドレスを使って発信元や受信先が分かるようなパケットを形成してデータリンク層に送る。これにより、ネットワーク上の2つのコンピュータ間での通信方法が規定される |
第2層 | データリンク層 | 同一のネットワーク媒体(イーサネットなど)に接続されたコンピュータ間での通信方法を規定する。物理層から受け取ったデータが正しいものかどうかを判断し、正しい場合だけ上位のネットワーク層に渡す |
第1層 | 物理層 | ネットワーク媒体上を流れる信号のやり取りについて規定する |
OSI参照モデルの概要 |
これらOSI参照モデルの詳細については、別稿「詳説TCP/IP 第3回 OSI参照モデル」が参考になる。
Windowsネットワークのプロトコル・レイヤをいま述べたOSI参照モデルに当てはめると次のようになる。ただしこの図は、分かりやすさを第一に考えて、初期のWindowsネットワークをベースとし、かつ細部を省いて大幅に単純化してある。現在利用されているWindows 2000やWindows XPのネットワーク構成はもっと複雑である。これら、Windowsネットワークの詳細なプロトコル解説については、この連載の後半で行う予定である。
■ネットワーク・ハードウェア
下位レイヤから順に見ていこう。最下位の物理層とデータリンク層には、ネットワーク・ハードウェアが位置付けられる。具体的には、イーサネット・カードや、ケーブル・モデム、ADSLモデムなどのネットワーク・デバイスである。物理層では、やり取りされる信号の電気的な特性(レベルやタイミングなど)が規定されている。そしてデータリンク層では、1つのネットワーク・セグメントに接続された2つのコンピュータ間でパケット(イーサネットでは「フレーム」という)を送受信するという機能を担当する。実際に送受信されるパケットの構造や符号化方法、各コンピュータに対するアドレスの付け方などもここで規定されている。
■NDISドライバ
ネットワーク・ハードウェアの上位にあって、データリンク層としてこれらのネットワーク・ハードウェアを制御するのがNDISドライバである。NDISはNetwork Driver Interface Specificationの略で、「エヌディス」と発音する。NDISは、ネットワーク・カードの機能を利用するためのデバイス・ドライバ・インターフェイスである。ネットワークを使ってパケットを送受信したり、カードを制御したりする方法は、実際のネットワーク・カードや物理媒体ごとに異なっているが、NDISはこれらの機能を仮想化して、上位のプロトコル・スタック(TCP/IPやNetBEUIなどのプロトコルを実装している機能モジュールのこと。プロトコルが階層的に実装されているので「プロトコル・スタック」という)から汎用的に利用できるようにした、ネットワーク・デバイス・ドライバのためのインターフェイス仕様である。3COM社とMicrosoft社によって決められた。また、NDISは上位のプロトコル・スタックと、下位のネットワーク・カードとの仲介を行うという機能も担っている。NDISインターフェイスを利用することにより、1つのネットワーク・カードに対して複数の上位プロトコル・スタックを共存させることができるし(複数のプロトコル・スタック間で1つのネットワーク・カードを共有する)、その逆に、1つのプロトコル・スタックが複数のネットワーク・カードを利用することもできる。
■ネットワーク層/トランスポート層プロトコル
このNDISのインターフェイスを使用して、ネットワーク層/トランスポート層プロトコルを実装したものが図の「NetBEUI」「TCP/IP」「NWLINK」である(これらは簡易に「トランスポート・ドライバ」などと呼ばれることもある)。前回述べたように、Windows環境では、同じネットワーク・デバイスとNDISドライバを使いながら、複数の異なるネットワーク層/トランスポート層ドライバを同時に使うことが可能である。
■NetBIOSインターフェイス
そしてこれらのトランスポート層ドライバにアクセスするために、NetBIOSインターフェイスを利用することができる。NetBIOSはプロトコルではなく、あくまでインターフェイスなので、単なる直線で図示している。
だが「インターフェイス」とはいっても、上位から渡された要求を、単に下位のNetBEUIやTCP/IPプロトコルへそのまま渡しているわけではない。NetBIOSではいくつかのトランスポート層サービスを提供しており、そのサービスを実現するために、下位プロトコルとしてNetBEUIやTCP/IPを利用しているということである。
NetBIOSで実現されているトランスポート層サービスは非常にシンプルである。相手の名前を指定して(NetBIOSでは通信相手はIPアドレスやMACアドレスではなく、すべて「名前」で指定する)、データグラム指向の通信を行うか、セッション指向の通信を行うことができる。この2種類の通信方法は通信における最も基本的な通信形態である。
データグラム指向の通信とは、データのかたまり(データグラム)を、特定の相手に対して(もしくはブロードキャストで)送信するだけという、いわば送りっぱなしの通信方法である。送信したデータが正しく相手に届いたかどうかは確認できないので、「信頼性」に欠けるが(ここでいう信頼性とは、通信相手に確実にデータが届くということを意味している)、あらかじめセッションを確立したり、受信確認をしたりという手間が不要であり、プロトコル的には「軽い」という特徴がある。TCP/IPプロトコルでいえば、UDPを使った通信に相当する。
セッション指向の通信とは、あらかじめ2つのコンピュータ(アプリケーション)間で、通信のための専用の通信路(通信チャネル)を開設し、そこを通じてデータを送受信する方法である。データが相手に送られたかどうかをプロトコルのレベルできちんと確認し、届いていなければ再送処理が自動的に行われる。上位アプリケーションでは、「信頼性」のある通信を期待することができる。ただしその分通信のオーバーヘッドは大きくなる。TCP/IPプロトコルでいえば、TCPを使った通信に相当する。
■SMBサービス
Windowsネットワーク階層の最上位にあり、共有フォルダや共有プリンタなどのネットワーク・サービスを実現するプロトコルがSMB(Server Message Block)である。SMBは、NetBIOSインターフェイスを通して下位のトランスポート層プロトコルを呼び出し、ネットワーク・サービスを実現する。
SMBサービスで提供されている機能としては、相手のコンピュータ上で公開されているリソースへ接続して、そこにあるファイルを読み書きしたり、2台のコンピュータ間で名前付きパイプ(通信路)を開設して、データを送受信したりする、などがある。
Copyright© Digital Advantage Corp. All Rights Reserved.