1. はじめに (Introduction)
ハイパーテキスト転送プロトコル (Hypertext Transfer Protocol, HTTP) は、拡張可能なセマンティクスと自己記述的なメッセージを使用して、ネットワークベースのハイパーテキスト情報システムと柔軟に相互作用するためのステートレスなアプリケーション層のリクエスト/レスポンスプロトコルです。HTTP/1.1 は以下によって定義されます:
- 本文書
- "HTTP Semantics" [HTTP]
- "HTTP Caching" [CACHING]
本文書は、HTTP/1.1 メッセージ構文、フレーミング、接続管理メカニズムを使用して HTTP セマンティクスを伝達する方法を規定しています。その目標は、HTTP/1.1 メッセージパーサーとメッセージ転送中継装置の完全な要件セットを定義することです。
本文書は、HTTP/1.1 メッセージングと接続管理に関連する RFC 7230 の部分を廃止し、変更点は付録 C.3 にまとめられています。RFC 7230 の他の部分は "HTTP Semantics" [HTTP] によって廃止されます。
1.1. 要件表記法 (Requirements Notation)
本文書に出現するキーワード「MUST (しなければならない)」、「MUST NOT (してはならない)」、「REQUIRED (必須)」、「SHALL (するものとする)」、「SHALL NOT (しないものとする)」、「SHOULD (すべきである)」、「SHOULD NOT (すべきでない)」、「RECOMMENDED (推奨される)」、「NOT RECOMMENDED (推奨されない)」、「MAY (してもよい)」、および「OPTIONAL (任意)」は、ここに示すようにすべて大文字で表示されている場合にのみ、BCP 14 [RFC2119] [RFC8174] に記載されているように解釈されるものとします。
適合性基準とエラー処理に関する考慮事項は、[HTTP] の第 2 節で定義されています。
1.2. 構文表記法 (Syntax Notation)
本仕様書は、[RFC5234] の拡張バッカス・ナウア記法 (ABNF: Augmented Backus-Naur Form) を使用し、[RFC7405] で定義された文字列の大文字小文字の区別の表記法で拡張されています。
また、[HTTP] の第 5.6.1 節で定義されたリスト拡張を使用します。これにより、"#" 演算子を使用してカンマ区切りリストをコンパクトに定義できます ("*" 演算子が繰り返しを示すのと同様)。付録 A は、すべてのリスト演算子を標準的な ABNF 表記法に展開した完全な構文を示しています。
慣例として、"obs-" で始まる ABNF 規則名は、歴史的な理由で存在する廃止された構文規則を表します。
以下のコア規則は、[RFC5234] 付録 B.1 で定義されているように、参照により含まれます: ALPHA (アルファベット)、CR (キャリッジリターン)、CRLF (キャリッジリターン + ラインフィード)、CTL (制御文字)、DIGIT (10進数 0-9)、DQUOTE (二重引用符)、HEXDIG (16進数 0-9/A-F/a-f)、HTAB (水平タブ)、LF (ラインフィード)、OCTET (任意の 8 ビットデータシーケンス)、SP (スペース)、および VCHAR (任意の可視 [USASCII] 文字)。
以下の規則は [HTTP] で定義されています:
BWS = <BWS, see [HTTP], Section 5.6.3>
OWS = <OWS, see [HTTP], Section 5.6.3>
RWS = <RWS, see [HTTP], Section 5.6.3>
absolute-path = <absolute-path, see [HTTP], Section 4.1>
field-name = <field-name, see [HTTP], Section 5.1>
field-value = <field-value, see [HTTP], Section 5.5>
obs-text = <obs-text, see [HTTP], Section 5.6.4>
quoted-string = <quoted-string, see [HTTP], Section 5.6.4>
token = <token, see [HTTP], Section 5.6.2>
transfer-coding =
<transfer-coding, see [HTTP], Section 10.1.4>
以下の規則は [URI] で定義されています:
absolute-URI = <absolute-URI, see [URI], Section 4.3>
authority = <authority, see [URI], Section 3.2>
uri-host = <host, see [URI], Section 3.2.2>
port = <port, see [URI], Section 3.2.3>
query = <query, see [URI], Section 3.4>