[1] protocol
は、プロトコルの名前と版を表す構文です。
[3] protocol
やそれに類する構文は、
次の場面で利用されます。
[4] product
(User-Agent:
, Server:
,
Via:
の注釈) も類似した構文を採用していますが、
プロトコルではなく製品を表すものとなっています。
[5] protocol
は、プロトコル名のみか、またはプロトコル名とプロトコル版を/
で区切ったものです
>>2。
[6] プロトコル名とプロトコル版は、いずれも字句です >>2。
[7] 大文字と小文字の区別の有無は明記されておらず、区別するものとみられます。 HTTPの版では区別すると明記されています >>9。
[13] SERVER_PROTOCOL
では、値に更に制限があります。
[12] HTTPの版では、プロトコル版の値に更に制限があります。
[10] Via:
では、プロトコル名が HTTP
の場合、プロトコル名と /
を省略できることになっています。
プロトコル版は省略できません。
[15] この他に、 HTTP の RFC には例示として
HTTP/2.0
, IRC/6.9
,
SHTTP/1.3
, RTA/x11
という架空の Upgrade:
ヘッダーの値が登場します。
[16] Upgrade:
の値については、 IANA登録簿 >>17 が用意されています
>>20。
[18] IANA登録簿は RFC 2817 により設けられました >>26, >>27。
[19] 2003年12月の時点で、登録簿には一つも登録されていません。
HTTP 仕様書で定義されている HTTP/*
や
登録手続きを規定している RFC 2817 が定義している TLS/1.0
すら載っていないのはなんとも間抜けな話です (が、 IANAREG では良くある話です)。
[22] その後いつからか、 TLS/1.0
も登録されました。
また、 WebSocket
も登録されています。
[21] RFC 7230 は新しい登録手続きを定義しています。
手続きは First Come First Served となっています >>20。
更に HTTP
も登録しています >>20。
[28] 気づいたら TLS/1.0
は TLS
に変わっています。
RFC 2817 は TLS/1.0
を規定していましたが、 RFC正誤表が
TLS
を規定し、 TLS の版を指定できる形に改めています >>27。
[29] 現在の IANA登録簿は、 RFC 2818 (のみ) を出典に、 版は「ANY DIGIT.DIGIT (e.g.. "1.2")」と説明しています >>17。
[31] HTTP/2 において Upgrade: h2
は無視しなければならない
>>30 と規定されていますが、なぜかこの h2
という値は登録されていません。
予約状態で登録されていても良さそうなものですが。
[32] 869725 – support shoutcast streams () https://bugzilla.mozilla.org/show_bug.cgi?id=869725
SERVER_PROTOCOL
の項を参照してください。 また Web Sockets は、区別しないUpgrade:
の処理を定義しています。