🐙

Day 12: HTTP

2024/11/15に公開

はじめに

僕たちがウェブサイトを閲覧するとき、その裏では「HTTP(HyperText Transfer Protocol)」という仕組みが動いています。HTTPは、ウェブブラウザがウェブサーバーと通信してデータをやり取りするためのプロトコルです。ここでは、HTTPがどのようにデータを転送し、どんな役割を果たしているのかについて、少し詳しく見ていきます。


HTTPとは?

HTTP(HyperText Transfer Protocol)は、ウェブブラウザとウェブサーバーの間で情報をやり取りするためのプロトコル、つまり通信のお約束です。たとえば、ブラウザにURLを入力すると、HTTPが動き、ウェブサーバーにページのリクエストを送信してくれます。HTTPは「リクエスト」と「レスポンス」という形式でデータのやり取りを行い、ユーザーがページにアクセスできるようにしています。

  • リクエスト:ユーザーがページやリソース(画像、動画など)をブラウザを通じて要求すること。
  • レスポンス:ウェブサーバーがリクエストに対してデータを返すこと。

このリクエストとレスポンスのやり取りが、ウェブページの表示を可能にしているのです。


HTTPの仕組み

HTTPは、リクエストとレスポンスというメッセージの形式で通信を行います。それぞれのメッセージは以下のような要素で構成されています。

HTTPリクエスト

HTTPリクエストには、ユーザーがブラウザで何を求めているのかをサーバーに伝える情報が含まれています。リクエストは次の構成要素からなります。

  • リクエストライン:どのデータを要求するのか、またどのHTTPメソッドを使用するのかが記されています。
  • HTTPメソッド:リクエストの種類を指定する命令。以下が主要なメソッドです。
    • GET:データの取得。ページを閲覧するときに使われます。
    • POST:データの送信。フォームを送信するときなどに使われます。
    • PUT:データの更新。
    • DELETE:データの削除。
  • ヘッダー:リクエストの詳細情報(ユーザーのブラウザ情報など)が含まれています。
  • ボディ:POSTリクエストなどで追加のデータ(フォームの内容など)が含まれます。

HTTPレスポンス

サーバーは、受け取ったリクエストに対してレスポンスを返します。HTTPレスポンスも、いくつかの要素で構成されます:

  • ステータスコード:リクエストが成功したか、エラーが発生したかを示す番号です。以下が一般的なステータスコードです:
    • 200 OK:リクエストが成功。
    • 404 Not Found:リクエストされたページが見つからない。
    • 500 Internal Server Error:サーバー側のエラー。
  • ヘッダー:サーバーからの情報が記載されています。たとえば、コンテンツの種類(HTML、画像など)やサイズ、日時などです。
  • ボディ:実際にブラウザに表示されるデータが含まれています。たとえば、HTML、画像ファイル、CSS、JavaScriptなどがここに入ります。

HTTPのステータスコード

HTTPのステータスコードは、サーバーがリクエストにどう応えたかを表す番号です。ステータスコードは3桁で、特定のエラーや成功を示す役割を持っています。

  • 2xx 成功:リクエストが正常に完了しています。
    • 200 OK:リクエスト成功、問題なくページが表示されます。
    • 201 Created:新しいリソースが作成されました。
  • 3xx リダイレクト:別の場所への転送を示しています。
    • 301 Moved Permanently:リソースが永久に別のURLに移動しました。
    • 302 Found:一時的に別のURLに転送されます。
  • 4xx クライアントエラー:ユーザー側の問題です。
    • 400 Bad Request:リクエストが無効です。
    • 403 Forbidden:リソースへのアクセスが許可されていません。
    • 404 Not Found:リクエストされたリソースが見つかりません。
  • 5xx サーバーエラー:サーバー側の問題です。
    • 500 Internal Server Error:サーバーの内部エラーが発生しました。
    • 503 Service Unavailable:サーバーが一時的に利用不可能です。

HTTPとHTTPSの違い

「HTTP」と「HTTPS」の違いは、通信の暗号化にあります。HTTPは、情報を平文(暗号化されていない状態)でやり取りするため、悪意のある攻撃者が通信を傍受できてしまいます。一方、HTTPS(HTTP Secure)は、SSL/TLSという暗号化技術を使用して通信を保護します。

HTTPSのメリット

  • セキュリティ強化:データが暗号化されているため、通信内容が外部に漏れません。
  • 信頼性向上:ブラウザにはHTTPSで安全に通信できていることを示すアイコンが表示され、ユーザーに安心感を与えます。

HTTPのバージョン

HTTPにはいくつかのバージョンがあり、特に「HTTP/1.1」と「HTTP/2」がよく使われています。HTTP/1.1は最も基本的なバージョンで、通信が順番に行われるため、複数のリクエストがあると少し遅くなりがちです。HTTP/2は並行してデータをやり取りできるため、ウェブページの読み込みが速くなるメリットがあります。

小テスト

Q1: HTTPの役割は何ですか?
a) ウェブブラウザとウェブサーバーがデータをやり取りするプロトコル
b) インターネット全体を管理する仕組み
c) ユーザー認証を行うためのプロトコル
d) データベースの操作を効率化する仕組み

Q2: HTTPのリクエストに含まれる主要な要素はどれですか?
a) ステータスコード、ヘッダー、ボディ
b) リクエストライン、HTTPメソッド、ヘッダー、ボディ
c) DNSクエリ、IPアドレス、ポート番号
d) HTMLファイル、CSSファイル、JavaScriptファイル

Q3: HTTPステータスコード「404 Not Found」は何を意味しますか?
a) サーバー側でエラーが発生した
b) リクエストされたリソースが見つからない
c) リクエストが無効である
d) リソースが一時的に移動している

Q4: HTTPSとHTTPの主な違いは何ですか?
a) HTTPSはリクエストが高速で行われる
b) HTTPSは通信内容が暗号化される
c) HTTPはブラウザでのみ使用される
d) HTTPSはサーバーエラーを防ぐ

Q5: HTTP/2の主なメリットは何ですか?
a) 暗号化が強化される
b) 通信速度が速くなる
c) ステータスコードが追加される
d) リクエストが同時に行われなくなる


解答

Q1: a) ウェブブラウザとウェブサーバーがデータをやり取りするプロトコル
Q2: b) リクエストライン、HTTPメソッド、ヘッダー、ボディ
Q3: b) リクエストされたリソースが見つからない
Q4: b) HTTPSは通信内容が暗号化される
Q5: b) 通信速度が速くなる


まとめ

HTTPは、ウェブブラウザとサーバーがデータをやり取りするための基本的なプロトコルで、インターネット利用の基盤です。リクエストとレスポンスを通じて情報を交換し、ステータスコードによって通信状況を把握します。また、HTTPSは通信を暗号化することで安全性を強化しています。さらに、HTTP/2のような進化したバージョンによって、ウェブページの読み込み速度も向上しています。HTTPの仕組みを理解することで、インターネット上のデータの流れがよりわかりやすくなります。

Discussion