プロトコルスタック

Article on other languages:

del.icio.us del.icio.us
Digg Digg
Furl Furl
Reddit Reddit
Rojo Rojo
Add to OnlyWire

プロトコルスタック: Protocol stack)とは、コンピュータネットワーク通信プロトコルスイートのソフトウェア実装されたものを指す。

概要

スイート(=一組)内の個々の通信プロトコルはある1つの目的のために設計されることが多い。このようなモジュール化によって設計や評価をより容易にする。各プロトコルモジュールは上下の他のモジュールと互いに通信するので、一般にこれをプロトコルがスタック状に階層化されたものとして見ることになる。最下層のプロトコルはハードウェアとのやり取りを行う層である。より高い層はさらに様々な機能をそれに付与していく。ユーザーアプリケーションは最上層とだけやり取りする(OSI参照モデルを参照されたい)。

実装では、プロトコルスタックは、メディア(媒体)層、トランスポート(転送)層、アプリケーション(応用)層の3層に分けられることが多い。オペレーティングシステムによっては、これらの層間のインタフェースを明確に定義していることもある。つまり、メディア層とトランスポート層のインタフェースと、トランスポート層とアプリケーション層のインタフェースである。

メディア・トランスポート層インタフェースは、トランスポートプロトコル・ソフトウェアからメディアやハードウェア(カードドライバ)をどう使うかを定義している。例えば、TCP/IPトランスポート・ソフトウェアとイーサネットハードウェアとのやり取りを定義している。この種のインタフェースの例として、ODIMicrosoft WindowsMS-DOSNDISがある。

アプリケーション・トランスポート層インタフェースは、アプリケーションプログラムからどのようにトランスポート層を使うかを定義している。例えば、ウェブブラウザからTCP/IPトランスポートソフトウェアを使う方法が定義されている。この種のインタフェースの例として、UNIX系ではソケットSystem VSTREAMS、マイクロソフトではWinsockがある。

一般的プロトコルスイートについて

  T ~ ~ ~ T
 [A]     [B]_____[C]

ABC という3台のコンピュータがあり、ABは無線で接続され、IEEE 802.11などの適当な通信プロトコルで通信を行うとする。一方、BCはケーブルで繋がれ、適当なプロトコルでデータを交換する。しかし、それぞれに使われている通信プロトコルは、それぞれメディア(媒体)に固有であって、AからCへ通信を行う機能を持たない。このためネットワーク間を繋ぐプロトコルが必要となった。

このケーブルと無線の両方を扱うプロトコルを新たに開発するという考え方もあったが、その場合、新たなネットワーク媒体が登場するたびに、それに対応していく必要が生じる。従って、基本のプロトコルはそのままとしておき、それらの上に新たなプロトコルが動作するよう設計する方が容易である(インターネットのプロトコルがその例である)。その場合、各ネットワークで2層のプロトコルスタックができることになる。ネットワーク間プロトコルはベースとなるプロトコルと簡単な言語でやり取りし、ベースとなっているプロトコル同士が直接やり取りすることはない。

A から C にあるデータを送るとき、まず上位プロトコルに要求が送られる。A の上位プロトコル層は C へは B を経由して到達できることを知っている。そこで無線プロトコルに対して B にデータパケットの送信を指示する。A の下位層は渡されたパケットに自身の通信に必要な情報を付与して B にパケットを送る。B はパケットを上位層に渡し、上位層はパケットの情報から最終あて先が C であることを知る。B の上位層はケーブルのプロトコルを使って C にパケットを転送する。受信したパケットは再び上位層に渡され、あて先が自分であることから C の上位層はさらに上位の層(おそらくアプリケーション)にパケット内のデータを渡す。一般に、実際のプロトコルスタックはこれよりも多層化されている。

プロトコルスタックの例を以下に示す:

+- - - - - -+       +- - - - - - - - +
| HTTP      |       |アプリケーション層|
+- - - - - -+       +- - - - - - - - +
| TCP       |       | トランスポート層 |
+- - - - - -+       +- - - - - - - - +
| IP        |       | ネットワーク層   |
+- - - - - -+       +- - - - - - - - +
| Ethernet  |       | リンク層        |
+- - - - - -+       +- - - - - - - - +
| RJ45/CAT5 |       | 物理層          |
+- - - - - -+       +- - - - - - - - +

関連項目

This article is from Wikipedia. All text is available under the terms of the GNU Free Documentation License.


Giant Panda

Mercedes Car
James Bond Guide
This site monitored by SitePinger.net