OSI参照モデル
OSI参照モデル(Open Systems Interconnection reference model)とは, ISO(国際標準化機構)により策定されたコンピュータなどの機器の通信機能を7つの階層に分類し, 各層にプロトコルを定義したモデルである.
OSI参照モデルの歴史
OSI参照モデルが策定されるまでのネットワークは, 単一のベンダ製品だけで構築されており, 異なるベンダ製品間で通信を行うのが困難な状況だった.
ネットワークの普及につれ, 特定のベンダに依存することなく異なるベンダ製品間で通信したいという要望が増加したため, 異機種間の通信を実現するための設計方針として1984年にOSI参照モデルが策定された.
当初は, OSI参照モデルに準拠したコンピュータやネットワーク機器が開発され, 普及していくのを想定していたが, 1990年代にTCP/IPが急速に普及したため, OSI参照モデルに準拠した製品が普及することはなかった.
つまり, 各ベンダの開発する機器はOSI参照モデルに準拠した製品ではなく, TCP/IPを実装した製品としてリリースされたのである.
しかし今日, OSI参照モデルはネットワークにおける通信の基本的な考え方として利用されているため, 理解しておく必要がある.
OSI参照モデルの階層構造
OSI参照モデルは第1層(レイヤ1) ~ 第7層(レイヤ7)までの7つの層で構成されている.
層 | 名前 |
---|---|
第7層(レイヤ7) | アプリケーション層 |
第6層(レイヤ6) | プレゼンテーション層 |
第5層(レイヤ5) | セッション層 |
第4層(レイヤ4) | トランスポート層 |
第3層(レイヤ3) | ネットワーク層 |
第2層(レイヤ2) | データリンク層 |
第1層(レイヤ1) | 物理層 |
OSI参照モデルにおける各層の役割
OSI参照モデルの各層では, コンピュータなどの機器が以下のような役割を担う.
層 | 役割 |
---|---|
第7層(レイヤ7) | アプリケーション毎の固有の規定 |
第6層(レイヤ6) | 文字コードなどのデータ表現形式の規定 |
第5層(レイヤ5) | 通信プログラム間の通信の確立, 維持, 終了の規定 |
第4層(レイヤ4) | データ転送の信頼性を確保するための規定 <例> TCP, UDPによる通信 |
第3層(レイヤ3) | ネットワーク間のエンドツーエンドの通信のための規定 <例> IPパケットの宛先アドレスに基づいた通信 |
第2層(レイヤ2) | 直接的に接続されたノード間の通信のための規定 <例> MACフレームの宛先アドレスに基づいた通信 |
第1層(レイヤ1) | ビット列を電気信号に変換するための規定 |
OSI参照モデルにおけるカプセル化と非カプセル化
コンピュータ間で通信する場合, 送信側ではレイヤ7 -> 6 -> 5 -> 4 -> 3 -> 2 -> 1の順番に処理を行う.
各層で何かしらの処理がなされるにつれ, 処理された情報がヘッダとしてデータの先頭に付加され, 下位層に渡されるというプロセスが繰り返される.
このように上位層のヘッダを下位層のヘッダが包み込んでいくことをカプセル化と呼ぶ.
そして, レイヤ7から順番に処理されたのち, レイヤ1の処理が終わると, 最終的に電気信号となって送信され, その電気信号はケーブルの中を通ることとなる.
一方, 受信側のコンピュータでは受信した電気信号をレイヤ1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7の順番で処理を行う.
レイヤ1では電気信号をビット列に変換し, レイヤ2ではヘッダの情報に基づいた処理を行った上でヘッダを取り外し, ... といった塩梅である.
最終的には全てのヘッダが外れ, アプリケーション上でデータを受け取ることが可能となる.
このように, 下位層から上位層に進むにつれて各層のヘッダが取り外されることを非カプセル化と呼ぶ.
PDU
PDU(プロトコルデータユニット)とは, 機器間の通信において使用されるデータ単位の総称である.
レイヤ2のデータ単位はフレーム, レイヤ3のデータ単位はパケット, レイヤ4のデータ単位はセグメントといった具合である.
レイヤ | PDU |
---|---|
レイヤ2(データリンク層) | フレーム |
レイヤ3(ネットワーク層) | パケット |
レイヤ4(トランスポート層) | セグメント |
また, フレームやパケットのヘッダを取り除いたデータ部分のことをペイロードと呼ぶ.
レイヤ1: 物理層
物理層では, ネットワークの物理的な接続や伝送方式を規定している.
ノードからデータを送信する場合は, コンピュータ内部で使用している"0"と"1"のビット列を電気信号に変換し, ネットワーク上のケーブルへ伝送を行う.
逆に, ノードがネットワーク上のケーブルから電気信号を受信した場合は, ノードが理解できるように"0"と"1"のビット列に変換し, コンピュータ内部に情報を取り込む.
物理層はPHYとも呼ばれる.
レイヤ2: データリンク層
データリンク層では, 同じセグメント内で直接接続されたノード間の通信について規定している.
例えば, LANではEthernetなどにより同じセグメント内で直接接続されたノード間の通信を行っており, WANではPPPやHDLCなどにより隣接するネットワーク機器間の通信を行っている.
データリンク層では, 各ノードにハードウェアアドレスや物理アドレスと呼ばれるものを割り当て(例: MACアドレス), その情報をもとに通信を行う.
また, FCS(Frame Check Sequence: フレームチェックシーケンス)を付加することで, 受信したフレームにエラーがないかどうかの検出をすることができる.
レイヤ3: ネットワーク層
ネットワーク層では, ノード間の起点から終点まで(エンドツーエンド)の通信を規定している.
例えば, ノードから送信されたデータをスイッチ, ルータなどのネットワーク機器を経由し, 送信先のノードへ届けるためにソフトウェアアドレス(例: IPアドレス)をノードに割り当て, ルータはこのソフトウェアアドレスに基づき, 送信先のノードまでの最適なパスを選択してデータを送信する.
また, パケットを送信先のノードまで最適な経路を選択して送信することをルーティングと呼ぶ.
レイヤ4: トランスポート層
トランスポート層では, ノード間のデータ伝送における信頼性の提供と, アプリケーション間でセッションを開始する上で必要なポート番号の割り当てについて規定している.
データ伝送における信頼性を確保するために, ノード間でコネクションの確立, エラー制御, フロー制御, 順序制御などを行う.
ノード間の論理的な経路をコネクションと呼び, アプリケーション間の論理的な経路をセッションと呼ぶ.
また, コネクションはセッション上でデータ伝送を行うための論理的な経路であるといえる.
TCP/IPでのコネクションはTCPコネクションのことを指す.
トランスポート層のプロトコルはデータ伝送における信頼性を提供するが, TCP/IPにおいてはTCPを使用する通信の場合で, UDPを使用する通信では信頼性は確保されない.
経路 | 説明 |
---|---|
コネクション | セッション上でデータ伝送を行うための論理的な経路のことである. レイヤ4 トランスポート層の機能である. |
セッション | 通信の開始から終了までを管理する1つの単位のことである. ノード間でセッションが確立すると, 通信で使用するアプリケーションがデータ伝送可能な状態となる. レイヤ5 セッション層の機能である. |
レイヤ5: セッション層
セッション層では, アプリケーション間でのセッションの確立, 維持, 終了を規定している.
例えば, 1つのコンピュータ上でブラウザとメーラーを起動させてそれぞれが通信しているとき, ブラウザ側で送受信しているデータを誤ってメーラー側で送受信しないように, 各アプリケーション間の論理的な経路(セッション)を制御する.
セッションが確立するとデータ伝送が可能な状態となる.
レイヤ6: プレゼンテーション層
プレゼンテーション層では, 圧縮方式, 文字コード, データの暗号化/複合などの, データの表現形式を規定している.
これにより, 送信側と受信側で使用している表現形式が異なっていても, 送信側で「コンピュータ固有の表現形式」から「標準的な表現形式」に変換して送信し, 受信側で「標準的な表現形式」から「コンピュータ固有の表現形式」に再度変換することで, 文字化けの問題を解消することができる.
レイヤ7: アプリケーション層
アプリケーション層では, アプリケーション間の通信が実現できるよう, プロトコルがアプリケーション毎に固有に規定されている.
例えば, Webページの閲覧にはHTTP, 電子メールの送受信にはSMTPやPOP3, といったプロトコルを使用する.