OSI参照モデル - careerbeat/dit-ehime GitHub Wiki

OSI参照モデル

OSI(Open Systems Interconnection)参照モデルとは、国際標準化機構(ISO)により策定された
コンピュータなどの通信機器の通信機能を、階層構造に分割したモデル。

異なるベンダーのコンピュータ同士の通信を実現するための設計方針

OSI参照モデルの階層構造と役割

OSI OSI各層の名称 役割
第7層
レイヤ7
アプリケーション層 アプリケーションごとの固有の規定
第6層
レイヤ6
プレゼンテーション層 文字コードなどのデータの表現形式の規定
第5層
レイヤ5
セッション層 通信プログラム間の通信の確立、維持、終了の規定
第4層
レイヤ4
トランスポート層 ノード間のデータ転送の信頼性を確保するための規定
第3層
レイヤ3
ネットワーク層 ネットワーク間のエンドつーエンドの通信のための規定
第2層
レイヤ2
データリンク層 直接的に接続されたノード間の通信のための規定
第1層
レイヤ1
物理層 ビット列を電気信号に変換するための規定

OSI参照モデルにおけるカプセル化と非カプセル化

カプセル化

コンピュータ間で通信する場合、送信側 では上位層から下位層へ順番に処理を行っていく。
各層で処理した情報は ヘッダ としてデータの前に付加されていく。

このように、上位層の処理情報をヘッダとして下位層で包み込んでいくことカプセル化 という

非カプセル化

一方、受信側 では下位層から上位層へ順番に処理を行っていく。
各層ではヘッダ情報に基づいて処理した上でヘッダをとりはずしていく。
このように、下位層から上位層にいくにつれて各層のヘッダを取り外していくこと
非カプセル化 という

PDU ( プロトコルデータユニット )

コンピュータ間の通信において使用されるデータの単位のこと

レイヤ PDU
レイヤ2 ( データリンク層 ) フレーム
レイヤ3 ( ネットワーク層 ) パケット
レイヤ4 ( トランスポート層 ) セグメント
  • 一般的には、コンピュータのデータの単位は「パケット」と呼ぶ人が非常に多いのが現状

  • パケットやフレームなどのヘッダを取り除いたデータ部分だけのことは ペイロード と呼ぶ

各層の説明

アプリケーション層

  • 利用する アプリケーションの通信サービスを実現 できるよう固有の規定を定義している

  • ユーザが直接に接する層である

プレゼンテーション層

  • 圧縮方式、文字コード、データの暗号/複合などの データの表現形式 の規定を定義している

  • データ送信時に、「コンピュータ固有の表現形式」から「標準的な表現形式」に変換して送信することで、例えば、文字化けを防止することができる。

セッション層

  • アプリケーション間での セッションの確立、維持、終了するまでの手順 を規定している

  • セッションが確立するとデータ転送が可能な状態になる

トランスポート層

  • データ伝送における信頼性を確保 するために、
    ノード間において、コネクションの確立、エラー制御、フロー制御、順序制御などを行う

  • アプリケーション間でセッションを開始する上で必要な ポート番号の割り当て について規定

セッションとコネクション

  • セッション

    • 通信の開始から終了までを管理する 1つの単位のこと
    • OSI参照モデルの 第5層「セッション層」の機能

  • コネクション

    • セッションでデータ転送を行うための 論理的な回線 のこと
    • OSI参照モデルの 第4層「トランスポート層」のTCPコネクション を指す

ネットワーク層

  • ノード間での エンドツーエンド( 起点から終点まで )の通信 を規定している

  • 宛先のコンピュータまでパケットを送信する時に、最適な経路を選択してパケット送信する

    • このように、最適な経路(最短経路)を選択してパケット送信することを ルーティング という

データリンク層

  • 1つのネットワーク回線上で 直接接続されたノード同士の通信 について規定している
  • LANで各ノードにハードウェアアドレスを割り当て、その情報をもとに通信を行う
  • FCSヘッダ を付加することで 受信フレームにエラーがないかどうかを検出 する

物理層

  • ネットワークの 物理的な接続や伝送方式 を規定している
  • データを 送信 する場合はコンピュータ内部で使用している
    「0」と「1」の ビット列を電気信号に変換 しネットワークへ伝送を行う
  • 逆に 受信 時は 受信した信号をノードが理解できるように「0」と「1」のビット列に変換 して コンピュータ内部に情報を取り込む
⚠️ **GitHub.com Fallback** ⚠️