【超図解】セッション層|プレゼンテーション層|アプリケーション層とは?プロトコルをわかりやすく解説
はじめに
こんにちは!猿喰です。
この記事ではネットワークを理解していただくために、OSI参照モデルをレイヤーごとに詳しく説明しています。ターゲットとしてはITパスポート、基本情報技術者レベルの知識を身につけることとしています。
ここまでで第4層トランスポート層までを見てきましたが、今回は第5,6,7層(レイヤー5,6,7)のセッション層、プレゼンテーション層、アプリケーション層を一挙に見ていきたいと思います。
>>OSI参照モデルについて最初から見たい方は以下の記事から御覧ください
それでは参りましょう~。
第5層 セッション層とは?
セッション層とは、通信内容を区別し、アプリケーションプロトコルに沿った、論理的な通信路を確立する役割を持っています。
今回は理解しやすいように、Webページの閲覧時の、ネットワークのやり取りを元に、説明していきたいと思います。
ただし注意事項として、httpプロトコルのバージョンによっては、この限りではありません。
あくまでセッション層がどういうものか、という観点で見ていってください。
Webページ閲覧時は、クライアントPCと、Webサーバーの間でトンネルを作ります。
そしてこの仕事は、トランスポート層の仕事です。
復習になりますが、このトンネルの作成を、スリーウェイハンドシェイクと言いましたね。
セッション層の役割は、そのトンネルの中に、もう少し細かい通信路を作成することです。
例えば、Webページを閲覧する場合、テキストファイルを読み込んだ後に、画像1つ1つに対してセッションを確立し、だんだんと、ページ全体をブラウザに取り込むようになっています。
そのため、先にテキストが表示されてから、順次画像が表示されるといった動きになります。
具体的には、最初に受け取ったhtmlテキストをブラウザが読み込んで、そのhtmlテキストに画像の指定がある場合に、別途セッションを立てて、Webサーバーに対して画像の要求をします。
この時の、それぞれの論理的な通信の確立がセッション層の仕事です。
例えば、次のようなWebページがあったとすると、ブラウザとWebサーバーの間で、それぞれオブジェクトごとにセッションが確立されています。
最初に上のセッションです。htmlファイルを受け取る際に利用します。
次に左の画像とセッションを確立して読み込みます
次に右の画像とセッションを確立して読み込みます。
と、いうようにそれぞれセッションを立てて通信しており、これがセッション層の仕事です。
トランスポート層との違いがわかりづらく、勘違いしやすい部分ですので、覚えておいてください。
第6層 プレゼンテーション層とは?
プレゼンテーション層とは、コンピューターで通信しやすいように、通信したいデータの表現形式を変換するのが役割です。
プレゼンテーション層が存在しない場合
例えば、左側のパソコン では、日本語の文字コードとして「Shift JIS」という文字コードを利用し、右側のサーバーでは、文字コードとして「 EUC-jp 」という文字コードを使用しているとしましょう。
その上で、左側のパソコンが、右側のサーバーにリクエストをしたとします。
しかし、プログラム間でデータの表現形式を何も変換しないと、右のサーバーは、リクエストが来てもリクエスト内容がわからず、適切なレスポンスができません。
プレゼンテーション層が存在する場合
しかし、プレゼンテーション層が存在し、「各コンピュータ固有の表現形式」に変換し直すことで、文字化けなしに送受信できます。
無事、右のサーバーはレスポンスを返せました。
このような表現形式の変換を行うのがプレゼンテーション層のしごとです。
第7層 アプリケーション層とは?
アプリケーション層は、ユーザーが使用するアプリケーションの動作を下位の層に渡したり、相手から受け取ったデータを、 アプリケーションに表示したりする役割を持っています。
例えば、アプリケーション層のプロトコルには、次のようなものがあります。
Webページ閲覧ではHTTP。ファイル転送ではFTP、電子メールではSMTPです。
今回はこの図のうち、HTTP(Hyper Text Transfer Protocol)をもとに説明していきたいと思います。
インターネット検索を例にとってみます。
例えば、googleで検索を行い、アドレスバーを確認するとURLが表示されています。
この頭にHttpという表示がされています。
これは、http通信をこれから行います、という通信方法の記載となっています。
ちなみにhttpsとは「http」にデータ暗号化機能を付与したもの。ですが、それはセキュリティのお話ですのでここでは割愛し、別記事で記載します。
インターネットでのWebサイトの閲覧は、このhttpプロトコルによって実現されています。
具体的に見ていきたいと思います。
httpプロトコルの場合
Webブラウザーは、Webサーバーに対して、HTTP要求を使ってファイルの送信を要求します。
Webサーバーは、要求されたファイルをブラウザに返します。
このときのやり取りのルールを、このhttpプロトコルが定めています。
具体的には、サーバから情報を取得してくる時には、このhttp要求の中に、GETというメソッドが記載されています。
それを受けたWebサーバーは、GETメソッドを読み取り、ブラウザが求めているファイルや画像をレスポンスする、という流れになっています。
これらのやり取りが、アプリケーション層のプロトコルです。
約束通りに通信しているからやり取りができるわけで、例えばhttp要求の中に、Please というメソッドを記載しても相手のサーバーは要求に答えてくれません。
それは当然、pleaseの場合に何をすればいいかルールが定められていないからです。
また、フロントエンドのエンジニアにはおなじみの、404エラーについても、httpプロトコルが存在し、約束事が成り立ってるから運用できてるのです。
404はファイルがない、ということをWebサーバーから伝えるものであり、ブラウザはこのエラーを受けたときに、人間がわかりやすいように file not found等と表示をします。
これまで見てきたように、この第7層アプリケーション層では、その名の通りアプリケーションをどのようにやり取りするかというお仕事のプロトコルでした。
難しく考える必要はなく、これは言語と同じで、お互いが認識してるルールでやり取りしてるんだな、と思ってください。
OSI参照モデルの全体像を見てみよう
第1層物理層から順番に見てきましたが、ここでOSI参照モデルの全体像を把握する意味で、データが流れるイメージを見てみましょう。
こちらは、右側から左にデータが流れる図です。
まず右の送信側を見ていきましょう。
送信側は、データをOSI参照モデルの上位層から下位層に渡していきます。
トランスポート層ではデータのTCPヘッダーにポート番号の情報を付与します。
ネットワーク層では、データのIPヘッダーにIPアドレス情報を付与します。
データリンク層では、フレームにMACアドレスを付与します。
このように下位層にデータを渡していくにつれ、情報が付与されていきます。これをカプセル化といいます。
必要な情報を全て付与した状態で送信します。
一方、受信側はデータを受け取ると
今後は逆に、下位層から上位層にデータを渡していきます。
その過程で、今度は各層が担当している情報を外していきます。
データリンク層ではフレームをはずし、ネットワーク層ではIPヘッダーを外し、トランスポート層ではTCPヘッダーを外していきます。
この流れを非カプセル化といいます。
このような流れで、データ通信は行われています。
今は全て完璧に理解できなくてもかまいません。
少しでもイメージがつかめればいいなと思っております!
おわりに
これらのIT知識を動画でも説明してます。
動画のほうがいい方、最低限のIT知識をがっちり取得したい方は以下からどうぞ。
おかげさまで数万人に受講してもらってます。
※期間限定で86%OFFクーポンリンクを貼っておきます~
Discussion