【Webの基本】HTTPの仕組みとは

スポンサーリンク
スポンサーリンク
スポンサーリンク

HTTPとは?

HTTPとはHyper Text Transfer Protocol(ハイパー テキスト トランスファー プロトコル)の略で、ブラウザとサーバー間の通信手段です。

WebサーバはHTTPというプロトコルを用いてクライアントと通信します。HTTP通信はクライアント側のリクエストから始まり、サーバはこれにレスポンスを返します。リクエストではメソッドと呼ばれるもので動作を指定します。

メソッドには主に2種類あり、GETはデータの取得、POSTはデータの送信を表します。

また、「http」ではなく「https」となっている場合がありますが、これはHyper Text Transfer Protocol Secure(ハイパー テキスト トランスファー プロトコル セキュア)といって、「httpよりもセキュリティがしっかりしている通信」という意味です。
 
例をあげると、お問い合わせフォームのついたページから、メールアドレスなどを送信するとき、サーバーと通信中にハッカーに情報を盗まれないよう、httpsを使って通信するといった具合で使われます。

GETメソッド

GETメソッドの例としてhttps://leaclaw-media.comにアクセスする場合の通信の様子を見てみましょう。



まず、クライアント(主にブラウザ)がWEBサーバに以下のようなリクエストを送ります。

GET /index.html HTTP/1.1
Host: www.leaclaw-media.com
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 25069
Date: Fri, 10 May 2018 06:17:55 GMT

(コンテンツ本体)

これは、www.leaclaw-media.comというホスト名のサーバに対し、GETメソッドで/index.htmlというURLを要求していることを表します。これを受けてサーバは以下のようなレスポンスを返します。先頭行にある200はステータスコードと呼ばれ、レスポンスの意味を表しています。「200 OK」「403 Forbidden」「404 Not Found」など様々なものがあります。

2行目のContent-Typeは送信したファイルの種類を表しています。この場合はHTMLファイルですので「text/html」となっています。 最後に1行の空行を挟み、ファイル本体が送信されます。 これを受けてクライアントはファイルの内容を表示します。

POSTメソッド

こPOSTメソッドは掲示板などの動的なコンテンツに用いられます。例として実在しない掲示板に「example」という名前で「こんにちは」と書き込みする際の通信の様子を見てみましょう。



まず、クライアントがWEBサーバに以下のようなリクエストを送ります。(実在しないため実際にアクセスすると「404 Not Found」となります。)

POST /write.php HTTP/1.1
Host: www.team-lab.com
Content-Length: 93

name=teamlab&text=%82%B1%82%F1%82%C9%82%BF%82%CD

POSTの場合はレスポンスと同じように最後に1行の空白を挟みデータを送信します。データは&で区切られ、各データごとに データの識別名=データ本体 という構造になっています。

また、日本語などの送信できない文字は「%xx」(xは16進数)という形式に変換が行われてから送信されます。この変換をURLエンコードといいます。

サーバではデータを処理するプログラムが起動し、掲示板の更新処理などを行った後にGETの場合と同様にレスポンスを返します。

まとめ

今回説明した流れは、わかりやすくするために細かい部分は書いていません。

各自で実際の通信を見ながら理解を深めていくのがオススメです。

他の各項目の詳細については、また別の機会に学んでいきましょう。