ゼロから始めるOSI参照モデル基礎講座

こんにちは、Tomです。

今回は、

「OSI参照モデル」

について解説していきます。

前置きは抜きにして、さっそく解説していきます!

1.はじめに

1-1.OSI参照モデルとは?

ネットワークの勉強を始めるにあたって、まず理解しなければいけないのがOSI参照モデルです。

OSI参照モデルとは、国際標準化機構(ISO)という組織が策定した「モデル」です。

現在のように、インターネットが普及する前は、各企業が独自に通信のルールを決めていました。

それではまずいということで、ISOがネットワークの仕組みを体系化し、一つの指針となるべきモデルを策定しました。

それが、「OSI参照モデル」です。

 

OSIとは、

「Open Systems Interconnection」

の略です。

日本語に訳すのなら、

「開放型システム間相互接続」

でしょうか?

うーん、よくわかりませんね。

安心してください。

OSIという言葉の意味を覚える必要はありません。

言葉の意味を覚える必要はありませんが、

このモデルの何がいいのかを理解してください

そして、OSI参照モデルを理解できれば、これからネットワークを学んでいく上で非常に役に立ちます。

 

ですが、実は、

OSI参照モデルは現在は使われていません。

現在は、インターネットにも使われている、TCP/IPというルールが広く使われています。

TCP/IPについては下の記事をご覧ください。

TCP/IPとは?初心者がTCP/IPを理解するための完全ガイド

おいおい!じゃあなんでOSI参照モデルなんか学ぶんだ!使える知識を教えてくれよ!

と思うかもしれませんが、使われていないからと言って、役に立たないわけではありません。

なぜOSI参照モデルを学ばなければいけないのかというと、それは、

コンピュータネットワークの仕組みについて、わかりやすくまとめられている

からです。

“わかりやすくまとめられている”とは、コンピュータが行う処理が、階層ごとに分けられていて“人間にとって理解しやすい”ということです。

例えば、

「相手に実際に電気信号を送るのは物理層が行います。」

「同じネットワークの中での通信はデータリンク層の仕事です。」

「別のネットワークへデータを送るのはネットワーク層の仕事です。」

といったように、ネットワークでデータを送るときのコンピュータの処理について、階層ごとに分けて、まとめられています。

ネットワーク初心者にとって、実際にコンピュータがどうやって通信しているのかを理解するのは非常に難しいです。

しかし、OSI参照モデルはコンピュータネットワークの処理についてわかりやすくまとめられているので、初心者が最初に学ぶべき内容と言えます。

 

ここで、OSI参照モデルというのは、名前のとおり、通信を行うときの「モデル」です。

つまり、コンピュータネットワークに必要な機能を7つの階層に分け、モデル化したものなのです。

言い換えれば、ネットワークにおいて

「つながる」とはどういう事なのか、をモデル化したもの

です。

そのため、OSI参照モデルはあくまで「モデル、概念」ですが、これを理解していれば、

「どうやってつながるのか」

「どうしてつながらないのか」

がわかります。これが“学ぶメリット”です。

なので、OS参照モデルは、

ネットワークを学ぶときに最初に覚えるべき内容と言えます。

また、ネットワークエンジニアがネットワークの処理や流れについて議論するときは、OSI参照モデルの階層をもとに話をすることが非常に多いです。

上手くまとまっているから、OSI参照モデルに基づいて話した方がわかりやすいんですよね。

だから、OSI参照モデルを勉強しても損することはありません。

むしろ知らないと話になりません。

1-2.階層化

 

次は階層化についてお話します。

OSI参照モデルを学ぶ上では、「階層化」について理解していないと、話がさっぱりわかりません。

階層化」については別記事でわかりやすく解説していますので、ご覧ください。

階層化はショートケーキ作りと同じ?

2.各階層

それでは、OSI参照モデルの各階層の解説に入っていきましょう。

OSI参照モデルには、最下層の物理層から最上層のアプリケーション層まで全部で7つの階層があります。

「層」は英語で「レイヤ(layer)」なので、物理層をレイヤ1、データリンク層をレイヤ2といった具合に、各階層を「レイヤ+n(n番目の階層)」と呼びます。

