~HTTPを定義する各種~文書
~HTTPは、分散型の協調的な~hypertext情報~system用の,~statelessな応用~levelの~protocolである。 ◎ The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems.
~HTTPは、以下に挙げる[ `~IETF@https://ietf.org/$ ~RFC, `IANA@https://www.iana.org/$ ~registry ]により定義される。 ◎ HTTP is defined by these IETF RFCs and IANA registries.
【 以下における各項の先頭の “RFC…” に付与された~linkは,原文を指す。 後続の~textに付与された~linkは,主に日本語訳を指す(もしあれば)が、 一部の仕様には,関連な~page(~testやデモなど)も挙げられる。 一部の仕様には、 便利~用に,外部~siteによる[ 日本語訳( “外部~site” と付記される)/日本語情報( “参考情報” と記される) ]も挙げられる。 】
中核~仕様
~HTTP~protocolの “中核” を成す意味論は、 次の仕様により定義される: ◎ The “core” semantics of the HTTP protocol are defined by:
- `RFC 9110@~HTTPWG/rfc9110.html$: `意味論@~HTTPinfra$ (および,その `7 〜 15@~HTTPsem§ ) ◎ RFC 9110: HTTP Semantics
- `RFC 9111@~HTTPWG/rfc9111.html$【!RFC 9112】: `~cache法@~HTTPcache$ ◎ RFC 9111: HTTP Caching
そのような意味論を “伝送路~上” に表出する仕方には、 次に挙げる 3 つがある: ◎ Those semantics are expressed “on the wire” in three ways:
- `RFC 9112@~HTTPWG/rfc9112.html$: `~HTTP11@~HTTPv1$ ◎ RFC 9112: HTTP/1.1
- `RFC 9113@~HTTPWG/rfc9113.html$: `~HTTP2@https://summerwind.jp/docs/rfc9113/$(外部~site) ◎ RFC 9113: HTTP/2
- `RFC 9114@~HTTPWG/rfc9114.html$: `~HTTP3@~HTTPv3$ ◎ RFC 9114: HTTP/3
~HTTP2, ~HTTP3は、 ~field圧縮も供する: ◎ Later versions of HTTP offer field compression:
- `RFC 7541@~HTTPWG/rfc7541.html$: `HPACK: ~HTTP2用の~header圧縮@https://syucream.github.io/hpack-spec-ja/rfc7541-ja.html$(外部~site) ◎ RFC 7541: HPACK Header Compression for HTTP/2
- `RFC 9204@~HTTPWG/rfc9204.html$: QPACK: ~HTTP3用の~header圧縮 ◎ RFC 9204: QPACK Field Compression for HTTP/3
これらの~RFCは、 総集的に,~HTTPを定義している先行する~RFCすべてを廃用にする — 次に挙げるものも含めて ⇒ RFC 1945, RFC 2068, RFC 2616, RFC 2617, RFC 7230 〜 RFC 7235, RFC 7540 ◎ These RFCs collectively obsolete all preceding RFCs defining HTTP, including RFC 1945, RFC 2068, RFC 2616, RFC 2617, RFC 7230-RFC7235, and RFC 7540.
【 これらの旧~RFCのうち, RFC 7230 〜 RFC 7235 の和訳は、 `別~pageにある@~723X$。 】
関連する仕様として,数を増やしていく[ `~header$/`~trailer$ ]に利用される次もある ⇒ `RFC 9651@~HTTPWG/rfc9651.html$: `~HTTP用の有構造~field値@~STRUCTURED-FIELDS$ (`~test一式@https://github.com/httpwg/structured-field-tests$) ◎ Also relevant is the Structured Field Values specification, which is used in a growing number of headers and trailers: • RFC 9651: Structured Field Values for HTTP (test suite)
~HTTPの上層に~protocolを築くときは、 次として文書化された現在の最善な実施に従うべきである ⇒ `RFC 9205@~HTTPWG/rfc9205.html$: `~HTTPに基づく~protocolの築法@~RFC9205$ ◎ Protocols built “on top” of HTTP should follow Best Current Practice, as documented here: • RFC 9205: Building Protocols with HTTP
拡張~registry
~HTTPには、[ ~method, 状態s~code, ~header ]を含め,多数の拡張がある。 それらはすべて — 適切な~registryに挙げられる限り — ~HTTPの “一部を成す” ことに注意: ◎ There are a large number of HTTP extensions, including methods, status codes and headers. It’s important to note that they are all “part of” HTTP, as long as they’re listed in the appropriate registries:
- `~HTTP~method~registry@~IANA-a/http-methods/$cite — `詳細情報@~HTTPinfra#method.registry$ ◎ HTTP Method Registry - more info
- `~HTTP状態s~code~registry@~IANA-a/http-status-codes/$cite — `詳細情報@~HTTPinfra#status.code.registry$ ◎ HTTP Status Code Registry - more info
- `~HTTP~field名~registry@~IANA-a/http-fields/$cite — `日本語訳@~HTTPfieldnames$/`詳細情報@~HTTPinfra#fields.registry$ ◎ HTTP Field Name Registry - more info
- `~HTTP2の各種~parameter@~IANA-a/http2-parameters/$cite — ~frame種別, 設定群, ~error~code ◎ HTTP/2 Parameters - Frame types, settings, error codes
- `~HTTP3の各種~parameter@~IANA-a/http3-parameters/$cite — ~frame種別, 設定群, ~error~code ◎ HTTP/3 Parameters - Frame types, settings, error codes
個々の~headerには、許可-可能な値を規制する,自前の~registryがある — 次に挙げるものを含め: ◎ Individual headers have their own registries that regulate permissible values, including:
- `~HTTP認証~scheme~registry@~IANA-a/http-authschemes/$cite — `詳細情報@~HTTPinfra#auth.scheme.registry$ ◎ HTTP Authentication Scheme Registry - more info
- `~HTTP~cache指令~registry@~IANA-a/http-cache-directives/$cite — `詳細情報@~HTTPcache#cache.directive.registry$ ◎ HTTP Cache Directive Registry - more info
- `~HTTPの各種~parameter@~IANA-a/http-parameters/$cite — `内容~符号法$, `転送~符号法$, `Forwarded^h ~header, `Prefer^h ~header, `Range^h に関係する~header ◎ HTTP Parameters - Content-codings, transfer-codings, Forwarded, Prefer, and Range-related headers
進捗-中な拡張~仕様
以下に挙げる~HTTP拡張は、 ~HTTP~WGによる`進捗-中な作業@~HTTPext/$であり, まだ~RFCとして公表されていない:
- `The Signature HTTP Authentication Scheme@~HTTPext/draft-ietf-httpbis-unprompted-auth.html$cite
- `Cookies: HTTP State Management Mechanism@~HTTPext/draft-ietf-httpbis-rfc6265bis.html$cite (`日本語訳@~HTTPcookie-ext$) ⇒ RFC 6265 の改訂
- `Retrofit Structured Fields for HTTP@~HTTPext/draft-ietf-httpbis-retrofit.html$cite (`日本語訳@~HTTPretrofit$) ⇒ 昔からある~fieldを有構造~fieldとして扱う
- `The HTTP QUERY Method@~HTTPext/draft-ietf-httpbis-safe-method-w-body.html$cite (`日本語訳@~HTTPquery$) ⇒ `安全$かつ`冪等$な~queryを要請するための `QUERY^m ~method
- `Resumable Uploads for HTTP@~HTTPext/draft-ietf-httpbis-resumable-upload.html$cite
- `HTTP Cache Groups@~HTTPext/draft-ietf-httpbis-cache-groups.html$cite
- `Compression Dictionary Transport@~HTTPext/draft-ietf-httpbis-compression-dictionary.html$cite
- `Template-Driven HTTP CONNECT Proxying for TCP@~HTTPext/draft-ietf-httpbis-connect-tcp.html$cite
- `Security Considerations for Optimistic Use of HTTP Upgrade@~HTTPext/draft-ietf-httpbis-optimistic-upgrade.html$cite
- `The Concealed HTTP Authentication Scheme@~HTTPext/draft-ietf-httpbis-secondary-server-certs.html$cite
- `Window Sizing for Zstandard Content Encoding@~HTTPext/draft-ietf-httpbis-zstd-window-size.html$cite
- `No-Vary-Search@~HTTPext/draft-ietf-httpbis-no-vary-search.html$cite
各~仕様に共通な内容
この~pageの以降では、上に挙げた[ 中核~仕様, その他の文書のうちいくつか ]に共通な内容を集約する。 以下における “この仕様”, “この文書”, 等々は、当の節を参照している それを指す。
構文の表記法
この仕様は、 `RFC5234$r による~ABNF( `Augmented Backus-Naur Form^en )表記法を利用する。 ◎ This specification uses the Augmented Backus-Naur Form (ABNF) notation of [RFC5234],\
加えて,この表記法は、 `RFC7405$r に定義される[ 文字列による表記法, その文字大小が区別されるかどうかを指示する表記法 ]で拡張して利用される。 ◎ extended with the notation for case-sensitivity in strings defined in [RFC7405].
【 `%s^c が接頭されていれば文字大小は区別され, `%i^c が接頭されていれば区別されない。 この拡張を利用する仕様は、一部の~RFC/~Internet-Draftに限られる(特に `RFC7405^r 以前のものには利用されない)。 】
また、 `HTTP$r `~list@~HTTPinfra#abnf.extension§† にて定義される,~list拡張を利用する — それは、 ( "`*^c" 演算子が指示する繰返しに類似な)~list演算子( "`#^c" )を利用して,~commaで分離された~listを簡潔に定義できるようにする。 ◎ with a list extension, defined in Section 7 of [RFC7230], that allows for compact definition of comma-separated lists using a '#' operator (similar to how the '*' operator indicates repetition).
【† 以前の~HTTPにおいては、 `RFC7230^r `7@~RFC7230#abnf.extension§。 】
規約として、[ 接頭辞に "`obs-^p" が付与された~ABNF規則~名 ]は[ 歴史的な理由で出現する,廃用にされた文法~規則 ]を表す。 ◎ As a convention, ABNF rule names prefixed with "obs-" denote obsolete grammar rules that appear for historical reasons.
この仕様にて利用される,次に挙げる用語は、 `RFC6365$r にて定義される ⇒# 文字, 文字~符号化~scheme, ~charset, `~protocol要素@ ◎ This specification uses the terms "character", "character encoding scheme", "charset", and "protocol element" as they are defined in [RFC6365].
【
~protocol要素は,単に “要素” とも称される。
`6365/6$rfc から定義を引用:
~protocol要素とは、
一意に命名された,~protocolの部品である。
(通例的には、
~ABNF生成規則の名前で参照される。)
】
次に挙げる中核~規則は、 `RFC5234$r `B.1@~RFCx/rfc5234#appendix-B.1§ による定義を参照する: ◎ The following core rules are included by reference, as defined in [RFC5234], Appendix B.1:
【 ここでは、 原文より~~詳細に, `RFC5234$r の記述を引用する。 】
`ALPHA@P
= `41-5A^X
/ `61-7A^X
; `英字( A-Z / a-z )^com
`CR@P
= `0D^X
; `carriage return^com
`CRLF@P
= `CR$P `LF$P
; `~Internet標準の改行^com
`CTL@P
= `00-1F^X
/ `7F^X
; `制御文字^com
`DIGIT@P
= `30-39^X
; `~decimal数字( 0-9 )^com
`DQUOTE@P
= `22^X
; `二重引用符( " )^com
`HEXDIG@P
= `DIGIT$P
/ "A"
/ "B"
/ "C"
/ "D"
/ "E"
/ "F"
; `~hex数字^com
`HTAB@P
= `09^X
; `水平tab^com
`LF@P
= `0A^X
; `line feed^com
`OCTET@P
= `00-FF^X
; `任意の 8-bit ~data単位(~octet)^com
`SP@P
= `20^X
; `~space^com
`VCHAR@P
= `21-7E^X
; 任意の可視 `USASCII$r 文字
◎
The following core rules are included by reference, as defined in [RFC5234], Appendix B.1: ALPHA (letters), CR (carriage return), CRLF (CR LF), CTL (controls), DIGIT (decimal 0-9), DQUOTE (double quote), HEXDIG (hexadecimal 0-9/A-F/a-f), HTAB (horizontal tab), LF (line feed), OCTET (any 8-bit sequence of data), SP (space), and VCHAR (any visible [USASCII] character).
日本語訳に特有な表記規約
(以下の規約は、 この~siteにある日本語訳に限り,適用される — 他~siteにある日本語訳には施行し得ないので。)
~HTTPの日本語訳では、 次に挙げる~styleが共通して利用される:
- `~field名$: `Example-Field^h
- `要請~method$: `EXAMPLE-METHOD^m
-
`応答~状態s~code$(および,その`事由~句$):
`123^st0
(Example Phrase)
- `~cache指令$: `example-directive^dir
- `~protocol要素$(~ABNFの生成規則): `example-protocol-element^p
- 他の~code類: `example_keyword^c, "`example_literal^c" (`~protocol要素$の定数~値や~keyword, HTTP ~messageを構成する他の~codeなど)
- 定義される用語: `用語~例^dfn
- 変数: %変数例 — 同じ~styleは、 同一の~instance( “個体” )を指していることを明示するためにも用いられる: 例えば、複数の文に渡る語 “応答” が同じ応答の~instanceを指しているとき、 (例えば他の応答と区別するために) %応答 と記して,そのことを明示する (それらの文を互いに関連付ける)。
その他、 個々の仕様ごとに,特有な~styleを利用することもある。
各種~registryへの参照は、 原文では, (例えば, `"Hypertext Transfer Protocol (HTTP) Method Registry"^en のように) [ 当の~registryの見出しを成す全部的な~title ]で — 引用符も込みで — 表記されるが、 日本語訳では,ほとんどを (例えば, `~HTTP~method~registry@~IANA-a/http-methods/$cite のように) 翻訳した形で — 和訳した上で, `Hypertext Transfer Protocol (HTTP)^en を~HTTPと略記して, 引用符を省いて, `cite^c ~tagで~markupして, 当の~registryを指す~linkも付与して — 表記する。
一部の仕様では,~algoを通して要件が定義されることもあり、 うち一部では,日本語訳に特有な表記法(~LET, ~IF, ~RET, 等々)を利用している。 それらの意味や定義の詳細は、 `~algoに共通して利用される表記@index.html#common-algo-symbols$を参照されたし。
各種~HTTP仕様のうち `HTTP$r より前に公表されたものは, 当時の~HTTP中核~仕様( RFC 7230 〜 RFC 7235,あるいは その前身 RFC 2616 )の[ 記述/用語 ]を参照しているが、 ( RFC 7230 〜 RFC 7235 は別として)それらの日本語訳では, ほとんどを現在の~HTTP中核~仕様( `HTTP$r 他)内の等価な[ 記述/用語 ]を指すように置換している — 原文には~linkが付与されていないものも含めて。 一部の用語は,当時の用語から変更されたので(例:~payload → `内容$)、 それらの対訳も,現在の仕様に倣うよう改めている。