プロトコルスタックとは
プロトコルスタック(Protocol stack)とは、
コンピュータネットワークにおいて、データの送受信を円滑に行うために、複数のプロトコルを階層的に組み合わせたものです。プロトコルスイート(Protocol suite)という言葉もほぼ同じ意味で使われますが、厳密には「プロトコルスイート」がプロトコルの定義を指すのに対し、「プロトコルスタック」はそれらのプロトコルをソフトウェアで実装したものを指すことがあります。
プロトコルスタックの概要
プロトコルスタック内の各プロトコルは、特定の役割を担うように設計されています。この
モジュール化された構造により、プロトコルの設計や評価が容易になります。各層のプロトコルは、上下の層と連携して動作し、全体として通信機能を実現します。最下層のプロトコルはハードウェアと直接やり取りを行い、上位層はさらに高度な機能を提供します。最終的に、ユーザーアプリケーションは最上層のプロトコルを通じてネットワークと通信します。
一般的なプロトコルスタックは、メディア層、
トランスポート層、
アプリケーション層の3層で構成されることが多いです。
オペレーティングシステムによっては、これらの層間のインターフェースを明確に定義し、異なる層のソフトウェアが連携できるようにしています。
- - メディア層: 物理的な媒体(ケーブルや無線など)を介したデータの送受信を制御します。例えば、イーサネットやWi-Fiなどのハードウェアとやり取りする層です。
- - トランスポート層: データがネットワーク上でどのように転送されるかを管理します。TCP/IPなどがこの層に属し、データの分割、順序制御、エラー処理を行います。
- - アプリケーション層: アプリケーションがネットワークを利用するためのインターフェースを提供します。ウェブブラウザやメールソフトなどがこの層を利用します。
インターフェースの例
プロトコルスタックにおける層間のインターフェースの例として、以下のようなものが挙げられます。
- - メディア・トランスポート層インターフェース: トランスポートプロトコルソフトウェアがメディアやハードウェア(カードドライバ)をどのように使用するかを定義します。ODIやNDISなどがこのインターフェースの例です。
- - アプリケーション・トランスポート層インターフェース: アプリケーションプログラムがトランスポート層をどのように使用するかを定義します。ソケットやWinsockなどがこのインターフェースの例です。
プロトコルスタックの重要性
異なるネットワーク間での通信を可能にするために、プロトコルスタックは非常に重要な役割を果たします。異なる
通信プロトコルを使用するネットワーク間でデータを受け渡すためには、共通のプロトコルを介してやり取りする必要があります。
例えば、無線LANと有線LANで構成されたネットワーク環境において、あるコンピュータから別のコンピュータへデータを送信する場合を考えてみましょう。
T ~ ~ ~ T
[A] [B]_____[C]
上記の例では、コンピュータAとBは無線で接続されており、コンピュータBとCは有線で接続されています。この環境で、コンピュータAからコンピュータCへデータを送信するには、各ネットワークのプロトコルだけでなく、ネットワーク間のプロトコルも必要となります。
もし、それぞれのネットワーク媒体に対応したプロトコルのみを使用する場合、新しい媒体が登場するたびに新しいプロトコルを開発する必要があります。しかし、プロトコルスタックの考え方では、既存のプロトコルを基盤として、その上に新しいプロトコルを重ねていくことで、より柔軟なネットワーク構成を実現することができます。
具体的には、コンピュータAからCへデータを送信する際、上位層のプロトコルが、まず、コンピュータBを経由して到達できることを把握し、コンピュータAの下位層は、その情報を基に無線プロトコルを使用してコンピュータBにデータパケットを送信します。コンピュータBでは、受け取ったパケットを上位層に渡し、上位層はパケットの情報を基に、最終的な宛先がコンピュータCであることを認識します。そして、コンピュータBの上位層は、ケーブルのプロトコルを使ってコンピュータCにパケットを転送します。コンピュータCでは、受け取ったパケットを上位層に渡し、上位層は宛先が自分自身であると認識し、さらに上位層にデータを渡します。このようにして、ネットワーク上の複数のコンピュータ間でデータが送受信されます。
実際には、プロトコルスタックは上記の例よりも多層化されていることが一般的です。
プロトコルスタックの例
関連項目