レイヤ7のアプリケーション層が一番人間に近い階層です。
あなたがスマホやパソコンで使っているアプリケーション(アプリ)がネットワークを使用するときに働く階層です。

階層が下がって行くほど人間から離れていき、一番下の物理層は、電気信号などを扱う基板などの階層です。

それではあなたに近い階層から一つずつ見ていきましょう。

2-1.アプリケーション層(レイヤ7)

先ほども言いましたが、アプリケーション層は人間に一番近い階層です。

そして、その役割は、

「ユーザが使用するアプリケーションに対してネットワークサービスを提供すること」

です。

ここでいう、

“ネットワークサービスを提供する”

とはどういうことでしょうか?

 

例えば、あなたがメールを作成する時、

宛先アドレス欄に相手のメールアドレスを入力して、送信元アドレス欄に自分のメールアドレスを入力すると思います。(勝手に入力されることが多いですが)

あなたはメールアプリの決められた欄にメールアドレスを入力するだけでいいはずです。

このとき、それぞれに記載されたアドレスを、

プレゼンテーション層以下で処理できる形にする

のがアプリケーション層の仕事です。

 

これは、Webブラウザの場合も同じです。

URL欄に「https://www.〇〇〜」という情報を入れて、検索ボタンとか虫メガネボタンを押せば、検索結果が表示されます。

このとき、URL欄に入力されたURLを読み取り、プレゼンテーション層以下で処理できる形にするのがアプリケーション層の仕事です。

これがアプリケーションに対してネットワークサービスを提供するということです。

言い換えれば、

人間が入力した情報をネットワークで処理できる形に変換すること

がアプリケーション層の役割です。

2-2.プレゼンテーション層(レイヤ6)

一個階層を降りてみましょう。

アプリケーション層の下はプレゼンテーション層です。
プレゼンテーションといっても、写真のようなプレゼンのことではありません。

プレゼンテーション層とは

「表示形式を定義して、データを共通の形式に変換する」

という役割を持った階層です。

 

アプリケーション層で、プレゼンテーション層以下で処理できる形にデータが変換されます。

そして、そのデータを受け取ったプレゼンテーション層は、「データを共通の形式に変換」します。

また、共通の形式に変換するための情報をデータに付加します。

それでは、

データを共通の形式に変換するとはどういうことでしょうか?

 

例えば、

あなたは、文字化けしたファイルを見たことはありませんか?

数字や記号や漢字など、いろいろな文字が表示され、全く読めない“あの”現象です。

実はあれは、コンピュータ同士で表示形式の変換がうまくいってないことが原因で発生します。

プレゼンテーション層は、この“文字化け”が発生しないように、通信をするアプリケーション間でデータを共通の形式に変換します。

プレゼンテーション層が変換する表示形式とは、文字コードや画像、動画などです。

 

実際は、

送信側の文字コードを共通な文字コードに変換してネットワーク側に送信し、

受信側もネットワーク側から受け取った共通な文字コードを、自分のアプリケーションで使う文字コードに変換して表示します。

このような処理をプレゼンテーション層で行うことで文字化けは発生しません。

2-3.セッション層(レイヤ5)

プレゼンテーション層の下はセッション層です。

セッション層の役割は、

「通信を行うプログラム同士(アプリケーション間)の論理的な通信路の確立・維持・終了を行うこと」

です。

プレゼンテーション層で、文字化けなどが起こらないよう、データが共通の形式に変換されました。

そして、そのデータを受け取ったセッション層は、データを最終的に送る相手(コンピュータ)との論理的な通信路を確立して、データを送れる準備をします。

そして、論理的な通信路を確立するための情報をデータに付加します。

ここで、論理的な通信路のことを

「セッション」

といいます。

「セッションが切れる」という言葉を聞いたことはありますか?

この“セッション”はアプリケーションごとに確立する論理的な接続のことです。

例えば、

あなたが、Webブラウザを開きながら、メールを送信するとします。

この時、あなたのコンピュータでは、

WebブラウザのアプリケーションWebサーバの間でセッションを確立していて、

同じようにメールのアプリケーションメールサーバの間でもセッションを確立しています。

それぞれのアプリケーション間でセッションが確立されれば、データを送受信することが可能になりますが、

この時、

Webサーバからのデータをメールのアプリケーションで受け取るということは起こりません。

 

