いまさら聞けない「HTTP通信」 “Webページを届ける”仕組みとは:「HTTP」の基本と進化を理解する【中編】
Webサイトにアクセスすると、ブラウザとWebサーバ間では「HTTP」による通信が発生する。ユーザーが目にするページは、裏側で交わされる「リクエスト」と「レスポンス」のやりとりによって成り立っている。
Webサイトにアクセスすると、ブラウザとWebサーバの間では通信プロトコル「HTTP」(Hypertext Transfer Protocol)による情報のやりとりが発生する。ユーザーが目にするWebページは、この背後で交わされている「リクエスト」(要求)と「レスポンス」(応答)のやりとりの結果として表示されているものだ。中編となる今回は、HTTP通信の具体的な流れとして、リクエストとレスポンスの構造と処理の仕組みを見ていく。
HTTPリクエストとHTTPレスポンス
併せて読みたいお薦め記事
連載:「HTTP」の基本と進化を理解する
通信プロトコルとしての「HTTP」の位置付け
クライアントデバイス(以下、クライアント)はサーバにHTTPリクエストを送信し、サーバはHTTPレスポンスをクライアントに送り返す。リクエストにはWebサイトを読み込むためにクライアントがサーバから求めている情報が記述され、レスポンスにはクライアントのWebブラウザがWebページとして表示するためのソースコードが含まれている。
サーバとクライアントでがデータを共有するために使用するこれらのリクエストとレスポンスは、標準的な文字コード「ASCII」コードで構成されている。クライアントとサーバ間のやりとりはメッセージと呼ばれ、HTTPメッセージはリクエストまたはレスポンスのいずれかとなる。
HTTPリクエスト
クライアントからのリクエストは、クライアントへのレスポンスを調整するために必要な情報をサーバに提供する。各HTTPリクエストには、以下のような情報を含むエンコードされたデータが含まれている。
- 使用されているHTTPのバージョン
- 現在利用可能なバージョンは、HTTP、HTTP/2、HTTP/3だ。
- URL
- URLはリソース、つまりWebを介してアクセス可能な特定のWebサイトを指す。
- HTTPメソッド
- HTTPメソッドは、レスポンス時にリクエストがサーバからの応答として期待する特定のアクションを示す。
- HTTPリクエストヘッダ
- HTTPリクエストヘッダには、使用されているブラウザの種類やリクエストがサーバに求めているデータなどの情報が含まれる。リクエストを処理するサーバから以前送信された情報を示すCookieが含まれることもある。
- HTTPボディ
- これはサーバがリクエストから必要とするオプション情報で、Webサイトに送信されるユーザーフォーム(ユーザー名/パスワードのログイン、短いレスポンス、ファイルのアップロードなど)が含まれる。
HTTPレスポンス
HTTPレスポンスメッセージは、クライアントからのHTTPリクエストに対するサーバの応答のことだ。レスポンスに含まれる情報は、サーバがリクエストから受け取った内容に合わせて調整され、以下のデータを含むことがある。
- HTTPステータスコード
- これはクライアントデバイスに対してリクエストのステータスを示す。レスポンスは、成功、情報レスポンス、リダイレクト、サーバ側やクライアント側でのエラーを示すことがある。
- HTTPレスポンスヘッダ
- サーバと要求されたリソースに関する情報を送信する。
- HTTPボディ(オプション)
- リクエストが成功した場合、ボディにはHTMLコードの形で要求されたデータが含まれ、クライアントブラウザによってWebページに変換される。
HTTPステータスコード
HTTPリクエストに対するレスポンスとして、サーバはしばしばレスポンスコードを発行し、リクエストが処理中であること、リクエストにエラーがあること、またはリクエストがリダイレクトされていることを示す。以下に一般的なレスポンスコードをいくつか挙げる。
- 200 OK
- これは最も一般的なレスポンスコードの一つで、GETやPOSTなどのリクエストが成功し、それに基づいて処理されていることを意味する。
- 300 Moved Permanently
- リクエストされたリソースのURLが永続的に変更された。
- 401 Unauthorized
- クライアント(サーバにリクエストを行っているエンドユーザー)が認証されておらず、リクエストされた情報へのアクセスが許可されていない。
- 403 Forbidden
- サーバがアクセスを禁止している。
- 404 Not Found
- 404エラーコードは、URLが間違っているか、その場所にリソースが存在しないことを意味する。
- 500 Internal Server Error
- サーバ内で予期しないエラーが発生し、リクエストを正常に処理できなかった。
次回の後編は、HTTP/3で採用された新しい通信プロトコル「QUIC」や、Webの安全性を高める「HTTPS」、そしてWeb通信を支える「プロキシ」の役割について解説する。
Copyright © ITmedia, Inc. All Rights Reserved.