目次
OSI参照モデルとは
ネットワークアーキテクチャは、複数のプロトコルを組み合わせたものですが、いったい、どのようなプロトコルをどのように組み合わせればよいのでしょうか?
ネットワークアーキテクチャに必要なプロトコルの組み合わせを考えるためのモデルがOSI参照モデルです。OSI参照モデルは国際的な標準規格を定めるISOが作成していて、通信に必要なルールや機能、すなわちプロトコルを次の7つの階層に分けて考えています。
- 第1層(レイヤ1) 物理層
- 第2層(レイヤ2) データリンク層
- 第3層(レイヤ3) ネットワーク層
- 第4層(レイヤ4) トランスポート層
- 第5層(レイヤ5) セッション層
- 第6層(レイヤ6) プレゼンテーション層
- 第7層(レイヤ7) アプリケーション層
7つの階層のプロトコルがすべて正常に連携してはじめて通信可能です。ある階層のプロトコルに何か問題があれば、最終的なコンピュータ間の通信はできなくなってしまいます。
以降では、OSI参照モデルの各階層について解説します。
第1層(レイヤ1) 物理層
OSI参照モデルの第1層 物理層は、コンピュータ間の通信データを物理的に伝えるための役割を担っている階層です。この物理層のプロトコルによって、コンピュータ内部で扱っている「0」と「1」のデジタルデータを電気信号や光信号などの物理的な信号に変換します。この変換を変調と呼びます。また、電気信号や光信号を伝える伝送媒体(ケーブル)やケーブルを接続するコネクタの仕様も物理層のプロトコルで決めます。
通信速度は主に物理層のプロトコルによって決まります。より高度な変調方式でより高周波数に対応できる伝送媒体を利用することで、通信速度が高速になります。
第2層(レイヤ2) データリンク層
OSI参照モデルの第2層 データリンク層は、同一ネットワーク内のインタフェース間でのデータの転送を行うための階層です。「ネットワーク」という言葉はとても広い意味で利用されますが、技術的な観点で「ひとつの」ネットワークは、ルータで区切られている範囲です。ルータはネットワークを区切り、ネットワーク同士を相互接続する機器です。また、一つのネットワークを構成するネットワーク機器がレイヤ2スイッチです。
データリンク層では、同じネットワークの中のインタフェース間という限られた範囲におけるデータの転送を行うためのプロトコルを定めています。そして、同じネットワーク内のデータ転送を行うデータリンク層は、物理層がベースです。物理的に電気信号や光信号を伝えることができなければ、データリンク層は機能しません。
図 3 データリンク層
第3層(レイヤ3) ネットワーク層
OSI参照モデルの第3層 ネットワーク層は、異なるネットワーク間のデータの転送を行う役割を担っています。送信元と宛先が異なるネットワーク上に接続されていたとしても、ネットワーク層によって正しくデータを送り届けられるようにしています。ネットワーク間の最終的な送信元と宛先の間のデータの転送を指して「エンドツーエンド通信」と呼びます。
企業の社内ネットワークやインターネットは、複数のネットワークがルータで相互接続されています。ネットワークを相互接続しているルータが、適切なデータの中継を行うことで、エンドツーエンドの通信を実現できます。
人間同士の会話は、声が届く範囲でしかできません。しかし、コンピュータ同士の通信では、同じネットワーク内だけではなくて、遠く離れた異なるネットワークのコンピュータ同士でも可能です。ただ、異なるネットワークのコンピュータ間のデータの転送は、同じネットワーク内のデータの転送を繰り返していることになります。つまり、ネットワーク層のエンドツーエンド通信は、データリンク層による同じネットワーク内のデータ転送がベースです。
第4層(レイヤ4) トランスポート層
OSI参照モデルの第4層 トランスポート層の役割は、エンドツーエンド通信の信頼性を確保することです。大きなサイズのデータを転送するときには、複数に分割します。ネットワークの障害の影響で、分割されたデータの一部でも失われると、全体を再構成できなくなります。また、分割されたデータを再構成するためには、分割されたデータの順序が必要です。トランスポート層のプロトコルによって、エラーで失われたデータを再送したり、順序を明確にしたりするなどの制御を行い、エンドツーエンド通信の信頼性を確保します。そして、トランスポート層はネットワーク層が機能してはじめて意味を持ちます。
第5層(レイヤ5) セッション層
OSI参照モデルの第5層 セッション層の役割は、アプリケーションへのデータの振り分けです。1台のコンピュータ上で、複数のアプリケーションを同時に起動してデータを送受信することがあります。あるコンピュータに届いたデータを正しくアプリケーションへ振り分けなければいけません。セッション層のプロトコルによって、正しくアプリケーションへのデータの振り分けを行います。
第6層(レイヤ6) プレゼンテーション層
OSI参照モデルの第6層 プレゼンテーション層では、データの表現形式を一致させる役割を担っています。コンピュータがやり取りするデータは「0」と「1」のデジタルデータです。最終的にデータを扱うのは、基本的に人間です 。普通の人間にとっては「0」「1」の羅列は意味不明です。
そこで、「0」と「1」のデジタルデータを人間が理解できるように「表現(プレゼンテーション)」しなければいけません。たとえば、文字です。文字を表現するために文字コードを決めて、「a」というアルファベットの文字は「01100001」に対応付けています。アルファベットなどの1バイト文字を決めている文字コードはASCIIコードと呼ばれます。また、「0」と「1」で音声や動画を表現するMP3やH.264といったコーデックもプレゼンテーション層のプロトコルに相当します。
以上のように、プレゼンテーション層のプロトコルは、文字コードのようなデータの表現形式を決めています。データの表現形式を一致させることで、通信相手との間で正しくデータを取り扱うことが可能です。
第7層(レイヤ7) アプリケーション層
OSI参照モデルの第7層 アプリケーション層は、ユーザが利用するアプリケーション固有のルールを決めています。アプリケーションがデータをやりとするときには、何らかのリクエスト(要求)を送信して、そのリプライ(応答)を受信します。リクエスト/リプレイの種類(フォーマット)や手順を決めているのがアプリケーション層のプロトコルです。
たとえば、Webサイトを見る場合はWebブラウザを利用します。WebサイトはWebページで構成されていて、Webページのファイルの転送を行います。そのためには、Webページの指定方法(アドレス)やファイルを転送するための手順などを決めています。
WebブラウザからWebサーバアプリケーションに指定したWebページの内容を送ってくれるようにリクエストします。Webブラウザからのリクエストに対するリプライとして、Webページの内容を転送します。Webブラウザ側で転送されてきたWebページの内容を表示することで、「Webサイトを見る」ことができます。
OSI参照モデルの利用
OSI参照モデルは、ネットワークを介したコンピュータ間の通信を考えるための「モデル」で、実際のネットワークアーキテクチャではありません。
実際の通信を行うためには、各階層の機能を実現するためのプロトコルを開発して、それらをまとめてネットワークアーキテクチャとしてコンピュータ上で利用できるようにします。ただ、現在のネットワーク環境ではOSI参照モデルの7階層に基づいたネットワークアーキテクチャを利用しているわけではありません。もっと階層構造がシンプルなTCP/IPを利用しています。
だからといって、OSI参照モデルが重要ではないというわけではありません。OSI参照モデルは、ネットワークの通信を考えるときのモノサシの役割があります。
たとえば、ネットワークを構成するネットワーク機器がどんな役割を担っているかをOSI参照モデルの階層で説明します。「レイヤ2スイッチ」の「レイヤ2」とはOSI参照モデルのデータリンク層です。つまり、レイヤ2スイッチは、同一ネットワーク内でデータを転送する役割を担っているネットワーク機器です。また、「ルータはレイヤ3のネットワーク機器」と表現されることがよくあります。これは、ルータはOSI参照モデルのネットワーク層、すなわちエンドツーエンド通信を実現する役割のネットワーク機器だからです。
さらに、障害が発生して切り分けを行うときに、OSI参照モデルに基づいて考えます。たとえば、「この障害は物理層レベルの障害だ」というと、物理的な信号がやり取りできていない状態です。具体的にはケーブルが断線していたり、ケーブルが抜けていたり、ポート自体が故障しているなどを意味します。
OSI参照モデル 各階層のまとめ
OSI参照モデルは、ネットワークを介した通信を考えるモデルに過ぎませんが、通信の仕組みを理解するうえでとても重要です。CCNA試験などの資格試験でもよく出題されます。
以下にまとめる、OSI参照モデルの各階層についてしっかりと把握しておきましょう。概要の文章から、どんな役割があるかをイメージできるようになればOKです。
階層 | 概要 |
物理層 | 物理的な信号を伝えられるようにする |
データリンク層 | 同一ネットワーク内のデータの転送を行う |
ネットワーク層 | エンドツーエンド通信を行う |
トランスポート層 | エンドツーエンド通信の信頼性を確保する |
セッション層 | アプリケーションへデータを振り分ける |
プレゼンテーション層 | データの表現形式を一致させる |
アプリケーション層 | アプリケーション固有の機能を実現する |