それぞれ個別のセッションを確立することで、目的のアプリケーションにデータが届くのです。

セッション層では、データが適切なアプリケーションに届くために、セッションを管理しているのです。

2-4.トランスポート層(レイヤ4) 

トランスポート層の役割は、

「データを確実に届けるための信頼性を確保すること」

です。

セッション層で相手側のコンピュータと「セッション」を確立しました。

セッションを確立することで、メールはメールアプリケーションに、ウェブページはウェブブラウザのアプリケーションに送信することができるようになります。

 

しかし、ネットワークに送られたデータは、すべて完璧に相手側のコンピュータに届くとは限りません。

ケーブルの中には電気信号や光信号が流れていますが、ノイズなどによって波形が変わったりして、元のデータが破損したり欠損したりすることがあります。

それに対応するために、トランスポート層で通信の信頼性を確保して、確実にデータが送られるようにします。

例えば、

  • データをもう一度送ってもらうための再送制御
  • 送信するデータの大きさを決めるためのウィンドウ制御
  • データを分割して送るための順序制御

などを行なっています。

そして、これらの制御をするための情報をデータに付加します。

そうやって、データが確実に相手側のコンピュータに届くようにします。

それが「信頼性を確保する」という事です。

2-5.ネットワーク層(レイヤ3)

ネットワーク層の役割は、

「異なるネットワーク間の通信を可能にすること」

です。

トランスポート層でデータが確実に相手側のコンピュータに送られるようにしました。

今度は、そのデータを実際に送るための準備をします。

 

送る相手のコンピュータが

「自分がいるネットワークとは異なるネットワーク」

にいれば、ネットワーク層の出番です。

 

自分とは異なるネットワークにいるコンピュータにデータを送るために、ネットワーク層では以下のことを定めています。

  • 経路選択(ルーティング)の方法
  • 選択した経路にデータを送出する方法
  • データの構造 
  • データの送信元と宛先を識別する方法

です。

そして、異なるネットワークへのデータの転送を可能にするために情報をデータに付加します。

 

ここで、異なるネットワークとは、自分の属するLANから外のネットワークの事です。

そして、異なるネットワークの機器を識別するためには固有の番号が必要なのですが、

その番号を

論理アドレス

といいます。

ネットワーク層では、論理アドレスをもとに送信する機器が属するネットワークを識別して、データを送信します。

論理アドレスとして使われているアドレスは「IPアドレス」が主流です。

IPアドレス」に関する内容は別記事にまとめましたので、参考にしてください。

いまさら聞けない!IPアドレスとサブネットマスク

2-6.データリンク層(レイヤ2)

データリンク層の役割は、

「隣接する機器間の通信を可能にすること」

です。

ネットワーク層で、相手側のコンピュータがいるネットワークまで、データを送られるようにしました。

しかし、相手側のネットワークに届いても、そこから相手のコンピュータまでデータを届けなければ意味がありません。

その、ネットワーク内のコンピュータへのデータ転送を可能にするのがデータリンク層です。

そして、そのために、データリンク層では以下のことを定めています。

  • データを送り出すタイミング
  • データのエラー検出と対処方法
  • データの構造
  • データの送信元、宛先の識別方法

そして、ネットワーク内でデータを転送するために必要な情報をデータに付加します。

 

また、同じネットワーク内の機器を識別するためには、機器ごとの固有の番号が必要です。

その番号を物理アドレスといいます。 

データリンク層では、物理アドレスをもとに送信する宛先を識別してデータを送信します。

物理アドレスである「MACアドレス」についての詳しい内容は、別記事にまとめています。

これだけは知っておくべきMACアドレスの基礎知識

2-7.物理層(レイヤ1)

物理層はOSI参照モデルの中で最下層に位置しています。

物理層の役割は、

「ビット列を信号に変換する。またはその逆を行う」

ことです。

データリンク層までで、それぞれの階層の処理について情報を付加しました。

そして、それらの情報もデータもすべて「0」と「1」の数字の羅列です。

その数字の羅列のことを「ビット列」といいます。

ビット列とは、コンピュータで扱う「0」と「1」のデジタルデータのことです。

あなたが今見ているブログページも、コンピュータにとっては「0」と「1」の羅列でしかありません。

