【入門者向け】Webって何?に対して簡単に説明してみた。
はじめに
こんにちは、現在プログラミング勉強中のrsm02です!
皆さん、突然ですが「Web」って何かわかりますか?
・「ネット」と何が違うの?
・Webって何かの略称
…人に説明するのはちょっと難しそうですよね。
私もプログラミングを学んでいく中で、「Web」という言葉を何度も耳にしたのですが、実際「Web」がどういうもので、どういう仕組みで成り立っているのかいまいち理解できていませんでした。
そこで、この記事では「プロになるためのWeb技術入門」という本を参考に
・Webって何ぞや
・ついでにどういう仕組みかサクッと教えてよ
という「Web」の仕組みについて超初心者向けに解説していきたいと思います。
これから「Webサイト、Webアプリケーション」を作ってみたいという方にぜひ読んでいただけたら嬉しいです。
インターネットとは
「コンピューターをお互いに接続して通信できるようにしたネットワークの網」です。
「インター(Inter) = ~の間に」+「ネット(net) = ネット」=インターネットです。
Webとは
Webは、インターネット上の様々な情報を閲覧可能にするシステムのことです。
Hyper Link(ハイパーリンク、一般的に言うリンク)で様々な情報をつなぎ、
HTMLの形式で情報を表現したものです。
情報が網のようにつながりあうことからWorld Wide Web(世界に広がる蜘蛛の巣)と名付けられ、略してWWWやWebと呼ばれます。
Webの仕組み
Webでの情報のやり取りは、「Webサーバ」と「Webクライアント」というソフトウェアによって成り立ちます。
Webクライアントがリクエスト(要求)を送ることで、Webサーバーがそれに対応するレスポンス(返事)を返して情報をやりとりします。
クライアントとサーバーに分ける理由は役割ごとにコンピューターを分けた方が管理しやすいからです。
HTTP
Webで情報をやり取りする際の情報をやり取りする上でのルールのことを通信プロトコルといいます。
そして、HTMLを転送するのに適したプロトコルがHTTP(Hyper Text Transfer Protocol)です。
CGI
Webでは、多くのユーザーにサイトを訪れてもらうためにコンテンツを常に更新し続け、目新しい情報を供給する必要がありました。
しかし、すべてのコンテンツを人間の手で作成していたのでは、手が足りません。
そこで、「コンテンツをコンピューターに創ってもらう」という発想で生まれたのが、CGI(Common Gateway Interface)という技術です。
CGIでは、アクセスした時刻に合わせて「こんにちは」「こんばんは」などの挨拶が変化したり、ブログの記事ごとにアクセス数を表示するなどコンピューターでWebページに変化をつけることができます。
CGIは、Webサーバー上でプログラムを動作させ、HTMLを生成することで成立しています。
また、プログラムによって生成されたHTMLをはじめとするコンテンツを動的コンテンツ、あらかじめ用意されたコンテンツを静的コンテンツといいます。
コンテンツ
Webサーバーを通じて公開される情報を一般的にコンテンツと呼びます
このブログもコンテンツです。
URL
ネット上のコンテンツを一意に特定するための仕組みをURL(Uniform Resource Locator)と呼びます。
IPアドレス
HTTPで情報をコンピューターから取得する際には、URLで特定されたコンテンツを表示します。ですが、実際にはURLは人間にわかりやすいように表現されたもので、コンピューターにはIPアドレスという数値によって識別されています。
IPアドレスは「192.168.0.1」のように表現されます。
TCP/IP
HTTPリクエストをサーバーに送付するためのプロトコルです。
URLには、どのサーバーにアクセスするのかというのを識別するためにホスト名という部分が存在します。
そして、IPアドレス(人間にとってのURL)がわかると、
このTCP/IPというプロトコルに乗っ取った形でリクエスト内容を送信してくれます。
そして、このプロトコルでは、HTTPリクエストなどの情報をパケットと呼ばれる小さなに単位に分割して送信します。
その後、インターネットによってパケットを受け取り、届いたパケットを再構築したうえで、Webサーバに渡されます。
パケットのように小さく情報を小分けにして送る理由は、送信を失敗した際に被害を最小に抑えるためです。
ポート番号
TCP/IPによって情報の送受信が可能になりましたが、TCP/IPはあくまで、情報を送受信するためのプロトコルであり、実際にその情報がどんな情報かを識別はしてくれません。
そこで、TCP/IPによって送られ、パケットを再構築した情報をどのアプリケーションで
処理すればいいのかわかりません。
そこで、届いた情報にはポート番号と呼ばれる番号をつけることで、情報ごとに処理を行うアプリケーションを変更することが可能になります。
ポートは、港という意味で、情報を受け取る港のイメージで覚えるとわかりやすいと思います。
ログインについて
最後にWebを使用するうえで当たり前のように使用されるログイン機能について解説していきます。
普段Webを使用する際、ログインすることで自分のアカウントだけのコンテンツを確認できると思います。
しかし、前提としてHTTPでは本来ログイン機能は実装できません。
では、なぜログイン機能を当たり前に使用できるのでしょうか。
それは、ログイン機能にCookie(クッキー)が使用されているからです。
クッキーを理解するために、まずはHTTPがステートレスであることを理解しなければなりません。
ステートフル、ステートレス
プロトコルは種類によって前回までの情報を保持してくれているものと、保持してくれていないものがあります。前者をステートレスプロトコル、後者をステートフルプロトコル呼びます。
例として、ステートフルなプロトコルでは、現在のディレクトリは?という質問を受け取ると最新のディレクトリの位置を教えてくれますが、ステートレスなプロトコルだと状態を保持していないため、回答が得られません。
そして、HTTPはステートレスなプロトコルです。
つまり、HTTPは状態を保持できないプロトコルなので、ログイン機能は実装できません。
そこで登場するのがCookie(クッキー)です。
Cookie
ログイン処理を実行後にWebサーバからWebブラウザにCookieを送ることで、次回以降そのサーバーにリクエストを送る際は、クッキーもリクエストと一緒に送信されます。
そして、Webサーバでは、そのCookieをもとにユーザーレスポンスを返します。
この仕組みによってステートレスなプロトコルであるHTTPを使用したWebブラウザでの通信もログインし続けながら操作することが可能になります。
おわりに
いかがでしたでしょうか?
こちらの記事で最低限のWebについての仕組みが用語とともに学べたかと思います。
これからエンジニアを目指す方、Webについて知りたい方にこの記事が少しでもお役に立てば幸いです。