メインコンテンツまでスキップ

1. はじめに

ハイパーテキスト転送プロトコル (HTTP) は、拡張可能なセマンティクスと自己記述的なメッセージペイロードを用いて、ネットワークベースのハイパーテキスト情報システムとの柔軟なやり取りを可能にする、ステートレスなアプリケーション層のリクエスト/レスポンスプロトコルです。本文書は、全体として HTTP/1.1 仕様を構成する一連の文書の最初のものです:

  1. "Message Syntax and Routing" (本文書)

  2. "Semantics and Content" [RFC7231]

  3. "Conditional Requests" [RFC7232]

  4. "Range Requests" [RFC7233]

  5. "Caching" [RFC7234]

  6. "Authentication" [RFC7235]

この HTTP/1.1 仕様は、RFC 2616 と、HTTP のバージョン管理に関する RFC 2145 を廃止します。本仕様はまた、以前に RFC 2817 で定義されていた、トンネルを確立するための CONNECT の使用を更新し、RFC 2818 で非公式に記述されていた "https" URI スキームを定義します。

HTTP は、情報システムのための汎用インターフェースプロトコルです。これは、提供されるリソースの種類に依存しない統一的なインターフェースをクライアントに提示することによって、サービスの実装方法の詳細を隠蔽するように設計されています。同様に、サーバーは各クライアントの目的を認識する必要はありません。HTTP リクエストは、特定の種類のクライアントやあらかじめ定められたアプリケーションステップの系列に関連付けることなく、単独で捉えることができます。その結果、このプロトコルは多くの異なる状況で効果的に使用でき、その実装は時間とともに独立に進化できます。

HTTP はまた、非 HTTP 情報システムとの間で双方向に通信を変換するための中介プロトコル (intermediation protocol) として使用されるようにも設計されています。HTTP プロキシとゲートウェイは、多様なプロトコルを、クライアントが HTTP サービスと同様に閲覧・操作できるハイパーテキスト形式に変換することにより、代替の情報サービスへのアクセスを提供できます。

この柔軟性の帰結の 1 つは、プロトコルをインターフェースの背後で起きることによって定義できないことです。代わりに、私たちは通信の構文、受信した通信の意図、および受信者に期待される振る舞いを定義することに限定されます。通信を単独で捉えるならば、成功した動作は、サーバーが提供する観測可能なインターフェースに対する対応する変化に反映されるべきです。しかしながら、複数のクライアントが並行して、場合によっては相反する目的で動作する可能性があるため、そのような変化が単一のレスポンスの範囲を超えて観測可能であることを要求することはできません。

本文書は、HTTP で使用または参照されるアーキテクチャ要素を説明し、"http" および "https" URI スキームを定義し、全体的なネットワーク動作と接続管理を説明し、HTTP メッセージのフレーミングと転送の要件を定義します。私たちの目標は、メッセージのセマンティクスに依存しない、HTTP メッセージ処理に必要なすべての機構を定義し、それによってメッセージパーサーとメッセージ転送仲介者に対する完全な要件集合を定義することです。

1.1. 要件記法​

本文書におけるキーワード "MUST"、"MUST NOT"、"REQUIRED"、"SHALL"、"SHALL NOT"、"SHOULD"、"SHOULD NOT"、"RECOMMENDED"、"MAY"、および "OPTIONAL" は、[RFC2119] に記載されているとおりに解釈されるものとします。

適合性の基準およびエラー処理に関する考慮事項は、セクション 2.5 で定義されています。

1.2. 構文記法​

本仕様は、[RFC5234] の Augmented Backus-Naur Form (ABNF) 記法を使用し、セクション 7 で定義されているリスト拡張を併せて用います。これにより、'#' 演算子 ('*' 演算子が繰り返しを表すのと同様のもの) を使用して、コンマ区切りリストを簡潔に定義できます。付録 B は、すべてのリスト演算子を標準的な ABNF 記法に展開した後の収集された文法を示します。

以下のコアルールは、[RFC5234] の付録 B.1 で定義されているとおり、参照によって含まれています: ALPHA (文字)、CR (キャリッジリターン)、CRLF (CR LF)、CTL (制御文字)、DIGIT (10 進数 0-9)、DQUOTE (二重引用符)、HEXDIG (16 進数 0-9/A-F/a-f)、HTAB (水平タブ)、LF (ラインフィード)、OCTET (任意の 8 ビットデータ列)、SP (スペース)、および VCHAR (任意の可視 [USASCII] 文字)。

慣例として、"obs-" を接頭辞とする ABNF ルール名は、歴史的な理由で現れる "obsolete" (廃止された) 文法ルールを示します。