はじめに
WebブラウザーへURLを入力すると、Webページが表示されます。このときブラウザーは、通信先を確認してWebサーバーへ必要な情報を要求し、返されたデータを受け取っています。
この要求と応答の共通ルールがHTTPです。この記事では、ブラウザーがHTTPリクエストを送り、WebサーバーからHTTPレスポンスを受け取るまでの基本的な流れを解説します。
HTTPとは
HTTP(Hypertext Transfer Protocol)は、クライアントとサーバーがリクエストとレスポンスを交換するためのアプリケーション層プロトコルです。Web通信では、主にブラウザーがクライアントとなり、Webサーバーへ情報を要求します。
HTTPが決めるのは、何を要求し、どのような結果を返すかという通信上のルールです。HTML、CSS、JavaScript、画像、JSONなどを受け渡せますが、それらを表示したり実行したりする方法までは決めません。
HTTPを含むアプリケーション層の位置づけは、「アプリケーション層とは?OSI・TCP/IPモデルでの役割を解説」で解説しています。
HTTP通信の流れ
ブラウザーへURLを入力してからWebページを表示するまでには、通信先の確認、接続、リクエスト、レスポンスという処理が行われます。

1.DNSでWebサーバーのIPアドレスを確認する
URLには、通信方法、通信先、要求する情報の場所が含まれます。例えば https://example.com/guide では、https が通信方法、example.com が通信先のホスト名、/guide が要求する情報のパスです。
ブラウザーは、DNSを使ってホスト名に対応するIPアドレスを確認します。DNSによる名前解決の詳しい仕組みは、「DNSとは?ドメイン名からIPアドレスを調べる名前解決の仕組みを解説」を参照してください。
2.Webサーバーとの通信を開始する
通信先のIPアドレスが分かると、ブラウザーはWebサーバーとの通信を開始します。HTTPでは80番、HTTPSでは443番が標準的な宛先ポート番号です。ポート番号によって、サーバーは受信した通信をどのサービスへ渡すかを区別します。
HTTPのデータは、トランスポート層の仕組みによってWebサーバーまで運ばれます。ただし、この記事では接続や再送制御の詳細には立ち入りません。ポート番号と通信基盤については、「ポート番号とは?3つの範囲と通信を識別する仕組みを解説」と「トランスポート層とは?役割とTCP・UDPの違いを分かりやすく解説」を参照してください。
3.HTTPリクエストを送る
通信できる状態になると、ブラウザーはWebサーバーへHTTPリクエストを送ります。リクエストには、処理内容を示すメソッド、要求する情報の場所、通信条件を伝えるフィールド、必要に応じて送信するデータが含まれます。
Webページを取得するときに使われる代表的なメソッドがGETです。ブラウザーが /guide を取得したい場合は、GETメソッドと対象のパスをWebサーバーへ伝えます。
4.HTTPレスポンスを受け取る
Webサーバーはリクエストを処理し、HTTPレスポンスを返します。レスポンスには、処理結果を示すステータスコード、返す内容の種類などを示すフィールド、HTMLや画像などのコンテンツが含まれます。
要求した情報を正常に返せる場合は200番台、情報が見つからない場合は404などのステータスコードが使われます。ブラウザーはレスポンスの内容を確認し、受け取ったデータを次の処理へ渡します。
5.必要なデータを追加で取得する
最初のレスポンスでHTMLを受け取っても、Webページに必要なデータがすべて揃うとは限りません。HTMLにCSS、JavaScript、画像などの参照先が書かれている場合、ブラウザーはそれぞれに対して追加のHTTPリクエストを送ります。
このように、1つのWebページを表示するまでに複数回のリクエストとレスポンスが行われることがあります。
HTTPリクエストとレスポンスに含まれる情報
HTTPリクエストはクライアントからサーバーへの要求、HTTPレスポンスはサーバーからクライアントへの処理結果です。主な違いを整理すると、次のようになります。
| 項目 | HTTPリクエスト | HTTPレスポンス |
|---|---|---|
| 主な送信者 | クライアント | サーバー |
| 開始情報 | メソッドと対象 | ステータスコード |
| フィールド | 受け取りたい形式や通信条件 | 内容の種類や通信条件 |
| コンテンツ | フォーム入力や送信データなど | HTML、画像、JSONなど |
HTTP/1.1形式の簡略例では、Webページを取得するリクエストは次のように表せます。
GET /guide HTTP/1.1
Host: example.com
Webサーバーが正常にHTMLを返す場合、レスポンスは次のような形になります。
HTTP/1.1 200 OK
Content-Type: text/html
<html>...</html>
実際の通信では、目的に応じて複数のフィールドが追加されます。それでも基本は、クライアントが要求し、サーバーが結果を返すという関係です。
HTTPSではHTTPのやり取りを保護する
HTTPSは、HTTPのリクエストとレスポンスを保護された通信路で交換する仕組みです。通信内容の暗号化、途中で変更されていないことの確認、接続先の確認を行います。
HTTPSでも、GETなどのメソッド、ステータスコード、フィールド、コンテンツというHTTPの役割は変わりません。ブラウザーがリクエストを送り、Webサーバーがレスポンスを返すという基本的な流れも同じです。
ただし、HTTPSであることだけで、Webサイトの情報やサービス自体の安全性まで保証されるわけではありません。HTTPSが主に保護するのは、ブラウザーと接続先の間で行われる通信です。
まとめ
HTTP通信では、ブラウザーがDNSで通信先を確認し、WebサーバーへHTTPリクエストを送ります。Webサーバーは処理結果をHTTPレスポンスとして返し、ブラウザーは必要に応じて追加のデータを要求します。
- HTTPは、クライアントとサーバーが要求と応答を交換するためのプロトコル
- リクエストにはメソッドと対象、レスポンスにはステータスコードと結果が含まれる
- 1つのWebページでも、複数回のリクエストとレスポンスが行われることがある
- HTTPSは、HTTPの役割を維持したまま通信を保護する
HTTPを単に「Webページを表示する仕組み」と覚えるのではなく、ブラウザーとWebサーバーが要求と応答を交換するための共通ルールと捉えると、Web通信の基本的な流れを説明できます。
コメント