【Web初心者】HTTPリクエストとHTTPレスポンスの仕組み

HTTPとは何か、というところからHTTPメッセージの構成要素の説明、HTTPのリクエストとレスポンスの仕組みまでを解説していきます。

HTTPとは

私たちは普段、スマホやPCからWebブラウザなどを利用し、URLを入力したり、googleで検索を行ったりして、Webサイトやインターネット上に置かれているファイルなどにアクセスします。

Webサイトにアクセスして閲覧をする際には、指定したURLをもとに、Webブラウザ(googlechromeなど)がWebサーバーに対して要求を送り、Webサーバはその要求内容を見て、それに対する返答(アクセスしたいWebサイトの情報)を返巣という仕組みになっています。

このように、要求と応答の手順や内容、書式などの定義がHTTP(Hyper Text Transfer Protocol)です。

HTTPメッセージの構成

HTTPメッセージとは、WebブラウザとWebサーバーがHTTPの規格に則って通信のやりとりを行う際に送信するメッセージのことです。

HTTP通信を行うWebブラウザとWebサーバは、お互いにHTTPメッセージという形式でデータをやり取りするという認識になり、WebサーバからWebブラウザへの要求もスムーズに行うことができます。

例えるなら、現代の日本の若者が「連絡するね!」といったら連絡を送る側も受け取る側も日本語でやり取りするのが一般認識ですよね。そこでいきなり英語や韓国語で連絡を送ってもきちんとした応答がすぐに返ってくるはずがありません。

このようにWebサイトにアクセスする際にWebサーバとWebブラウザで共通認識として持っているメッセージの内容がHTTPメッセージというイメージです。

HTTPメッセージは、主に開始行メッセージヘッダーメッセージボディの3種類のデータで構成されています。リクエストとレスポンスでそれぞれ呼び方は異なってきますが、お互いに同じ構成でメッセージのやり取りを行います。

間に入っている空行は、メッセージヘッダーの終わりを意味するために入っています。

HTTPリクエスト

HTTPリクエストは、WebブラウザからWebサーバーに対して、「Webサイトが見たい!」などの要求をする際に送るメッセージです。

リクエストのメッセージは、リクエスト行(開始行)、メッセージヘッダー、メッセージボディの3つで構成されています。

リクエスト行

Webサーバーに対して、「情報が欲しい」「入力した情報を登録してほしい」など、どのような処理を依頼するのかという情報が入っています。

例えば以下のようなリクエスト行であれば、GETという種類のメソッドで、サーバ上に置いてある/test/index.htmlが欲しい。HTTPのバージョンは1.1です。という要求を示しています。

GET /test/index.html HTTP/1.1

メッセージヘッダー

Webブラウザの種類やバージョン、リクエスト先のサーバー名や使用している言語や対応するデータの種類などを伝える部分です。

メッセージボディ

こちらから送信したいデータそのものが入っています。検索フォームで検索したい文字を入力した場合にはその内容がメッセージボディに入って送信されます。

何も送信したい情報がない場合には、空で送信されることもあります。

HTTPレスポンス

HTTPレスポンスは、貰ったリクエストの内容を解析して、相手が欲しがっている情報を返してあげる役割を持っています。

ステータス行(開始行)、メッセージヘッダー、メッセージボディの3つで構成されています。

ステータス行

リクエストを送ってきたWebブラウザに対して、処理の結果を伝える部分です。

HTTPのバージョン、ステータスコード、テキストフレーズで主に構成されており、ステータスコードは、リクエストに対する処理の結果、テキストフレーズはステータスの示す内容を表示します。

例えばステータスコードが200であれば、正常に処理が終了し、欲しがっているデータを返せた際に表示されます。404 Not Foundのように表示された場合には、指定されたリクエストに対しての欲しい情報は持っていません。という意味を示しています。

HTTP1.1 200 OK

メッセージヘッダー

Webサーバー側のソフトウェアの情報、送り返すデータの種類などの情報を記載している部分です。

メッセージボディで送信する情報がどんなものなのかという概要を示してあげるのもこの部分になります。

メッセージボディ

Webブラウザ側からリクエストされた実際のデータが入っている部分です。HTMLファイルのデータや、画像ファイルなどが該当します。

最後に

HTTPに関して、全体の動きは理解いただけたでしょうか。

リクエストやレスポンスのメッセージのさらに詳細な記事についても書いていますので、もっと詳しく知りたいという方はそちらも是非ご覧ください。