HTTP(ハイパーテキスト転送プロトコル) は、ブラウザーなどの Web クライアントと Web サーバー間の通信を可能にするアプリケーション層のプロトコルです。クライアントによるリソースのリクエスト方法と、サーバーが要求されたコンテンツやその他の情報を返す方法を定義します。
ユーザーが Web サイトにアクセスすると、HTTP を介してブラウザーが HTML ページ、画像、スクリプトなどのリソースをリクエストし、サーバーが HTTP レスポンスとして該当するコンテンツを返します。また、HTTP は Web アプリケーションと API 間の通信にも使用され、異なるシステム間でのデータ交換を可能にします。
HTTP の仕組み
HTTP はクライアント・サーバーモデルに基づいて動作し、Web ブラウザーなどのクライアントがネットワーク経由でサーバーと通信できるようにします。ユーザーが Web サイトを開いたり、Web アプリケーションを操作したりすると、クライアントは要求されたリソースをホストするサーバーとの通信を開始します。
一般的な HTTP 通信は、次の 3 つのステップで構成されます。
- リクエスト: クライアントがリソースの取得や特定の操作を実行するために、サーバーへ HTTP リクエストを送信します。
- 処理: サーバーがリクエストを受信し、その内容に応じた処理方法を判断します。
- レスポンス: サーバーが HTTP レスポンスを返し、クライアントは受信した情報を処理して Web ページを表示したり、要求されたデータを処理したりします。
HTTP リクエストとレスポンスとは?
HTTP リクエストとレスポンスは、クライアントとサーバー間でやり取りされるメッセージです。リクエストはクライアントが実行したい操作を指定し、レスポンスはその結果を伝え、関連するデータを返します。
HTTP リクエスト
HTTP リクエストには通常、リクエストメソッド、URL またはパス、ヘッダー、そして任意のリクエストボディが含まれます。
例えば、ブラウザーは Web ページを取得するために GET リクエストを送信し、アプリケーションはユーザー登録情報を送信するために POST リクエストを使用することがあります。リクエストヘッダーには、受け入れ可能なコンテンツ形式、認証情報、クライアントの設定などの追加情報が含まれます。
HTTP レスポンス
HTTP レスポンスには、リクエストの処理結果を示すステータスコード、追加情報を提供するヘッダー、そして要求されたコンテンツやその他のデータを含む任意のレスポンスボディが含まれます。
例えば、200 OK はリクエストが成功したことを示し、404 Not Found は要求されたリソースが見つからないことを示します。レスポンスヘッダーの Content-Type は、返されるコンテンツのメディアタイプを示します。例えば、text/html、application/json、image/jpeg などがあります。
主な HTTP メソッドとステータスコード
主な HTTP メソッド
HTTP メソッドは、Web ページの取得、データの送信、リソースの更新など、クライアントがリソースに対して実行できる操作を定義します。それぞれのメソッドは、実行する操作の目的を示します。
- GET: サーバーからリソースを取得します。
- POST: サーバーにデータを送信します。主にリソースの作成や特定の処理の実行に使用されます。
- PUT: 指定した場所にリソースを作成するか、既存のリソースを置き換えます。
- PATCH: リソースの一部を更新します。
- DELETE: 指定したリソースの削除を要求します。
- HEAD: レスポンスボディを取得せず、レスポンスヘッダーのみを取得します。
主な HTTP ステータスコード
HTTP ステータスコードは、HTTP レスポンスに含まれる 3 桁の数値で、リクエストの処理結果を示します。ステータスコードは、1xx(情報レスポンス)から 5xx(サーバーエラー)までの 5 つのカテゴリに分類されます。
- 1xx – 情報レスポンス: リクエストが受信され、通信または処理が継続していることを示します。
- 2xx – 成功: リクエストが正常に処理されたことを示します。例:200 OK、201 Created。
- 3xx – リダイレクト: リダイレクト先へのアクセスなど、処理を完了するために追加の操作が必要であることを示します。
- 4xx – クライアントエラー: リクエストに問題があることを示します。例:400 Bad Request、403 Forbidden、404 Not Found。
- 5xx – サーバーエラー: サーバーがリクエストの処理中に問題に遭遇したことを示します。例:500 Internal Server Error、503 Service Unavailable。
HTTP の主な用途
HTTP は、さまざまなオンラインサービス間の通信を支えています。主な用途は次のとおりです。
- Web サイトのコンテンツ配信: HTML、CSS、JavaScript、画像などの Web ページを構成するリソースを転送します。
- Web アプリケーション: インタラクティブな機能、フォーム送信、ユーザー認証などの処理を支えます。
- API 通信: JSON などのデータ形式を使用して、アプリケーションやサービス間で情報を交換します。
- ファイル転送: ドキュメント、画像、その他のファイルのアップロードとダウンロードを可能にします。
- ストリーミングとメディア配信: HTTP ベースの技術を使用して、音声、動画、その他のメディアコンテンツを配信します。
HTTP と HTTPS の違い
HTTP と HTTPS は、どちらもクライアントと Web サーバー間の通信を可能にするプロトコルですが、セキュリティとデータ保護の仕組みが異なります。
| 比較項目 | HTTP | HTTPS |
|---|---|---|
| 正式名称 | Hypertext Transfer Protocol | Hypertext Transfer Protocol Secure |
| 暗号化 | プロトコル自体にはデータを暗号化する機能がありません。 | TLS を使用して通信を暗号化します。 |
| データの安全性 | 通信データが傍受や改ざんの被害を受ける可能性があります。 | 通信データの傍受や改ざんの防止に役立ちます。 |
| サーバー認証 | プロトコル自体にはサーバーの身元を検証する仕組みがありません。 | デジタル証明書を使用してサーバーの身元を検証します。 |
| デフォルトポート | 80 | 443 |
| URL のプレフィックス | http:// |
https:// |
| 主な用途 | 機密性の低い通信やテスト環境 | 一般的な Web サイト、オンライン取引、Web アプリケーション |
HTTP の配信性能を向上させるには?
HTTP の配信性能を向上させるには、ユーザーに近い場所でコンテンツをキャッシュする、動的コンテンツを最適化する、HTTP/2 や HTTP/3 などの最新プロトコルを採用する、サービスの可用性を損なう可能性のある悪意のあるトラフィックを軽減するといった対策が有効です。
CDNetworks は、Web パフォーマンスソリューションに加え、WAFや DDoS 対策を組み合わせることで、HTTP の配信性能を向上させ、Web アプリケーション攻撃や DDoS 攻撃から Web サイトやアプリケーションを保護します。
CDNetworks の HTTP 配信・セキュリティソリューションをご覧ください。
よくある質問
HTTP はステートレスなプロトコルですか?
HTTP はステートレスなプロトコルです。各リクエストは独立しており、HTTP 自体はリクエスト間でクライアントの状態を自動的に保持しません。アプリケーションでは、Cookie、トークン、サーバー側のセッションストレージなどを利用してセッションを管理できます。
HTTP リクエストの例を教えてください。
HTTP リクエストの例として、GET /index.html HTTP/1.1 が挙げられます。これは、Web サーバーに対して /index.html リソースの取得を要求するものです。
HTTP を利用した DDoS 攻撃は可能ですか?
HTTP は、過剰なリクエストを送信して Web サイトやアプリケーションのリソースを枯渇させる DDoS 攻撃に悪用されることがあります。代表的な攻撃手法の一つが HTTP Flood 攻撃で、サーバーリソースを大量に消費させ、サービスの可用性を損ないます。
HTTP でファイルを転送できますか?
HTTP はファイル転送に対応しており、ブラウザーやアプリケーションは HTTP リクエストとレスポンスを通じてファイルをアップロードおよびダウンロードできます。
HTTP には TCP 接続が必要ですか?
HTTP で常に TCP 接続が必要になるわけではありません。HTTP/1.1 と HTTP/2 は TCP を使用しますが、HTTP/3 は UDP 上で動作する QUIC を使用します。