OSI参照モデル

OSI参照モデルは通信を行うための機能を
7つに分け、それぞれ役割を定めたものである。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

**L7:アプリケーション層[ユーザーと直接やり取りをする部分]**
**L6:プレゼンテーション層[データの形式を整える]**
**L5:セッション層[通信の開始・管理・終了を担当]**
**L4:トランスポート層[データを正確に届ける役割]**
**L3:ネットワーク層[通信経路を決める]**
**L2:データリンク層[データを正確に送受信する]**
**L1:物理層[ケーブルや電波の物理部分]**

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

## L1.物理層
データの伝送に使用するケーブルなど、ネットワークに関する全ての物理的な仕様を定めている。
またデータをビット0/1と電気信号に変換もしている。

**【役割】**
1.	**ビットの送受信**
2.	**通信媒体の管理**
3.	**信号の特性**
4.	**物理的な接続**

**【例】**
イーサネット・USB・ハブ・ネットワークケーブル・WiFi

## L2.データリンク層(PDU:フレーム)
直接接続されたノード間の通信に関して規定、管理。
物理層から受け取ったデータをフレーム形式に変換しエラーの検出やデータ転送の制御を行う。
※PDU=各層で扱う通信データの単位

**【役割】**
1.	**フレーム化**
データをフレームという単位に分割しヘッダーやトレーラーを追加して送信
2.	**エラーチェック**
受信したデータにエラーがないかを確認
3.	**フロー制御**
データの送信速度を調整し受信側がデータ処理しきれない状況を防ぐ
4.	**アドレッシング**
物理アドレス(MACアドレス)を使用してデータを送信先に届ける
5.	**アクセス制御**
ネットワーク共有媒体(イーサネットなど)におけるアクセス権の管理

**【例】**
MACアドレス・スイッチ・ネットワークインターフェースカード・イーサネット(イーサネットはデータリンク層と物理層で利用されるプロトコル)

**【データ送信の流れ】**
①送信側でネットワーク層から受け取ったパケットにMACアドレスやエラーチェック情報を追加してフレームを作成
②物理層にフレームを渡すため通信媒体を通じて送信
③受信側で物理層からフレームを受け取りエラーチェックを実施
④問題がなければネットワーク層にデータ(パケット)を渡す


## L3.ネットワーク層(PDU:パケット)
データをネットワーク間で効率的かつ適切に転送する層。
複数のネットワークを跨ったエンドツーエンド(通信を開始する送信元から最終的な宛先までの端末間)の通信に関して規定。
データを宛先に届けるためルーティング(経路選択)を行い、異なるネットワーク間での通信を可能にする。

**【役割】**
1.	**パケット送信**
データをパケットと呼ばれる単位に分割し、送信先に転送。
中継ノード(ルーターなど)を経由して目的地まで届ける。
2.	**アドレッシング**
通信する相手を識別するため論理アドレス(IPアドレス)を使用
3.	**ルーティング**
最適な経路を選択してパケットを送信先まで転送する
4.	**エラーハンドリングとフラグメンテーション**
パケットの断片化と再構築を行い、異なるネットワーク規模(MTU)の制約に対応。
エラーチェックやパケットの再送も管理。
5.	**ネットワーク混雑の管理**
ネットワークの混雑を防ぎ、通信の効率を維持。

**【例】**
IPプロトコル、ルーター

**【プロトコル】**
①IP
IPアドレスを使用して送信元から宛先までデータを配送する
②ICMP
宛先までのルートが使用可能かどうかの確認を行う
エラー報告やネットワーク診断(pingコマンドなどで使用)
③ARP
IPアドレスからMACアドレスを取得
④IPsec
暗号化通信を行う

⭐︎IPアドレス:ネットワーク層(インターネット層)の識別子
⭐︎MACアドレス:ネットワークインターフェイスカードに割り振られてるデータリンク層(リンク層)で使用される固有の識別子

## L4.トランスポート層
ノード間の通信の制御に関して規定。
送信元から送信されたデータを欠けることなく宛先に届けるといった通信の信頼性に関する機能を提供。データを正確に届ける。

