コンテンツにスキップ

HTTP/1.1

出典: フリー教科書『ウィキブックス(Wikibooks)』

はじめに

[編集]

HTTP/1.1は、Webの基盤となる重要なプロトコルです。このハンドブックでは、HTTP/1.1の基本概念から実践的な使用方法までを解説します。

HTTP/1.1とは

[編集]

HTTP/1.1は、1999年にRFC 2616として標準化されたプロトコルです。HTTP/1.0の後継として、以下のような改良が加えられました。

  • 持続的接続: 単一のTCP接続で複数のリクエストを処理。
  • ホストヘッダーの必須化: 仮想ホストのサポート。
  • キャッシュ制御: キャッシュの効率的な管理。

HTTP/1.1の特徴

[編集]

テキストベースのプロトコル

[編集]

HTTP/1.1は、テキスト形式でデータをやり取りします。これにより、人間が読みやすく、デバッグが容易です。

持続的接続

[編集]

単一のTCP接続で複数のリクエストを処理できるため、接続のオーバーヘッドが削減されます。

パイプライン処理

[編集]

リクエストを並列に送信し、レスポンスを順次受信できます。

HTTP/1.1の仕組み

[編集]

HTTP/1.1は、クライアントとサーバー間のリクエストとレスポンスのやり取りに基づいて動作します。

  1. 接続の確立
    • クライアントがサーバーにTCP接続を確立。
  2. リクエストの送信
    • クライアントがリクエストを送信。
  3. レスポンスの受信
    • サーバーがリクエストを処理し、レスポンスを返す。
  4. 接続の終了
    • 接続を閉じるか、持続的接続を維持。

HTTP/1.1のリクエストとレスポンス

[編集]

リクエストの例

[編集]
GET /index.html HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Accept: text/html

レスポンスの例

[編集]
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234

<!DOCTYPE html>
<html>
<head>
    <title>Example</title>
</head>
<body>
    <h1>Hello, World!</h1>
</body>
</html>

HTTP/1.1のメソッド

[編集]

HTTP/1.1では、以下の主要なメソッドが定義されています。

  • GET: リソースの取得。
  • POST: リソースの作成またはデータの送信。
  • PUT: リソースの更新。
  • DELETE: リソースの削除。
  • HEAD: リソースのヘッダー情報の取得。
  • OPTIONS: サーバーがサポートするメソッドの確認。

HTTP/1.1のステータスコード

[編集]

HTTP/1.1では、以下のようなステータスコードが定義されています。

  • 1xx (情報): リクエストを受信し、処理中。
  • 2xx (成功): リクエストが成功。
  • 3xx (リダイレクト): 追加の処理が必要。
  • 4xx (クライアントエラー): クライアント側のエラー。
  • 5xx (サーバーエラー): サーバー側のエラー。

[編集]
  • 200 OK: リクエストが成功。
  • 404 Not Found: リソースが見つからない。
  • 500 Internal Server Error: サーバー内部エラー。

HTTP/1.1のヘッダー

[編集]

HTTP/1.1では、リクエストとレスポンスにヘッダーを追加できます。以下は、主要なヘッダーの例です。

  • Host: リクエストの対象ホスト。
  • User-Agent: クライアントの情報。
  • Content-Type: リソースのメディアタイプ。
  • Content-Length: リソースのサイズ。
  • Cache-Control: キャッシュの制御。

HTTP/1.1のキャッシュ

[編集]

HTTP/1.1では、キャッシュを効率的に管理するためのヘッダーが提供されています。

  • Cache-Control: キャッシュの動作を制御。
  • ETag: リソースのバージョンを識別。
  • Last-Modified: リソースの最終更新日時。

例: キャッシュ制御

[編集]
Cache-Control: max-age=3600
ETag: "12345"
Last-Modified: Wed, 21 Oct 2020 07:28:00 GMT

HTTP/1.1のパフォーマンスチューニング

[編集]
  • 持続的接続の活用: 接続の再利用でオーバーヘッドを削減。
  • キャッシュの最適化: 適切なキャッシュ制御でリソースのロードを高速化。
  • リソースの圧縮: gzip,deflatezstdを使用してリソースを圧縮。

HTTP/1.1のセキュリティ

[編集]
  • HTTPSの使用: TLSを使用して通信を暗号化。
  • ヘッダーの検証: 不正なヘッダーを防ぐ。
  • アクセス制御: 適切なアクセス制御を実施。

HTTP/1.1のユースケース

[編集]
  • Webサイト: 基本的なWebサイトの構築。
  • API: RESTful APIの提供。
  • ファイル転送: ファイルのアップロードやダウンロード。

HTTP/1.1とHTTP/2の比較

[編集]
特徴 HTTP/1.1 HTTP/2
プロトコル テキストベース バイナリベース
多重化 非対応 対応
ヘッダー圧縮 非対応 対応
サーバープッシュ 非対応 対応

HTTP/1.1の未来

[編集]

HTTP/1.1は、HTTP/2HTTP/3に置き換えられつつありますが、依然として広く使用されています。特に、レガシーシステムやシンプルな用途で利用されます。

参考文献

[編集]

このハンドブックが、HTTP/1.1の理解と実践に役立つことを願っています。HTTP/1.1を活用し、安定したWebアプリケーションを開発しましょう!