プロトコルとは
何かと何かが通信するときの約束・ルールです。
野球で例えると、ピッチャーがフォークを投げるのに対して
キャッチャーがストレートのみを受け取るという状態で
ピッチャーがボールを投げるとキャッチャーは受け取れません。
お互いがフォークを投げる・受け取るという風に身構えるから、ちゃんとボールを受け取れます。
このように通信機器やアプリケーションの世界でも約束事を決めて通信をしているのです。
通信プロセスの中には様々なプロトコルが存在する
例えば、AさんがAの端末で「こんにちわ」と入力して送信するときに
まずはバイナリデータとして01のデータに変換されます。
これを人間とコンピュータとのプロトコルと言えます。
次にLANケーブルを使ってインターネットと接続するときも
そういったプロトコルがあります。
そのほかにも、通信を物理的に電気信号に変える際も
そのプロトコルがあります。
USB-typeCがリンゴマークの製品のスマホにさせないのも
プロトコルが違うせいと言えます。
OSI参照モデルとは
OSI参照モデルのOSIとは(Open Systems Interconnection)の略です。
異なる機種間でも通信ができるように世界標準のプロトコルスタックとして作られました。
世の中にたくさんあるプロトコルを役割ごとに整理して集めたものネットワークアーキテクチャとも呼ぶ。
なぜOSI参照モデルが生まれたのか?
その昔、各メーカーは自社製品同士でしか使用できないプロトコルスタックをそれぞれ作っていました。
よって各メーカーのプロトコルスタックは互換性がなく、
ネットワークを構築するには同一メーカーのPCでそろえるしかありませんでした。
今じゃ考えられませんよね?
現在でもリンゴのマークの製品は
自分たちの製品でしか使えないようなアクセサリーを作ってますよね。
このように昔は各メーカーが各メーカーの端子や通信方法を使っていました。
そんな世界非常に生きづらいですよね。
そういった状況を打破するために生まれたのが、このOSI参照モデルです。
ちなみにややこしいですが、このOSIという企画を作ったのは
ISO(Internatinal Organization for Standardization:国際標準化機構)という機関が作りました。
OSI参照モデル
では実際にOSI参照モデルについて解説を行います。
OSI参照モデルはネットワークで必要とされる機能を7階層に分割し
それぞれの階層(レイヤ)で必要になるプロトコルを定義しています。
レイヤごとにプロトコルを切り分けること(階層化)で書くプロトコルの役割が明確になり
変更があっても最小限のプロトコルの変更で済むといったメリットがあります。
OSI参照モデルを順番に巡って流れを理解する
データを送信してから受信するまでを理解するために、
現実世界で手紙を書いて送って、受取人に届くまでの流れを見てみましょう
手紙が届く仕組み
↓クリックして拡大
◆送信者がおうちの中ですること + 郵便局に送り届ける
L7アプリケーション層:女の子が手紙を書きます。
L6プレゼンテーション層:書いた手紙を切手をつけて封筒に入れます。
L5セッション層:封筒に宛先を書きます。それを郵便局に持っていきます
◆郵便局(送信)がすること
L4トランスポート層:速達料金を受け取って、速達として届けるための準備をする
L3ネットワーク層:集配拠点経路の確認。集配センターAと集配センタBが一番安全に早く届けらることを確認する
◆運送
L2データリンク層:各拠点間を適した人や乗り物で繋いでいく
L1物理層:各拠点間をつなぐ乗り物や人
・郵便局 ~ 集配センターAまでは陸路で白やぎさん
・集配センターA ~ 集配センターBまでは海を越えて飛行機
・集配センターB ~ 向こうの郵便局までは陸路で黒やぎさん
◆郵便局(受信)ですること
L3ネットワーク層:郵便局に封筒が届く
L4トランスポート層:郵便局職員が宛先を確認して、向こうの男の子の家へ届ける
◆受信者がおうちの中ですること
L5セッション層:簡易書留の場合、受信者が受け取ったことを記録する
L6プレゼンテーション層:封筒から取り出す
L7アプリケーション層:受信者が文字を読む
チャットアプリでメッセージが届く仕組み
この手紙が送信されて受信するまでの流れと、データが送信されて受信するまでの流れが非常に似ています。
次にチャットアプリで一連の流れを当てはめてみます。
↓クリックして拡大
◆送信側のチャットアプリですること
L7アプリケーション層:アプリでメッセージを書く ⇒ 送信ボタンを押す
L6プレゼンテーション層:機械が理解できるように、文字データをバイナリデータに変える
L5セッション層:相手先アプリと接続を開始する。
メッセージを送った際に送るまでのネットワークがちゃんとつながっていない場合
(電波が悪い場合)送信できないとアプリ側から通知が来ると思います。そのようなことをセッション層ではやっています
◆送信側サーバーで行うこと
今回の場合送信側サーバーは送信側スマホです。
スマホ内にはチャットアプリという部屋もあれば、サーバー的役割をする部屋もあります。
サーバー的役割とは、データを送受信する仕組みのこと(郵便局的役割)です。
L4トランスポート層:
トランスポート層ではどのように送るかを決めます
データを速さ重視で送るのか?なるべく劣化しないように送るのかを決めています。
手紙の例でいうと、速達にするのか?
簡易書留にしてちゃんと相手に届いたことの証明を郵便局にしてもらうのか?みたいなイメージです
L3ネットワーク層:送信側のスマホから受信側のスマホまでどのように送るかを決める
要するにノードの塊です。
どういった機器(ルーターやモデムなど)を通っていけば最短なのかを決めています。
◆通信
L2データリンク層:バイナリデータ(2進数データ)を電気信号に変換する。
そしてノード間(機器やケーブル、wifi、光通信など)に適した形でを正しく通信する。
L1物理層:機器間をつなぐケーブルや電波
◆宛先ノード(受信側サーバー)
L3ネットワーク層:データを受け取る
L4トランスポート層:データが確実に届いていることを確認する
スピード重視や安全重視ならデータが劣化していないかを確認する。
◆受信側のチャットアプリですること
L5セッション層:受信先が送信先へちゃんとメッセージが届いたことを教える
通信エラーとして扱う。
L6プレゼンテーション層:2進数データから文字データに変換
L7アプリケーション層:受信者が文字を読む
OSI参照モデルまとめ
L7アプリケーション層:ユーザが何かをアプリケーション内でする
L6プレゼンテーション層:ユーザーが行ったことを機会が読み取れるように2進数データにする
(人間 ←→ 機械)
L5セッション層:接続先アプリと連携する
L4トランスポート層:送り方を決める
L3ネットワーク層:どのような経路を通るのかを決める
L2データリンク層:ノード間(機器やケーブル、wifi、光通信など)に適した電気信号で通信する
L1物理層:機器間をつなぐケーブルや電波
コメント