テクノロジー

2022年7月22日

HTTPとは

目次

1. Webとは
2. Webを支えるクライアント / サーバとは
3. HTTPとは
4. URL / HTTPメソッドとは
5. Webアプリケーションとは
6. IPアドレスとは
7. TCP/IPとは
8. ドメイン / DNSサーバとは
9. ポート番号とは
10. 代表的なプロトコル
11. Webアプリケーションを支えるサーバの種類

*上記のリンクにアクセスすることで、続きをDIVER Learningsで確認できます。

ゴール

  • HTTPとはどのようなプロトコルなのかを理解する

HTTPとはなにか

あなたは、自分のパソコンやスマートフォンから、見たいサイトのWebページへ接続すると、ブラウザの先頭行にhttp:// または https:// で始まる文字が並んでいるのを見たことがあるはずです。このhttpは、 HTTP というプロトコル(通信規約)を使用していることを意味しています。Webでは、このHTTPを使って通信を行います。

一方で、あなたは、Webは、インターネットというTCP/IPという共通のプロトコルで接続されたネットワークを利用していることを、すでに学習しました。あなたは、次のような疑問を持つかもしれません。

「インターネットで通信しているWebがTCP/IPというプロトコルを使っているのに、なぜ、HTTPというプロトコルが必要なのだろうか」

その答えは簡単です。HTTPというプロトコルは、Web上で扱うHTML文書などのやり取りを取り決めるための、Web専用のプロトコル(通信規約)です。HTML文書などのWeb専用の荷物を実際に運ぶのは、TCP/IPという共通のプロトコルです。TCP/IPは、郵便システムのようなもので、いろいろな荷物を取り扱うことができると考えてください。通信では、複数の役割を持つプロトコルを連携して、効率的なやりとりを実現しています。

また、Webを利用したコンピュータ間のやり取りがクライアントサーバ型であることも、すでに学習しました。
HTTPは、あなたのパソコンやスマートフォンに実装されているブラウザを、Webのためのクライアント(Webクライアント)として利用します。

HTTPでは、Webクライアントであるブラウザと、Webのためのサーバ(Webサーバ)との間で、以下のようなやり取りを行います。

  1. Webクライアント(ブラウザ)からWebサーバに対し、依頼(リクエスト)を送信する
  2. リクエストを受け取ったWebサーバは、Webクライアント(ブラウザ)へ返信(レスポンス)を送信する

この HTTPによる依頼を、HTTPリクエスト といいます。また、HTTPによる返信を、 HTTPレスポンス といいます。Webの処理は、このHTTPリクエストHTTPレスポンス の一往復で、一つの処理が完了することを理解しましょう。

Image from Gyazo

Webページの閲覧は、HTTPを利用して、Web上の目的のサーバに依頼(リクエスト)することによって、Webサーバが要求された情報を提供する(返信する)サービスです。

次にHTTPリクエスト、HTTPレスポンスの中身について、もう少し詳しく見ていきましょう。

HTTPリクエストとはなにか

HTTPリクエストは、Web通信のためのサーバ(Webサーバ)へ、情報閲覧や情報登録を依頼するためのリクエスト(依頼)メッセージです。

HTTPリクエストは、リクエストラインとヘッダ部、ボディ部で構成されています。リクエストライン、ヘッダ部は、依頼する封筒の表書きのようなものです。依頼先や依頼の目的が書かれています。ボディ部は、封筒の中身のようなものです。依頼時に提供する具体的な内容が書かれています。特に提供内容がないときは、依頼のみの空封筒になります。

HTTPリクエスト 内容
リクエストライン リクエストの宛先と目的を含む
ヘッダ部 リクエストの種類、クッキー情報など
ボディ部 サーバへ渡す情報

リクエストラインには、HTTPリクエストの対象となるリソース(目的の情報)を処理するための次の二つの重要な値が記載されています。

リクエストラインの要素 役割
URL(Uniform Resource Locator) リクエスト対象の 宛先(どこ) を特定する値
HTTPメソッド リクエストの 目的(何をしたいか) を指示する値

URLとHTTPメソッドの組み合わせにより、 どこに対して、何をしたいのか を伝えることができます。
あなたが、後々作成するWebアプリケーションでは、この二つの値(URLとHTTPメソッド)の組み合わせで、どの処理を実施するかが決定されます。

ヘッダー部のクッキー情報は、ブラウザとサーバの間の関係を同期するための情報です。

Image from Gyazo

HTTPレスポンスとはなにか

HTTPレスポンスは、クライアントからのリクエストに基づいて、Webサーバから返信されるレスポンス(返信)メッセージです。

HTTPレスポンスは、ステータスラインとヘッダ部、ボディ部で構成されています。ステータスライン、ヘッダ部は、返信用封筒の表書きのようなものです。依頼に対する返信概要などが書かれています。ボディ部は、封筒の中身のようなもので、提供する具体的な情報内容が書かれています。

HTTPレスポンス 内容
ステータスライン ステータスコードなどを含む
ヘッダ部 レスポンスの種類、クッキー情報など
ボディ部 クライアントへ渡す情報

ステータスラインには、クライアントからのリクエストが成功したか否かを示すステータスコードなどの値が含まれています。
主なステータスコードには次のようなものがあります。

ステータスコード 内容 意味
200 OK リクエスト成功(リクエストが成功し、要求した内容のレスポンスを返信する)
302 Found リクエストによる宛先リソースの変更(リクエストが成功し、別の宛先へ接続変更を実施)
404 Not Found リクエストの宛先なし(リクエストの対象となる該当リソースの宛先が見つからないときに発生する)
500 Internal Server Error リクエスト先のサーバ内部のエラー発生(リクエスト先のサーバ側のアプリケーションのエラーに起因する)

リクエストとレスポンスの動作の例

例えば、あなたが、好みのサイトの情報を得るために、ブラウザに該当サイトの宛先を指定し、送信ボタンを押すとします。これは、情報閲覧のHTTPリクエストを、希望するサイトのサーバへ送信したことになります。

リクエストが該当のサーバへ到着すると、Webサーバがリクエストを受け取り、URLの最終の宛先とHTTPメソッドを判断して、処理の担当へ引き渡します。もし、ここで、該当の処理担当が見つからないときは、404のステータスエラーとして、リクエスト先へレスポンスが送信されます。

該当の処理担当が見つかると、要求されたリクエスト内容に基づいて処理が行われます。この処理の途中で問題があると、正しい結果を返すことができません。このとき、500のステータスエラーとして、リクエスト先へレスポンスが送信されます。

正しく処理が行われると、HTTPレスポンスのボディ部には、ブラウザに表示する画面の内容(HTML文書)が書き込まれ、リクエストを依頼したクライアントのブラウザに向けて、送信されます。このとき、リクエストの成功を意味する200のステータスコードを付加します。

Image from Gyazo

まとめ

  • HTTPは、Webを利用してクライアントとサーバがやり取りするためのプロトコルである。
  • HTTPは、クライアントから発した一つのリクエストに対して、サーバから一つのレスポンスを返すことで完了する。
  • リクエストに含まれるURLとHTTPメソッドは、目的の対象が「どこ」にあり、「何をしたいか」を伝える重要な役割を持つ。レスポンスのステータスは、リクエストの結果を示す値である。

関連記事

次回:4. URL / HTTPメソッドとは
前回:2. Webを支えるクライアント / サーバとは

*上記のリンクにアクセスすることで、続きをDIVER Learningsで確認できます。

DIVE INTO CODEのことをもっと知ってみませんか?