**【役割】**
1.	**エンド・ツー・エンドの通信**
データの送信元と受信先(アプリケーション)間で確実な通信を行う事
2.	**信頼性の確保**
①データ分割:上位層(アプリケーション層から受け取ったデータを小さな単位(セグメント)に分割。
②データ再構築:受信側で分割されたデータを元通りに再構築。
③エラーチェック:データが破損してないか確認。
④再送制御:データの紛失があった場合に再送を要求。
3.	**フロー制御**
送信側が過剰なデータを1度に送らないようにし受信側の処理能力に合わせてデータ転送速度を調整。
4.	**多重化と非多重化**
複数のアプリケーション間の通信を同時に扱うための仕組み。
送信時に異なるデータを1つの経路で送る「多重化」
受信時にデータをそれぞれのアプリケーションに分ける「非多重化」

**【例】**
TCP、UDP

**【プロトコル】**
①TCP
・接続型通信:通信をはじめる前に接続を確立する必要
・信頼性の高い通信:エラーチェックや再送制御を行い、確実データを届ける
★Webページ観覧(HTTP/HTTPS)、メール送受信(SMTP、POP3)など
②UDP
・非接続型通信:接続の確立なしにデータを送信
・信頼性が低い:エラーチェックや再送制御がなくデータが紛失する可能性もあるが高速な通信が可能
★動画、音声ストリーミング、オンラインゲーム、DNS


## L5.セッション層
通信が開始してから終了するまでを管理するひとかたまりをセッションといい、そのセッションの確立や終了に関して規定。セッションが確立することでアプリケーション間での通信が可能となる。
複数のアプリケーションを利用し通信を行ってる際それぞれのデータが交わらないよう制御も行う。

**【役割】**
1.	**セッションの確立**
通信するアプリケーション間でセッションを確立。これにより通信の開始が可能になる。
2.	**セッションの維持と管理**
データ通信中にセッションが途切れないように管理。またセッションが中断した場合に回復(リカバリ)をする機能を提供。
3.	**セッションの同期**
データ転送中に同期ポイント(チェックポイント)を設定しエラー発生時にそのポイントまで戻って再送信できるようにする
4.	**セッションの終了**
通信が完了した後にセッションを正常に終了させリソースを解放。

**【プロトコル】**
①NetBIOS
ネットワーク上のコンピューター同士が通信するためのインターフェイスであり特にローカルエリア（LAN）環境で使用される技術
②RPC
リモートプロシージャコール。ネットワークを介して遠隔のシステム上にあるプログラムや手続きを呼び出すための技術
③PPTP
仮想プライベートネットワーク（VPN）を構築するために使用されるトンネリングプロトコル

まとめるとこれらのプロトコルはセッションの確立やデータのやり取りを管理する役割を果たす

**【セッション層での具体的な動作】**
例えばリモートデスクトップやオンライン会議システムなどではセッション層が正しく機能することで長時間にわたる通信や接続が維持されます。途中で接続が途切れた場合もセッション層のリカバリ機能により通信の再開が可能になる

## L6.プレゼンテーション層
データを正しく表現（プレゼンテーション）するために表現形式を決定する層。これによりアプリケーション層で利用されるデータが正しく送受信されるようにする。
上位（アプリケーション層）下位（セッション層）の橋渡し役として機能。データ送受信においてデータ表現・加工・暗号化を担う重要な層。

**【役割】**
1.	**データ形式変換**
異なるシステム間でデータのやり取りする際、共通の形式に変換する（文字コード変換）
2.	**データの圧縮**
データ転送時の帯域幅を効率的に使用するためデータを圧縮する
3.	**データの暗号化復号化**
データのセキュリティを確保するため送信時にデータを暗号化し受信時に復号化する（SSL/TLSによるデータの暗号化）
4.	**データの表現**
データの構造やフォーマットを標準化し互換性を保つ（画像・音声・テキストデータの変換…JPEG、MPEG、GIFなど）

**【プロトコルや規格】**
①SSL/TLS
暗号化通信を実現しセキュアなデータ転送を行う
②MIME
電子メールでテキスト以外のデータ（画像、音声など）を送信する際のデータ形式を定義
③JPEG、MOEG、GIF
画像や動画データの圧縮・展開の形式
④ASCII、EBCDIC、Unicode
文字コードの標準形式で異なるシステム間での文字データのやり取りを可能にする

**【プレゼンテーション層での具体的な動作】**
文字コードの統一・画像や動画データの変換・暗号化通信の実現

## L7.アプリケーション層
ユーザーが直接関与する部分にあたる層。ユーザーが利用するアプリケーションに対して利用しやすい形でネットワークサービスを提供する。

**【役割】**
1.	**ユーザーインターフェイスの提供**
ユーザーとネットワークサービスが直接やり取りできるインターフェイスを提供
2.	**ネットワークサービスの提供**
ファイル転送、電子メール、Webブラウジング、リモートログインなど様々なネットワークサービスを実現する
3.	**データの送受信の管理**
アプリケーション間で正しいデータが送受信されるように管理
4.	**リクエストと応答の処理**
クライアントからのリクエストに対してサーバー側で適切なデータやサービスを提供

**【プロトコル】**
①HTTP/HTTPS
WebブラウザとWebサーバー間でWebページを転送するプロトコル。HTTPSは暗号化通信（SSL/TLS）を含む安全なプロトコル。
②FTP
ファイル転送を行うためのプロトコル
③SMTP
電子メールを送信するためのプロトコル
④POP3/IMAP
電子メールを受信するためのプロトコル
⑤DNS
ドメイン名とIPアドレスを対応付けて名前解決を行うプロトコル
⑥Telnet
リモートログインを行うためのプロトコル
⑦SSH
Telnetに代わるセキュアなリモートログインのプロトコル
⑧DHCP
IPアドレスなどのネットワーク設定を自動的に割り当てるプロトコル

**【アプリケーション層での具体的な動作】**
Webブラウザ・メールクライアント・ファイル転送ツール・リモートアクセス

:::note warn
OSI参照モデルやTCP/IPモデルでは通信機能を階層化する事で

①各階層に機能を分けることによりネットワーク設計者やアプリケーション開発者が各階層を理解しやすい
②標準化されているため各ベンダーの製品やプロトコルを組み合わせて設計や構築が可能
③プログラムの開発や改修が容易
④階層が分かれているためネットワーク障害などの問題が早期切り分けや解決が可能

といったメリットがある
:::