たとればこんな感じに見えているかもしれません。

 

 

人間には到底理解できないですよね。

コンピュータはこの「0」と「1」の羅列を処理しているのですが、

実際にケーブルなどにデータを送る場合は、この羅列を電気信号や光の点滅などに変換しなくてはいけません。

電気信号に変換する場合は、電圧の「高い」、「低い」で「0」と「1」を表現します。
光の点滅はそのまま、光が点いているか消えているかで「0」と「1」を表現します。

物理層では、このようにビット列を信号に変換して送信するために、以下のことを定めています。

  • コネクタの形状、ピンの配置
  • ケーブルの種類
  • 電気信号の電圧レベル、電圧変化
  • 通信速度、符号化方式

これらの物理的な仕様を決めることで、異なる機種間でも信号をやり取りすることが可能になります。

3.カプセル化と非カプセル化

次に、「カプセル化と非カプセル化」について解説していきます。

コンピュータ同士で通信する場合、各階層は同じ階層とデータをやり取りして処理をします。

各階層ごとで会話していると考えればわかりやすいかもしれません。

アプリケーション層同士、トランスポート層同士、ネットワーク層同士でデータをやり取り(会話)することで、メールの送受信などを実現しています。

しかし、物理的につながっているのは物理層だけ、データリンク層以上の層は、直接つながっていません。

ではどうやってデータをやり取りするんでしょう?

 

答えは、

「下の層に自分が扱うデータの転送をしてもらう」

です。

 

データリンク層は物理層にデータの転送を依頼します。

ネットワーク層は、物理層とつながってるデータリンク層に依頼します。

そうやって、上の階層は下の階層に、自分が扱うデータの転送を依頼します。

 

下の層を介して、相手側の自分と同じ階層にデータを送るわけですが、

自分の層で扱うデータであるということを区別する必要があります。

それを区別するために用いるのが

「ヘッダ」

です。

 

ヘッダには各階層での処理に必要な情報が記録されています。

それぞれの階層で、「情報をデータに付加する」と説明しました。

それが、まさしく「ヘッダ」です。

 

ヘッダを付加することで、他の層を介して送られたとしても、

相手側ではそのヘッダを読み取り、適切な処理をすることができます。そして、上の階層にデータを渡します。

そうやって最後にアプリケーション層同士の会話が成立してユーザに情報が表示されるのです。

この、上の層から来たデータにヘッダを付加することを「カプセル化」といいます。 

また、自分の層でヘッダを外すことを「非カプセル化」といいます。

送信側ではユーザに一番近いレイヤ7から順に、レイヤ6→5→4→3→2、とデータにヘッダを付与していき、最後のレイヤ1で信号に変換して送信します。

データリンク層では、ヘッダに加えてトレイラも付加します。

トレイラは、データのエラーチェックするための情報が記録されています。

 

逆に受信側では、送られてきた信号をレイヤ1でビット列に変換し、レイヤ2→3→4→5→6とデータを処理していきます。最終的にユーザに一番近いレイヤ7でアプリケーションに表示されます。

4.PDU(Protcol Data Unit)

次に、「PDU」について解説していきます。

PDUとは、ネットワークにおいて用いられる「データの単位」のことです。 

 

カプセル化についてお話しましたが、各階層で扱うデータは、上の階層でヘッダが付加されています。

そのため、各階層で扱うデータはそれぞれ異なるものになります。

なので、データの単位を区別して呼ぶ必要があるがあります。

実際には、

  • データリンク層では、フレーム
  • ネットワーク層では、パケット
  • トランスポート層では、セグメント

という風に呼んでいます。

しかし、ネットワークに流れるデータのことをパケットと呼ぶ人が多いです。

やめて欲しいですね、ややこしいです。

でも仕方ありません。覚えてください…

5.まとめ

いいがでしたでしょうか?

OSI参照モデルはネットワークを学ぶ上で必ず抑えておかないといけない内容です。

各階層で何を定めて、どんな処理をしているのかを覚えておくことが重要です。

それでは、最後まで読んで下さりありがとうございました。

これを読むまでネットワークを語るな!おすすめの本7選+α

にほんブログ村 IT技術ブログへ
にほんブログ村