
OSI参照モデルとは、ISO(国際標準化機構)によって標準化された通信体系のこと。
通信に必要な機能をうまくまとめていて、ネットワークエンジニアがプロトコルの議論を行う際に引き合いに出されることが多い。ネットワークを学習する際の登竜門的な知識。
OSI参照モデルに準拠したプロトコルを「OSIプロトコル」と呼ぶが、実はこれ自体はあまり普及していない。
世界で最も広く利用されているプロトコルである「TCP/IP」も、OSIに準拠したプロトコルではない。
ではなぜOSI参照モデルを学ぶかというと、通信プロトコルの多くはOSI参照モデルに当てはめて考えることができ、通信機能全体におけるそのプロトコルの位置付けやおおまかな役割を整理して理解するのに役立つから。
OSI参照モデルはあくまで「モデル」であり、各層のおおまかな役割を示しているに過ぎない。プロトコルの細かい仕様を把握するには、そのプロトコルの仕様書を読む必要がある。
OSI参照モデルとプロトコルの階層化
「プロトコルの階層化」という概念を知っておくと、OSI参照モデルの理解が容易になる。
ISOはOSIプロトコルを標準化するにあたって、「通信に必要な機能を7つの階層に分け、機能を分割することで、複雑になりがちなネットワークプロトコルを単純化することができる」と考えた。
各層は下位層から特定のサービスを受け、上位層にそれを渡す。(逆も然り)
つまり理想的に言えば、第一層から第七層までのモジュールを作って繋ぎ合わせれば通信が行える、というのがOSI参照モデルの考え方。
各階層は独立した機能と見なすことができ、いずれかの階層に変更を加えても全体に影響しないため、拡張性や柔軟性に富んだシステムを構築することができる。
上位層と下位層の間でやりとりする際のルールを「インターフェース」といい、
通信先の同じ層同士でやり取りする際のルールを「プロトコル」という。
プロトコルの階層化の例
例えば、離れた場所に住むAさん・Bさんが行なっている「文通」を例に考えてみる。
ここでは、文通の一連の処理を「読み書き層」「配達層」の3層に分けるものとする。文通の流れは A)手紙を書く→配達される→B)手紙を読む なので、読み書き層が上位層、配達層が下位層となる。
| 階層名 | 役割 | |
|---|---|---|
| 3 | 読み書き層 | 手紙を書く or 読むこと |
| 2 | 差し出し/受け取り層 | 手紙を差し出す or 受け取ること |
| 1 | 配達層 | 手紙を指定の場所に配達すること |
インターフェースとプロトコル
差出/受取層と配達層の間のルール(インターフェース)について考えてみる。
まずはAさんが手紙を送る際(上位層→下位層)のルールとしては、「必ず郵便局が指定したポストに投函すること」などが考えられる。これを守らず、他人の家のポストや適当な箱に手紙を入れてしまうと当然手紙は届かない。
逆にBさんが手紙を受け取る際(下位層→上位層)のルールとしては、「指定の場所の家のポストに届けること」などが考えられる。
次に読み書き層同士のルール(プロトコル)について考えてみる。
パッと思いつくのは「お互いが理解できる言語で書くこと」というルール。Aさんが日本語で手紙を書いても、Bさんが外国人のため日本語を理解できなければ、手紙が届いても意味がない。
階層化のメリット
先ほど階層化のメリットは「特定の階層に変更を加えても、それが全体に影響しないこと」だと説明した。文通を例にそれを確かめよう。
例えば、読み書き層において「言語は英語を使うこと」や「色はピンクを使うこと」などのルールを追加したとする。ルールが適用されるのは手紙自体であり、配達層は手紙の中身の情報には干渉しないので、言語や色がなんであろうが処理に影響はないと言える。
では、配達層において「手紙はバイクではなくランニングで届けること」というルールを追加したとする。AさんBさんからすれば、手紙が指定の住所に届きさえすれば文通が成立するので、届け方がどうであろうが影響はなさそうだ。
このように同一階層同士のルール変更(プロトコル)の場合は、他の層に一切影響がない。
ただし、異なる層同士におけるルール変更(インターフェース)の場合は、関係する上下層に影響が出る。
例えば差出/受取層 - 配達層の間で、「手紙の投函先はポストではなく郵便局に直接持ってくること」といったルールが追加された場合、差出/受取層では「これまで近所の道路脇のポストに投函していたが、遠方の郵便局まで持ってかなきゃいけない」という手間が増えるし、配達層では「道路脇のポストを見て回る必要がなくなった」という業務内容の変更が生まれる。
がしかし、インターフェースを変更した場合でも、その影響があるのは差出/受取・配達の2層のみで、読み書き層に影響はない。
このように、「文通」における各機能を複数層に分割させることで、インターフェースやプロトコルの変更が全体に及ぼす影響を最小化することができる。
OSI参照モデルの概要
| 7 | アプリケーション層 | 特定のアプリケーションに特化したプロトコル。 例)HTTP - Webアクセス、SMTP - メール |
| 6 | プレゼンテーション層 | 機器固有のデータ表現形式をネットワーク共通の形式に変換するプロトコル。 例)文字コード、圧縮 |
| 5 | セッション層 | 通信の管理を行う。コネクション、データ転送のタイミングの管理 |
| 4 | トランスポート層 | エラー検出/再送など、データを確実に目標のアプリケーションに届ける。 例)TCP、UDP |
| 3 | ネットワーク層 | ネットワークを超えた通信の管理。アドレスの管理と経路の選択。 例)IP |
| 2 | データリンク層 | 同じネットワークに接続された隣接ノード間での通信に関する規定 例)HDLC、MACフレーム |
| 1 | 物理層 | 0と1を、電圧の高低や光信号に変換する。コネクタやケーブル形状の規定。 |
エンティティとプロトコル
それぞれの層に属する実体のある通信機器のことを「エンティティ」や「アプライアンス」などと呼び、上図の例で紹介しているプロトコルは、エンティティ同士が通信を行う際の取り決めのことを指す。
例えば、物理層ではリピータ、データリンク層ではブリッジ、ネットワーク層ではルータなどの機器が使用される。
トランスポート層ではゲートウェイと呼ばれる装置が機能する。よく耳にする「ファイアウォール」や「プロキシサーバ」などもゲートウェイの仲間。
セッション層以上の階層では、特定の機器が機能するというより、エンドポイントのコンピュータのOSまたはアプリケーションにおいて処理されるイメージ。
プロトコルスイート
このように1つのシステムは物理層からアプリケーション層のいずれかに該当するプロトコルを複数組み上げて構築する。
その中で、例えば「ネットワーク層がこのプロトコルなら、トランスポート層はこのプロトコルがいい」といった、プロトコル同士の相性がある。
これを「プロトコルスイート」と呼び、最も代表的なものがIPプロトコルを中心に組まれた「TCP/IPプロトコルスイート」である。
TCP/IPプロトコルスイートはOSIプロトコルとは別に独自の階層モデルを持ち、OSI参照モデルと比較すると以下のようになる。
| OSI参照モデル | TCP/IP |
|---|---|
| アプリケーション層 | アプリケーション層 |
| プレゼンテーション層 | |
| セッション層 | |
| トランスポート層 | トランスポート層 |
| ネットワーク層 | インターネット層 |
| データリンク層 | |
| 物理層 | ネットワークインターフェース層 |

