[[ネットワーク講座]] > OSI参照モデル
#norelated
#contents
* OSIとは? [#y6d08863]
[[OSI]]とは、Open Systems Interconnectionの略であり、日本語では「&color(red){開放型システム間相互接続};」と訳されています。
[[OSI]]は、ISO(International Organization for Standardization 国際標準化機構)によって策定された[[ネットワークアーキテクチャ]]です。
[[OSI]]の実装は複雑だったので普及せず、シンプルだった[[TCP/IP]]が普及しました。
[[OSI]]や[[OSI参照モデル]]は、教育用の概念として残りました。
* OSIの階層構造は? [#h13a1825]
[[OSI]]の[[ネットワークアーキテクチャ]]では、通信に必要な機能を、7つの独立した階層に分けて定義しています。
各階層のことを「[[レイヤ]](layer)」とも言います。
| 第7層(レイヤー7) | [[アプリケーション層]] |
| 第6層(レイヤー6) | [[プレゼンテーション層]] |
| 第5層(レイヤー5) | [[セッション層]] |
| 第4層(レイヤー4) | [[トランスポート層]] |
| 第3層(レイヤー3) | [[ネットワーク層]] |
| 第2層(レイヤー2) | [[データリンク層]] |
| 第1層(レイヤー1) | [[物理層]] |
覚え方:頭文字をつなげて「アプセとネデブ」と覚える。
-階層の呼び方
-- 名前:「ネットワーク層」のように名前で呼ぶ
-- 数値:「第3層」、「レイヤー3」のように数値で呼ぶ
* OSIネットワークの通信フローは? [#f60036f5]
データの転送に必要な制御情報([[ヘッダ]])を付加しながら、各階層で受け渡しを行います。
** 送信側の処理は? [#q536c7ea]
+ 送信元は、上位の階層(第7層・[[アプリケーション層]])から、順に下位の階層に向けて処理していく。
+ 各階層では、データの前に[[ヘッダ]]を付加した後、下位の階層に渡す。
+ データリンク層では、[[ヘッダ]]に加えて、[[トレーラ]]も付加される。
+ 物理層では、データリンク層から受け取ったデータを、層新作のネットワークに応じた信号に変えて、ネットワークに送信する。
CENTER:&ref(networking15.gif);
>http://www.infraexpert.com/study/networking3.html
- ※[[ヘッダ]]とは、制御情報のことです。
- ※[[トレーラ]]とは、データリンク層で扱うデータの&color(red){エラーチェック};に使用される制御情報です。
ある計算式(CRCなど)に基づいた値を、[[FCS]](Frame Check Sequense)に入れます。
[[トレーラ]]は、データリンク層のみで付加されます。
** 受信側の処理は? [#bb4074cf]
+ 受信側は、下位の階層(第1層・[[物理層]])から、順に上位の階層に向けて処理していく。
+ [[データリンク層]]では、[[FCS]]を確認しエラーチェックを行い、その後ヘッダを確認しヘッダを取り外して、上位の[[ネットワーク層]]にデータを渡す。
+ [[ネットワーク層]]以上の階層では、ヘッダに応じた処理を行った上でヘッダを取り外して、上位の階層にデータを渡す。
+ 受信側で7階層すべての処理が完了すると、送信された元データを受け取ることができる。
CENTER:&ref(networking16.gif);
>http://www.infraexpert.com/study/networking3.html
- ※[[ヘッダ]]を取り除いたデータ部分だけのことを[[ペイロード]]と呼びます。
** カプセル化とは? [#ce070cc7]
データに[[ヘッダ]]を付加することを&color(red){カプセル化};といいます。
逆に、[[ヘッダ]]を取り外すことを&color(red){非カプセル化};(逆カプセル化)といいます。
* OSIの各階層は? [#uea368fc]
OSIの7階層の定義・役割を確認しましょう。
** (1) 物理層とは? [#leda8d66]
[[物理層]]では、&color(red){データと信号の変換にかかわる機能};が定義されています。
- コンピューター内部で扱っている「0」と「1」の情報(ビット列)を信号に変換して、ネットワーク上へ転送する。
- ネットワーク上から受信した信号を「0」と「1」の情報(ビット列)に変換して、コンピューター内部に取り込む機能。
物理層では、次の項目が規定されています。
- 電気的な条件: 信号として扱う電流・電圧など。
- 機械的な条件: ケーブルやハブの仕様など。
- 論理的な条件: 使用するケーブルのピンアサイン(電極の配置)など。
** (2) データリンク層とは? [#bd5c1046]
[[データリンク層]]では、&color(red){隣接ノード間のデータ通信にかかわる機能};が定義されています。
隣接ノードとは、1つの回線に接続された[[ノード]]のことです。
データリンク層では、以下の規定がされています。
- [[ハードウェアアドレス]]
- [[フレーム]]のフォーマット
- [[フロー制御]]
- エラー制御
- 同期
*** フレームとは? [#f3ad4970]
データリンク層で扱うデータを[[フレーム]]といいます。
*** ハードウェアアドレスとは? [#g7c0d413]
隣接ノード間で通信を行うためには、通信相手を識別する情報が必要です。
[[ハードウェアアドレス]]は、データリンク層で、隣接ノードを識別するために使用されるアドレスです。
ハードウェアアドレスは、「&color(red){物理アドレス};」とも呼ばれます。
LANでは、通信相手を識別するハードウェアアドレスとして、[[MACアドレス]]を使用します。
データリンク層では、1つの伝送媒体に接続されたノード間(LANなど)でのデータ転送が定義されています。
そのため、異なる回線を介したネットワークへの通信はできません。
異なる回線を介したネットワークへの通信は、ネットワーク層(第3層)で定義されています。
** (3) ネットワーク層とは? [#w1d1319b]
[[ネットワーク層]]では、&color(red){複数の異なるネットワークを介した[[ノード]]間の通信([[エンドツーエンド]]の通信)を実現するための機能};が定義されています。
[[ルータ]]によって接続されたネットワークを、異なるネットワークといいます。
異なるネットワーク上の[[エンドツーエンド]]の[[ノード]]間で通信を実現するために、ネットワーク層では次の項目が規定されています。
- [[ソフトウェアアドレス]]
- [[ルーティング]]
- データの中継
*** ソフトウェアアドレスとは? [#e2055869]
[[ソフトウェアアドレス]]は、ハードウェアに依存しないアドレスです。
ソフトウェアアドレスは、「&color(red){論理アドレス};」とも呼ばれます。
ソフトウェアアドレスは、ネットワーク番号とノード番号から構成されています。
| ネットワーク番号 | ノード番号 |
=どのネットワークに所属する、どのノードなのかを把握できるようになっています。
ソフトウェアアドレスの代表例は、[[TCP/IP]]で使用する[[IPアドレス]]があります。
*** パケットとは? [#u0e7f542]
ネットワーク層で扱うデータを[[パケット]]または[[データグラム]]といいます。
*** ルーティングとは? [#o12f9ff2]
[[ルーティング]]とは、あて先ネットワークへの&color(red){最適なルートを決定すること};です。
ネットワーク層の通信では、ソフトウェアアドレスを参照して、ルーティングします。
*** データ中継とは? [#x9bb8189]
ネットワーク層の通信では、ルーティングによって決定した最適なルートに、データを中継します。
** (4) トランスポート層とは? [#k52eaa76]
[[トランスポート層]]では、&color(red){[[エンドツーエンド]]の透過的な通信の信頼性を提供するための機能};が定義されています。
トランスポート層では、仲介する様々なネットワークの違いを吸収して、[[エンドツーエンド]]通信の透過的な信頼性を提供するために、次の項目が規定されています。
| エラー制御 | エラーがあったデータを再送する |
| フロー制御 | ネットワークの混雑の度合いに応じて、データの送信量を変化させる |
| 順序制御 | 届いたデータを下の順序に再構成できるようにする |
** (5) セッション層とは? [#q8930988]
[[セッション層]]では、&color(red){[[エンドツーエンド]]のアプリケーションプロセス間の通信を実現するための機能};が定義されています。
セッション層では、次の項目を規定しています。
- アプリケーションプロセスの識別・管理
- セッションパラメータの定義
など
サーバからの応答は、クライアントのソフトウェアアドレスを基に、クライアントまで中継されます。
そして、セッション層では、受信したデータをアプリケーションプロセスを識別し、それぞれ対応したアプリケーションに振り分けます。
このように、セッション層では、アプリケーションプロセスを識別し、アプリケーション間で意味のある通信を実現します。
** (6) プレゼンテーション層とは? [#f0d654d8]
[[プレゼンテーション層]]では、&color(red){データの表現形式の違いを吸収する};ために、ユーザーアプリケーションで使用するデータの表現形式と、ネットワーク上で使用するデータの表現形式を定義しています。
プレゼンテーション層では、次の項目を規定しています。
- 圧縮方法
- 文字コード
- データの暗号化/復号
など
プレゼンテーション層によって、送信側ユーザーが使用する表現形式と、受信側ユーザーが使用する表現形式が違っていても、送信側で共通の表現形式に変換し、受信側で受信した表現形式から使用している表現形式に変換することができます。
** (7) アプリケーション層とは? [#l32b0389]
[[アプリケーション層]]では、それぞれのアプリケーションのサービスが利用できるように、固有の規定が行われています。
例えば、Webページの閲覧や、電子メールの送受信、ファイル転送などであれば、それぞれのサービスを実現するための[[プロトコル]]が用意されています。
これらのプロトコルによって、ユーザーは目的のサービスを利用することができます。