プロトコル‐スタック【protocol stack】
プロトコルスタック
【英】protocol stack
プロトコルスタックとは、コンピュータ上で、通信を実現するための一連の通信プロトコル群を実装しているモジュール(プログラム部品)のことである。
通信プロトコルは階層的な構造を持っている。その各階層で、それぞれ異なる役割のプロトコルが機能しており、各プロトコルが連携して初めて通信が実現されてる。例えば、インターネットで用いられているTCP/IPでは、TCPやIPに加えて、HTTP、Ethernet(IEEE 802.3)などの通信プロトコルが機能しており、それらが連携して初めて通信機能を実現している。
プロトコルスタックは、一揃い(suite)という意味で、プロトコルスイートと呼ばれることもある。特にTCP/IPの場合は、「インターネットプロトコルスイート」と呼ばれることも多い。ちなみに、スタック(stack)とは「積み重なり」といった意味である。
プロトコルスタック
![]() | この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。2023年1月) ( |
プロトコルスタック(英: Protocol stack)は、コンピュータネットワーク用のプロトコルの階層である。プロトコルスイート(英: Protocol suite)も同じ意味で使われることが多い。ただし「プロトコルスイート」は各種プロトコルの定義、「プロトコルスタック」はそれらのソフトウェアでの実装と、使い分けられることもある。
概要
スタック(階層)やスイート(一組)内の、個々の通信プロトコルはある1つの目的のために設計されることが多い。このようなモジュール化によって設計や評価をより容易にする。各プロトコルモジュールは上下の他のモジュールと互いに通信するので、一般にこれをプロトコルが積み重ねられたものとして見ることになる。最下層のプロトコルはハードウェアとのやり取りを行う層である。より高い層はさらに様々な機能をそれに付与していく。ユーザーアプリケーションは最上層とだけやり取りする。(OSI参照モデルを参照)
実装では、プロトコルスタックは、メディア(媒体)層、トランスポート(転送)層、アプリケーション(応用)層の3層に分けられることが多い。オペレーティングシステムによっては、これらの層間のインタフェースを明確に定義していることもある。つまり、メディア層とトランスポート層のインタフェースと、トランスポート層とアプリケーション層のインタフェースである。
メディア・トランスポート層インタフェースは、トランスポートプロトコル・ソフトウェアからメディアやハードウェア(カードドライバ)をどう使うかを定義している。例えば、TCP/IPトランスポート・ソフトウェアとイーサネットハードウェアとのやり取りを定義している。この種のインタフェースの例として、ODI、Microsoft WindowsやMS-DOSのNDISがある。
アプリケーション・トランスポート層インタフェースは、アプリケーションプログラムからどのようにトランスポート層を使うかを定義している。例えば、ウェブブラウザからTCP/IPトランスポートソフトウェアを使う方法が定義されている。この種のインタフェースの例として、UNIX系ではソケットやSystem VのSTREAMS、マイクロソフトではWinsockがある。
一般的プロトコルスイートについて
T ~ ~ ~ T [A] [B]_____[C]
A、B、C という3台のコンピュータがあり、AとBは無線で接続され、IEEE 802.11などの適当な通信プロトコルで通信を行うとする。一方、BとCはケーブルで繋がれ、適当なプロトコルでデータを交換する。しかし、それぞれに使われている通信プロトコルは、それぞれメディア(媒体)に固有であって、AからCへ通信を行う機能を持たない。このためネットワーク間を繋ぐプロトコルが必要となった。
このケーブルと無線の両方を扱うプロトコルを新たに開発するという考え方もあったが、その場合、新たなネットワーク媒体が登場するたびに、それに対応していく必要が生じる。従って、基本のプロトコルはそのままとしておき、それらの上に新たなプロトコルが動作するよう設計する方が容易である(インターネットのプロトコルがその例である)。その場合、各ネットワークで2層のプロトコルスタックができることになる。ネットワーク間プロトコルはベースとなるプロトコルと簡単な言語でやり取りし、ベースとなっているプロトコル同士が直接やり取りすることはない。
A から C に、あるデータを送るとき、まず上位プロトコルに要求が送られる。A の上位プロトコル層は、 C へは B を経由して到達できることを知っているので、無線プロトコルに対して B にデータパケットの送信を指示する。A の下位層は、渡されたパケットに自身の通信に必要な情報を付与して B にパケットを送る。B はパケットを上位層に渡し、上位層はパケットの情報から最終あて先が C であることを知る。B の上位層は、ケーブルのプロトコルを使って C にパケットを転送する。受信したパケットは、再び上位層に渡され、あて先が自分であることから C の上位層はさらに上位の層(おそらくアプリケーション)にパケット内のデータを渡す。一般に、実際のプロトコルスタックは、これよりも多層化されている。
プロトコルスタックの例を以下に示す:
関連項目
- protocol stackのページへのリンク