プログラミング

プログラミング学習日記③~通信の仕組み~

こんにちわ。

本ブログの管理人のRRです。

プログラミング学習日記の時間です。

現在、プログラミングについて目下学習中のため、学んだことをアウトプットして記憶に定着させています。

 

3回目となる今回は、

Webアプリケーションとユーザーの間にある通信の仕組み

について解説します。

 

「どうやって私たちはWebページをPCやスマホで見ているのだろう?」をテーマに、

コンピュータ間の通信について、深掘りしたので、記録します。

注文と対応

コンピューター間の通信は、たとえるならば飲食店のお客様と店員のようなものです。

みなさん、行きつけの定食屋で、からあげ定食を注文することを想像して下さい。

お客様「からあげ定食くださ~い!!」

店員「かしこまりました。」

店員、キッチンスタッフに料理を頼み、料理が完成したら、

店員「お待たせしました。からあげ定食です!」

といって、提供します。

たいていこんなイメージだと思います。

※私の行きつけは食券スタイルですという人は、一旦店員さんがオーダーをうけるスタイルでお願いします。

リクエストとレスポンス

コンピュータの通信も飲食店のオーダーと全く同じです。

情報を注文する側のコンピューターがいて、それに対応する側のコンピュータがいます。

  • このとき注文する側のコンピュータ→クライアント
  • 対応する側のコンピュータ→サーバ

といいます。

 

そして、

  • 注文のこと→リクエスト
  • 対応のこと→レスポンス

となります。

 

このやりとりをクライアント/サーバモデルといいます。

コンピュータ通信の大半は、このクライアント/サーバモデルだそうです。

クライアント/サーバの役割はアプリケーションが決定づける

コンピュータ通信の大半はクライアント/サーバモデルと書きましたが、厳密に言うと、アプリケーション同士の通信モデルです。

皆さんのコンピュータにも入っているアプリケーション、いわゆるアプリ同士の通信モデルです。

コンピュータ自体はこれらのアプリを動作させているだけです。

なので、コンピュータはアプリなしには通信することはないんです。

 

実際にどういう流れでページが表示されるかを言語化すると、

  1. クライアント側のコンピュータに入っているアプリをクリック
  2. Webブラウザがアプリを開き始めます。
  3. Webブラウザが「このページが見たい!」という要求(リクエスト)をサーバに対して出します
  4. クライアントからの要求(リクエスト)を、サーバにインストールされたWebサーバが受け取ります
  5. Webサーバが要求されたページをサーバが返す(レスポンス)

という流れです。

 

ここでのポイントは、

  • Webブラウザはクライアントソフトウェア
  • Webサーバはサーバソフトウェア

であるということです。

 

コンピュータが、クライアントコンピュータサーバコンピュータかは、

インストールされているのが、クライアントソフトウェアか、サーバソフトウェアかで決まります。

 

コンピュータにだけフォーカスをあててもクライアントかサーバかの区別はできません。

クライアントかサーバかを区別するには、ソフトウェアで決まることを覚えておきましょう。

 

また、ここは余談ですが、

1台のコンピュータの中にクライアントソフトウェアとサーバソフトウェアの両方をインストールして、起動することも出来ます。

HTTPプロトコル

よくラジオとかで、

「番組の公式ページは、http://。。。。。」

みたいなURLが紹介がされて、

「わかりづらいわ~、そんな風に言われても打つ人、いないでしょ~そもそもhttpってなんだよ~」

ってなったことないでしょうか?

少し個別具体的すぎました。

 

じつは、この"http"ですが、ちゃんと意味があるんです。

この”http”では、

「HTTPという通信プロトコルを使いま~す!!」

と、宣言しているんです。

なので、下のURLをより具体的に翻訳すると、

http://www.sample.co.jp/

→HTTPを使って、www.sample.co.jpと通信始めます!!

と宣言しているということです。

 

ここでいうプロトコル(protocol)は、規約(ルール、取り決め、約束事)という意味です。

なので、意訳すると、通信プロトコルはお互いの通信ルールとなります。

 

インターネットに限らず、コンピュータ同士が通信する場合には、何らかの取り決めが必要です。

人間でもコミュニケーションするときは、無意識にルールがありますよね。

  • どんな言語でしゃべるか
  • どういう順番でしゃべるか
  • 家族か友達か取引先か職場の仲間か

とか、コミュニケーションをするときに、お互いにルール確認はしないけど、暗黙のルールとして存在しています。

 

コンピュータ同士では、人間のように暗黙のルールはありません。

通信をするときに、必ずルール設定・確認をしてから通信が始まります。

この確認作業が"http"になるわけです。

なので、別々の通信プロトコル(ルール)を使っていては「どういうデータを送受信しているのか」が認識できない状態(文字化けと似た状態)になります。

 

たとえるなら、英語しか理解できない人に、一方的に日本語を話すようなイメージです。

バグりますよね。。。

 

こういったバグがないように、双方が同じプロトコルを使うことを確かめるのが"http"の役割です。

HTTPとは

ここでいう、HTTPとは、Hypertext Transfer Protocol(ハイパーテキスト・トランスファー・プロトコル)の略です。

ハイパーテキストのための通信プロトコルという意味です。

 

ハイパーテキストは、HTMLのことを指すと考えて問題ないです。

HTMLとは

HTMLはHypertext Markup Language(ハイパーテキスト マークアップ言語)の略称です。

HTML = Webページ です。

 

なので、まとめると、

HTTPは、

Webブラウザ(クライアント)とWebサーバ(サーバ)の間でWebページなどのコンテンツをやりとりするために用いられる通信上のルール

となります。

 

HTTPSもよく見る・・・。

「https://...というURLも見かけるような。。。」

と、思った方、多いのではないでしょうか。

 

HTTPSは、

クライアントコンピュータとサーバコンピュータのWebページでのやりとりの際に、すべての通信データに対して、通信相手以外は読み取り不可(暗号化) の状態にして、セキュリティを担保する通信プロトコル

です。

 

HTTPSのSSecure(セキュア:安全)の略です。

これは、Web上で個人情報やパスワードを通信する際に、悪い人が盗み読みできないようにするためのものです。

 

パスワードを入力させるWebアプリケーションを一般公開させる際は、必ずHTTPSを用いて通信データを暗号化すべきです。

HTTPSを使わないと、あなたが個人情報を流出させた当事者になってしまいます。

なので、最近では、新たにWebページを作るなら、HTTPSで作るのが前提と考えて良いと思います。

 

おわりに

本日の学習は以上となります。

本日のまとめとしては、

  • Webブラウザはクライアントソフトウェア、Webサーバはサーバソフトウェアである
  • コンピュータがクライアントコンピュータかサーバコンピュータかは、インストールされているのが、クライアントソフトウェアか、サーバソフトウェアかで決まる
  • HTTPは、Webブラウザ(クライアント)とWebサーバ(サーバ)の間でWebページなどのコンテンツをやりとりするために用いられる通信上のルール
  • HTTPSのSはSecure(セキュア:安全)の略です。定義としては、クライアントコンピュータとサーバコンピュータのWebページでのやりとりの際に、すべての通信データに対して、通信相手以外は読み取り不可(暗号化) の状態にして、セキュリティを担保する通信プロトコル

となります。

本日は以上です!

ひきつづき、プログラミング学習を深めていきます!!

一緒にがんばりましょう!

 

-プログラミング