ネットワーク　OSI参照モデルの階層構造

OSI（Open Systems Interconnection）参照モデルって？
---
コンピュータの持つべき通信機能を階層構造に分割したモデルである。
国際標準化機構(ISO)によって策定されました。
OSI基本参照モデル、OSIモデルなどとも呼ばれ、通信機能（通信プロトコル）を7つの階層に分けて定義しています。
ネットワークエンジニアが設計、構築、障害対応などでプロトコルに関して議論する場合には、OSI参照モデルに基づいて話をすることが一般的で、ネットワークエンジニアとして完全にマスターする必要があると言えます。

OSI参照モデルの階層構造
----
OSI参照モデルは第1層から第7層まで7つの層があります。

|層|名称|役割|
|----|----|----|
|第７層（レイヤ７）|アプリケーション層|アプリケーションごとの固有規定|
|第６層（レイヤ６）|プレゼンテーション層|文字コードなどのデータの表現規定|
|第５層（レイヤ５）|セッション層|通信プログラム間の通信の確立、維持、終了規定|
|第４層（レイヤ４）|トランスポート層|ネットワークの端から端までの通信管理規定|
|第３層（レイヤ３）|ネットワーク層|ネットワークにおける通信経路の選択、データ中継規定|
|第２層（レイヤ２）|データリンク層|直接的（隣接的）に接続されているノード間の信号の受け渡し規定|
|第１層（レイヤ１）|物理層|ビット列を電気信号に変える規定|


1. アプリケーション層
アプリケーション層では、利用するアプリケーションの通信サービスが実現できるよう固有の規定を定義しています。
そのため、Webページを閲覧するブラウザ、電子メールを送受信するメーラーなど、これらのアプリケーションごとにプロトコルがあります。
この層は、ユーザが直接に接する部分の層です。
![アプリケーション層無題.png](https://qiita-image-store.s3.amazonaws.com/0/315849/517466d5-c901-ef9b-4166-7b96fa97496f.png)


2. プレゼンテーション層
プレゼンテーション層では圧縮方式、文字コード、データの暗号/複合などのデータの表現形式の規定を定義しています。
この層により送信側と受信側で使用しているデータ表現形式が異なっていても送信側で「コンピュータ固有の表現形式」から「ネットワーク共通の表現形式」に変換して送信して、受信側で「コンピュータ固有の表現形式」に変換し直すことで、コンピュータの種類が違っても送受信できます。
![プレゼンテーション層.png](https://qiita-image-store.s3.amazonaws.com/0/315849/d56c1225-653c-8c12-7ca1-c50527fa3ca2.png)


3. セッション層
セッション層では、アプリケーション間でのセッションの確立、維持、終了するまでの手順を規定しています。
1つのコンピュータ上でWebブラウザとメーラーを起動させて通信しているとします。セッション層でWebブラウザで送受信しているデータをメーラーで送受信しないように、各アプリケーション同士の論理的な経路（セッション）を制御しています。
セッションが確立するとデータ転送が可能な状態になります。
![セッション層.png](https://qiita-image-store.s3.amazonaws.com/0/315849/26c64056-7526-a3bf-7994-248f282e0089.png)


4. トランスポート層
トランスポート層では、ノード間のデータ伝送における信頼性の提供とアプリケーション間でセッションを開始する上で必要なポート番号の割り当てについて規定しています。
データ伝送における信頼性を確保するために、ノード間においてはコネクションの確立、エラー制御、フロー制御、順序制御などを行っています。
アプリケーション同士の論理的な経路をセッションと言い、ノード間における論理的な経路はコネクションと言います。
コネクションはセッション上でデータ転送を行うための論理的な経路です。
![トランスポート層.png](https://qiita-image-store.s3.amazonaws.com/0/315849/ee4080ad-4250-1ef0-226b-1d5a01649a46.png)


5. ネットワーク層
ネットワーク層では、ノード間でのエンドツーエンド（ 起点から終点まで ）の通信を規定します。
ネットワーク層では、送信元のコンピュータからのデータをスイッチ、ルータ等の機器を経由して、宛先のコンピュータへ届けるためにIPアドレスをノードに割り当て、ルータはこのIPアドレスに基づき、宛先のコンピュータまでの最適なパスを選択してデータを送信をおここないます。
![ネットワーク層.png](https://qiita-image-store.s3.amazonaws.com/0/315849/8ea7d651-6d46-e661-c1ff-0c6df867cba4.png)


6. データリンク層
データリンク層では1つのネットワーク回線上で直接接続されたノード同士の通信について規定しています。
データリンク層では各ノードにMACアドレスを割り当て、その情報をもとに通信を行います。
また、FCSを付加することで受信フレームにエラーがないか検出できます。
![データリンク層.png](https://qiita-image-store.s3.amazonaws.com/0/315849/619fce10-0077-beea-72db-0a1b0fabdb8c.png)


7. 物理層
物理層ではネットワークの物理的な接続や伝送方式を規定しています。
ノードからのデータを送信する場合はコンピュータ内部で使用している「0」と「1」のビット列を電気信号に変換しネットワークへ伝送を行います。
また、ノードがネットワークから信号を電気受信する場合は、受信した信号をノードが理解できるように信号を「0」と「1」のビット列に変換して、コンピュータ内部に情報を取り込みます。
物理層はPHYとも言います。


OSI参照モデルにおけるカプセル化と非カプセル化
----
1. カプセル化
コンピュータ間で通信する場合、送信側ではレイヤ７→6→5→4→3→2→1の順番に処理を行っていきます。
各層の規定通りに順番に処理されると、その処理した情報はヘッダとしてデータの前に付加されていきます。
このように上位層の処理情報をヘッダとして下位層で包み込んでいくことをカプセル化といいます。
そしてレイヤ７から順番に処理されていくと、レイヤ1の処理でデータが最終的に電気信号となって送信されます。
※レイヤ2ヘッダでは受信したフレームに誤りがないかどうかを調べるためのFCSヘッダも付加されます。
![カプセル化.png](https://qiita-image-store.s3.amazonaws.com/0/315849/a991d81e-b394-139c-d70c-ef50e55ed572.png)


2. 非カプセル化
受信側のコンピュータでは受信した電気信号をレイヤ1→2→3→4→5→6→7の順で処理していきます。
レイヤ1では電気信号をビット列に変換してコンピュータ上に取り込んでいき、レイヤ2ではL2ヘッダの情報に基づいて処理した上でL2ヘッダを取り外します。
レイヤ3以降も同様に、ヘッダ情報に基づいて処理した上でヘッダをとりはずし、最終的には受信側のコンピュータのアプリケーション上でもとのデータを受け取れます。
このように、下位層から上位層にいくにつれて各層のヘッダを取り外していくことを非カプセル化といいます。
![非カプセル化.png](https://qiita-image-store.s3.amazonaws.com/0/315849/f6b4e6c3-9ca7-6200-d1bc-0762f042eef3.png)

とここまでの内容が理解できてくると、ネットワークエンジニアとの話が少しは理解できてきます。