/
478.txt
405 lines (300 loc) · 24.8 KB
/
478.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
[404] [[HTTP]] には、 [[HTTP/0.9]]、[[HTTP/1.0]]、[[HTTP/1.1]]、[[HTTP/2.0]]
の4つの版 (バージョン) があります。
;; [524] [[HTTP]] の[[版]]は、モードのようなもので、 [[HTTP/1.1]] を実装すれば [[HTTP/1.0]]
を実装しなくても良いというようなものではありません。 (特定の相手とのみ通信することがわかっていれば、
その相手が実装している[[版]]を実装するだけで済みますが、一般的には [[HTTP/1.0]]
を含む複数の[[版]]を実装する必要があります。)
* 仕様書
[REFS[
- [508] '''[CITE@en[RFC 7230 - Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing]] ([TIME[2014-06-07 01:59:35 +09:00]] 版) <https://tools.ietf.org/html/rfc7230#section-2.6>'''
- [526] [CITE@en[RFC 7230 - Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing]] ([TIME[2014-06-07 01:59:35 +09:00]] 版) <https://tools.ietf.org/html/rfc7230#section-8.3.1>
- [531] [CITE@en[RFC 7230 - Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing]] ([TIME[2014-06-07 01:59:35 +09:00]] 版) <https://tools.ietf.org/html/rfc7230#section-8.3.2>
]REFS]
* [CODE(ABNF)@en[HTTP-version]] 構文
[2] [[HTTP]] でプロトコルの版を示すために使われる部分が
[DFN[[CODE(ABNF)[[[HTTP-version]]]]]] で、例えば
[SAMP(HTTP)[HTTP/1.1]] のように斜線で区切ってプロトコル名とプロトコル版を並べた文字列になっています。
[FIG(railroad)[
= [CODE[HTTP]]
= [CODE[/]]
= [[ASCII数字]]
= [CODE[.]]
= [[ASCII数字]]
]FIG]
[2] HTTP 派生プロトコルである [[RTSP]] や [[SIP]] も同様な構文である
[DFN[[CODE(ABNF)[[[RTSP-Version]]]]]] や
[DFN[[CODE(ABNF)[[[SIP-Version]]]]]] を定義しています。
;; [510] [[RFC 1945]], [[RFC 2068]], [[RFC 2616]] では [CODE(ABNF)@en[[[HTTP-''V''ersion]]]]
でしたが、 [[RFC 7230]] では [CODE(ABNF)@en[[[HTTP-''v''ersion]]]] になっています。
[509] [[HTTPメッセージ]]には (古の [[HTTP/0.9]] を除いて)
必ず [CODE(ABNF)[HTTP-Version]] が最初の行に入ることになっています。
受信側はこれを見てどう返答するのかを決めることになります。
[3] 関連プロトコルでも [CODE(ABNF)[[VAR[*]]-Version]]
を使うことがあります。例えば、 [[CGI]]
で使われる[[メタ変数]] [CODE(CGI)[[[SERVER_PROTOCOL]]]]
は受信したメッセージの [CODE(ABNF)[[VAR[*]]-Version]]
になります。
[525] これらは、他の[[ヘッダー]]で使われることがある [CODE(ABNF)@en[[[protocol]]]]
構文の特別な形となっています。
** 大文字と小文字の区別
[8] HTTP では <IW:RFCErrata:2616> で大文字と小文字を区別''する''旨が追記されています。
ところがすべての RFC でこの点には言及されていません。
しかも [[ABNF]] の規定 (2.1) により、
この部分の大文字・小文字は区別しないことになっていました。
[9] 実装の方はといいますと、 [[Apache]]
は小文字のにも対応しています。
[WEAK[適当なプロトコル名を入れると [CODE(HTTP)[[[400]] Bad Request]] になりますが、 [CODE(HTTP)[http/1.0]] とか入れてもそうはなりません。]]
他の実装の中にはきっと小文字だと受け付けないものもあるのでしょう。
[10] RTSP はこの点では完全に HTTP (RFC 2068) 参照なので、
大文字・小文字も両方きっと使えるんだろうなーという状態です。
[11] SIP は RFC 3261 で大文字・小文字を区別''しない''が、
出力の際は必ず大文字にしないと'''いけない'''といっています。
[WEAK[この規定が一番妥当な線ですよね。]]
** 版番号
[406] [[版番号]]には[RUBY[[[大版]]][メジャーバージョン]@en[major version]]
([[整数部]]) と[RUBY[小版][マイナーバージョン]@en[minor version]] ([[小数部]])
があります。
[512] [[RFC 7230]] では、メジャーバージョンとマイナーバージョンはそれぞれ[[ASCII数字]]
1桁とされています [SRC[>>508]]。
[513] [[RFC 1945]]、[[RFC 2068]]、[[RFC 2616]] と [[RTSP]] では、
それぞれ1桁''[[以上]]''の[[ASCII数字]]とされていました。
[514] [[SIP]] では、 [CODE[2.0]] とされています [SRC[>>5]]。
* [CODE(ABNF)@en[HTTP-Version]] (相当) の一覧
[402] [[HTTP]] と派生プロトコルにおける [CODE(ABNF)@en[HTTP-Version]] (相当)
の一覧は、 [CODE(ABNF)@en[[[protocol]]]] の項を参照してください。
* 版番号の意味
[511] [[HTTPメッセージ]]における [DFN[[CODE(ABNF)@en[[[HTTP-version]]]]]] は、
[[送信者]]がその版の [[HTTP]] [[仕様]]に適合することを表しています [SRC[>>508]]。
[515] メジャーバージョンは、[[HTTPメッセージ]]の構文を表します [SRC[>>508]]。
[408] [CODE(ABNF)@en[[[HTTP-version]]]] におけるマイナーバージョンは、
メジャーバージョン内で[[送信者]]が適合し理解できる最大のマイナーバージョンを表します
[SRC[>>508]]。
[[送信者]]の能力を示すもので、[[メッセージ]]の解釈は示しません [SRC[>>405 2.]]。
[520] [[HTTPメッセージ]]を処理する[[中間器]] (つまり[[トンネル]]以外の[[中間器]])
は、自身のプロトコルの版を[[転送]]する[[メッセージ]]に含めなければ[['''なりません''']]。
[SRC[>>508]]
** 版の選択
[415] [[クライアント]]は、[DEL[(少なくても条件的に適合する)]]
最高の[[HTTPの版]]で[[要求]]を送信する[['''べきです''']]。
条件的にも適合しない版を送っては[['''なりません''']]。 [SRC[>>405 2.3, >>508]]
[416] ただし[[鯖]]が対応しているメジャーバージョンが分かっているときは、それ[[以下]]のメジャーバージョンとする[['''べきです''']]。
[[鯖]]が [[HTTP]] を正しく実装していないとわかっていて、一度は通常の[[要求]]を送ってみて実際に不具合があると判別できたときには、
より低い版で送信して構いません。 [SRC[>>405 2.3, >>508]]
[417] [[鯖]]は、[DEL[(少なくても条件的に適合する)]] 最高の[[HTTPの版]]であって、
[[要求]]のメジャーバージョン[[以下]]のものにより[[応答]]を送信する[['''べきです''']]。
条件的にも適合しない版を送っては[['''なりません''']]。 [SRC[>>405 2.3, >>508]]
[506] [[クライアント]]が [[HTTP]] を正しく実装していないとわかっているか、
していないと思われる時には、[[HTTP/1.0]] で送っても構いませんが、
[CODE(HTTP)@en[[[User-Agent:]]]] などによりそうであると判定できる場合に限ります [SRC[>>508]]。
;; [521] [[RFC 2145]] では、「より低い版で送信して構いませんが、
これは既定の動作とするべきではありませんし、
[[要求]]の版が [[HTTP/1.1]] [[以上]]ならそうする[['''べきではありません''']]」 [SRC[>>405 2.3]]
とされていました。
[418] [[鯖]]は、[[要求]]のメジャーバージョンで[[応答]]を送れない、送りたくない時は、
[CODE(HTTP)@en[[[505]]]] [[応答]]を送って構いません。 [SRC[>>405 2.3, >>508]]
[522] [[受信者]]は、対応しているメジャーバージョンの未対応のマイナーバージョンの[[メッセージ]]を受け取った時は、
対応している最大のマイナーバージョンに従い解釈する[['''べきです''']] [SRC[>>508]]。
[410] [[版番号]]は[[末端対末端]]ではなく[[ホップ毎]]のものです [SRC[>>405 2.1]]
から、[[串]]は中継する時に別の [[HTTPの版]]になることがあります。
[516] [[HTTP/1.1]] [[メッセージ]]を [[HTTP/1.0]] [[受信者]]や版不明の[[受信者]]に[[送信]]する時には、
新機能を無視すれば[[妥当]]な [[HTTP/1.0]] [[メッセージ]]として解釈できるように構築することになっています
[SRC[>>508]]。
[523] [[HTTP/0.9]] は[RUBYB[勧められません]@en[discouraged]] [SRC[[[RFC 1945]] 4.1]]。
** ヘッダーの扱い
[517] [[ヘッダー]]の解釈は、同じメジャーバージョンのマイナーバージョン間では変わりません。
ただし[[ヘッダー]]が無い時の既定の動作は変わるかもしれません。 [SRC[>>508]]
;;
[407] メジャーバージョンは、[[ヘッダー]]の解釈を示すことができます。
マイナーバージョンは、[[ヘッダー]]の解釈を示してはいけません。 [SRC[>>405 2.]]
[518] 明記されていない限り、 [[HTTP/1.1]] の[[ヘッダー]]は他の [[HTTP/1.x]]
に対しても定義されています [SRC[>>508]]。
[411] [[串]]は [CODE(HTTP)@en[[[Connection:]]]] [[ヘッダー]]で保護されている場合を除き、
未知の[[ヘッダー]]を[[転送]]しなければなりません [SRC[>>405 2.1]]。
[519] 新しい[[ヘッダー]]を導入する場合、それを認識しない[[受信者]]が安全に無視できるなら、
プロトコルの版を変更しなくて構いません。 [SRC[>>508]]
[409] [[版番号]]が不明、または [[HTTP/1.0]] の[[受信者]]に対して [[HTTP/1.1]]
の[[メッセージ]]を送る時には、 [[HTTP/1.0]] で定義されていない[[ヘッダー]]をすべて削除した時に
[[HTTP/1.0]] [[メッセージ]]として妥当なものでなければなりません。 [SRC[>>405 2.]]
[412] [[送信者]]のマイナーバージョンより[[受信者]]のマイナーバージョンの方が小さい時であっても、
大きなマイナーバージョンの方にしかない[[ヘッダー]]を含めても構いません。
しかし[[受信者]]がそれを解釈できることに依存してはなりません。 [SRC[>>405 2.2]]
[EG[
[413] 例えば [[HTTP/1.1]] [[鯖]]は [[HTTP/1.0]] [[クライアント]]に
([[RFC 1945]] で定義されていない) [CODE(HTTP)@en[[[Cache-Control:]]]] を送っても構いません。
しかし (同じく [[RFC 1945]] で定義されていない) [CODE(HTTP)@en[[[Transfer-Encoding:]] [[chunked]]]]
は[[メッセージ]]の解釈自体を変えるものですから、送ってはいけません。 [SRC[>>405 2.2]]
[414] なお[[串]]で[[版番号]]が書き換わることがありますから、 [[HTTP/1.1]]
[[鯖]]が送信する相手は [[HTTP/1.0]] の[[串]]かもしれませんが、その先の[[クライアント]]は
[[HTTP/1.1]] [CODE(HTTP)@en[[[Cache-Control:]]]] を理解できるかもしれません。
(が [CODE(HTTP)@en[[[chunked]]]] は [[HTTP/1.0]] [[串]]の時点で解釈がおかしくなってしまうので、
使ってはいけません。)
]EG]
* HTTP の版により構文や動作や適合性が変わるもの
[FIG(short list)[
- [[HTTPメッセージ]]
- [[HTTP接続]]
- [CODE(HTTP)@en[[[Transfer-Encoding:]]]]
- [CODE(HTTP)@en[[[Upgrade:]]]]
- [[HTTPキャッシュ]]
- [[警告符号]] [CODE(HTTP)[[[1xx]]]]
]FIG]
* [CODE(MIME)@en[version]] 引数 (MIME)
[527] [[MIME型]] [CODE(MIME)@en[[[message/http]]]], [CODE(MIME)@en[[[application/http]]]] の
[DFN[[CODE(MIME)@en[[[version]]]]]] [[引数]]は、
当該[[HTTPメッセージ]]の [[HTTP]] の版を表します [SRC[>>526, >>531]]。
[528] 構文は明記されていませんが、例として [CODE[[[1.0]]]] [SRC[[[RFC 1945]]]]
や [CODE[[[1.1]]]] が挙げられています [SRC[>>526, >>531]]。
[529] この[[引数]]が指定されていない場合、[[開始行]]から[[HTTPの版]]を決定できます
[SRC[>>526, >>531]]。
;; [530] [CODE(MIME)@en[[[version]]]] と[[開始行]]が矛盾するときの処理は定義されていません。
* 歴史
** RFC 1945, RFC 2068, RFC 2616
[FIG[
[FIGCAPTION[
[1] RFC 1945 (HTTP/1.0); RFC 2068・2616 (HTTP/1.1) 3.1 HTTP Version
]FIGCAPTION]
> HTTP uses a "<major>.<minor>" numbering scheme to indicate versions
of the protocol. The protocol versioning policy is intended to allow
the sender to indicate the format of a message and its capacity for
understanding further HTTP communication, rather than the features
obtained via that communication. No change is made to the version
number for the addition of message components which do not affect
communication behavior or which only add to extensible field values.
The <minor> number is incremented when the changes made to the
protocol add features which do not change the general message parsing
algorithm, but which may add to the message semantics and imply
additional capabilities of the sender. The <major> number is
incremented when the format of a message within the protocol is
changed. [INS[[INS[{2616}]] See RFC 2145 [36] for a fuller explanation.]]
HTTP はプロトコルの判を示すために [CODE[[VAR[<major>]].[VAR[<minor>]]]]
という番号付け方式を使います。プロトコル版付け方針は、
その通信を通して得られる特徴を示すものというよりは、
送信者がメッセージの書式と以降の HTTP 通信を理解する能力を示すことができるようにするものです。
通信動作に影響しないメッセージ部品や拡張可能な欄値を追加するだけのメッセージ部品の追加によっては版番号は変わりません。
[VAR[<minor>]] 番号は、プロトコルに行われた変更がメッセージの意味を追加し、送信者の追加の能力を暗示しても、
一般メッセージ解析算法は変更しない特徴を加える時に増やします。
[VAR[<major>]] 番号はプロトコル中のメッセージの書式が変更された時に増やします。 [INS[より完全な説明は [[RFC2145]] を見て下さい。]]
> The version of an HTTP message is indicated by an HTTP-Version field
in the first line of the message. [DEL[[INS[{1945}]] If the protocol version is not specified, the recipient must assume that the message is in the simple HTTP/0.9 format.]] [INS[[INS[{errata}]] HTTP-Version is case-sensitive.]]
HTTP メッセージの版はメッセージの最初の行の [CODE(ABNF)[HTTP-Version]]
欄で示します。 [DEL[プロトコルの版が示されていない時は、受信者はそのメッセージが単純 HTTP/0.9 書式であると仮定しなければなりません。]] [INS[[CODE(ABNF)[HTTP-Version]] は大文字・小文字を区別しません。]]
>
- HTTP-Version = "HTTP" "/" 1*DIGIT "." 1*DIGIT
> Note that the major and minor numbers [DEL[[INS[{1945}]] should]] [INS[MUST]] be treated as separate
integers and that each [DEL[may]] [INS[[INS[{2616}]] MAY]] be incremented higher than a single digit.
Thus, HTTP/2.4 is a lower version than HTTP/2.13, which in turn is
lower than HTTP/12.3. Leading zeros [DEL[[INS[{1945}]] should]] [INS[MUST]] be ignored by recipients and [DEL[[INS[{1945}]] never generated by senders]] [INS[MUST NOT be sent]].
大番号と小番号は別の整数として扱[DEL[うべきです]][INS[わなければ'''なりません''']]し、
それぞれの番号は単一の数字よりも大きく増やしても'''構いません'''。
従って、 [CODE(HTTP)[HTTP/2.4]] は [CODE(HTTP)[HTTP/2.13]]
よりも小さな版で、 [CODE(HTTP)[HTTP/2.13]] は
[CODE(HTTP)[HTTP/12.3]] よりも小さな版です。受信者は先行する零を無視[DEL[するべきです]][INS[しなければ'''なりません''']]し、
送信者は送信しては'''なりません'''。
> [DEL[[INS[{1945}]] This document defines both the 0.9 and 1.0 versions of the HTTP protocol.]] [DEL[[INS[{1945,2068}]] Applications sending [DEL[[INS[{1945}]] Full-]]Request or [DEL[[INS[{1945}]] Full-]]Response messages, as defined by this specification, [DEL[[INS[{1945}]] must]] [INS[MUST]] include an HTTP-Version of [DEL["HTTP/1.0"]] [INS["HTTP/1.1"]]. [INS[[INS[{2068}]] Use of this version number indicates that the sending application is at least conditionally compliant with this specification.]] ]] [INS[An application that sends a request or response message that includes HTTP-Version of "HTTP/1.1" MUST be at least conditionally compliant with this specification. Applications that are at least conditionally compliant with this specification SHOULD use an HTTP-Version of "HTTP/1.1" in their messages, and MUST do so for any message that is not compatible with HTTP/1.0. For more details on when to send specific HTTP-Version values, see RFC 2145 [36].]]
;[DEL[この文書は HTTP プロトコルの 0.9 と 1.0 の2つの版を定義します。]] [DEL[この仕様書で定義する通り [CODE(ABNF)[Request]] メッセージや [CODE(ABNF)[Response]] メッセージを送信する応用は、 [DEL[[CODE(HTTP)[HTTP/1.0]]]] [INS[[CODE(HTTP)[HTTP/1.1]]]] の [CODE(ABNF)[HTTP-Version]] を含めなければ'''なりません'''。 [INS[この版番号を使用することは、送信する応用がこの仕様書に少なくても条件的には適合することを示します。]]]] [INS[[CODE(HTTP)[HTTP/1.1]] の [CODE(ABNF)[HTTP-Version]] を含んだ要求メッセージまたは応答メッセージを送信する応用は、この仕様書に少なくても条件的に適合しなければ'''なりません'''。この仕様書に少なくても条件的に適用する応用は、そのメッセージで [CODE(HTTP)[HTTP/1.1]] の [CODE(ABNF)[HTTP-Version]] を使用する'''べきです'''し、 HTTP/1.0 と互換ではないメッセージにはそうしなければ'''なりません'''。いつ特定の [CODE(ABNF)[HTTP-Version]] 値を送信するかについてより詳しくは [[RFC2145]] を見て下さい。]]
[DEL[
> [INS[{1945}]] HTTP/1.0 servers must:
- o recognize the format of the Request-Line for HTTP/0.9 and
HTTP/1.0 requests;
- o understand any valid request in the format of HTTP/0.9 or HTTP/1.0;
- o respond appropriately with a message in the same protocol
version used by the client.
HTTP/1.0 サーバーは、
- HTTP/0.9 要求と HTTP/1.0 要求の [CODE(ABNF)[Request-Line]]
書式を認識しなければなりません。
- HTTP/0.9 や HTTP/1.0 の書式の妥当な要求を理解しなければなりません。
- クライアントが使用しているのと同じプロトコル版のメッセージで適切に応答しなければなりません。
> HTTP/1.0 clients must:
- o recognize the format of the Status-Line for HTTP/1.0 responses;
- o understand any valid response in the format of HTTP/0.9 or HTTP/1.0.
HTTP/1.0 クライアントは、
- HTTP/1.0 応答の [CODE(ABNF)[Status-Line]] の書式を認識しなければなりません。
- HTTP/0.9 や HTTP/1.0 の書式の妥当な応答を理解しなければなりません。
]DEL]
[INS[
> [INS[{2068,2616}]] The HTTP version of an application is the highest HTTP version for
which the application is at least conditionally compliant.
応用の HTTP 版は、その応用が少なくても条件付で適合する最高の HTTP 版です。
]INS]
> Proxy and gateway applications [DEL[[INS[{1945,2068}]] must]] [INS[[INS[{2616}]] need to]] be careful [DEL[in]] [INS[when]] forwarding [DEL[[INS[{1945}]] requests that are received]] [INS[messages]] in [DEL[[INS[{1945}]] a format]] [INS[protocol versions]]
different from that of the application[DEL['s [INS[{1945}]] native HTTP version]].
Since the protocol version indicates the protocol capability of the sender, a proxy/gateway [DEL[[INS[{1945}]] must]] [INS[[INS[{2068,2616}]] MUST]] [DEL[[INS[{1945,2068}]] never]] [INS[[INS[{2616}]] NOT]] send a message with a version indicator which is greater than its [DEL[[INS[{1945}]] native]] [INS[actual]] version[DEL[; if]] [INS[. [INS[{2616}]] If]] a higher version request is received, the proxy/gateway [DEL[[INS[{1945}]] must]] [INS[MUST]]
either downgrade the request version [DEL[[INS[{1945}]] or]][INS[, [INS[{2068,2616}]]]] [INS[[INS[{2616}]] or]]
respond with an error[INS[, [INS[{2068,2616}]] or switch to tunnel behavior]]. [DEL[[INS[{1945,2068}]] Requests with a version lower than that of the [DEL[[INS[{1945}]] application's native format may]] [INS[proxy/gateway's version MAY]] be upgraded before being forwarded; the proxy/gateway's response to that request [DEL[[INS[{1945}]] must follow the server requirements listed above]] [INS[MUST be in the same major version as the request]].]]
串応用および関門応用は、応用の HTTP 版と異なるプロトコル版のメッセージを転送するときに用心する必要があります。
プロトコル版は送信者のプロトコル能力を示しますから、串・関門はその実際の版よりも大きな版識別子を持ったメッセージを送信しては'''なりません'''。
より大きな版の要求を受信した場合は、串・関門は要求の版を降下させるか、誤りで応答するか[INS[、またはトンネル動作に切り替えるか]]しなければ'''なりません'''。 [DEL[串・関門の版より小さな版の要求は転送の前に版を向上させても'''構いません'''。その要求に対する串・関門の応答は[DEL[上述のサーバーの要件に従わなければなりません]][INS[要求と同じ大版でなければ'''なりません''']]。]]
[INS[
> [INS[{2616}]] Due to interoperability problems with HTTP/1.0 proxies discovered
since the publication of RFC 2068[33], caching proxies MUST, gateways
MAY, and tunnels MUST NOT upgrade the request to the highest version
they support. The proxy/gateway's response to that request MUST be in
the same major version as the request.
RFC 2068 の出版後に発見された HTTP/1.0 串との互換性の相互運用性の問題のため、
要求を対応している最高の版に向上させることを、キャッシュ串は行わなければ'''ならず'''、
関門はしても'''構いません'''が、トンネルは行っては'''なりません'''。
その要求に対する串・関門の応答は要求と同じ大版でなければ'''なりません'''。
]INS]
[INS[
> [INS[{2068,2616}]] Note: Converting between versions of HTTP may involve modification
of header fields required or forbidden by the versions involved.
注意 : HTTP の版間の変換は、その版が必須としていたり禁止指定いたりする頭欄の編集を行うこととなるかもしれません。
]INS]
]FIG]
** RFC 2145 (HTTP 版番号)
[7] [[RFC 2145]] は HTTP の版番号の解釈についてまとめた
RFC です。
[REFS[
- [405] [CITE@en[RFC 2145 - Use and Interpretation of HTTP Version Numbers]] ([TIME[2014-06-07 02:06:58 +09:00]] 版) <https://tools.ietf.org/html/rfc2145>
]REFS]
[507] [[RFC 2145]] は [[RFC 7230]] により[[廃止]]されました。
** RFC 2326 (RTSP/1.0)
[FIG[
[FIGCAPTION[
[3] 3.1 RTSP Version
]FIGCAPTION]
> [H3.1] applies, with HTTP replaced by RTSP.
[CODE(HTTP)[HTTP]] を [CODE(HTTP)[RTSP]] に置換した上で RFC 2068 3.1 節を適用します。
]FIG]
** RFC 2543 (SIP/2.0)
[4]
[CODE(ABNF)[SIP-Version]] の定義が全く欠落しています。
** RFC 3261 (SIP/2.0)
[FIG[
[FIGCAPTION[
[5] 7.1 (抜粋)
]FIGCAPTION]
> SIP-Version: Both request and response messages include the
version of SIP in use, and follow [H3.1] (with HTTP replaced
by SIP, and HTTP/1.1 replaced by SIP/2.0) regarding version
ordering, compliance requirements, and upgrading of version
numbers. To be compliant with this specification,
applications sending SIP messages MUST include a SIP-Version
of "SIP/2.0". The SIP-Version string is case-insensitive,
but implementations MUST send upper-case.
> Unlike HTTP/1.1, SIP treats the version number as a literal
string. In practice, this should make no difference.
要求メッセージと応答メッセージは、使用する SIP
の版を含み、版順序付け、適合要件、版番号の向上について RFC 2616 3.1 節を
([CODE[HTTP]] を [CODE[SIP]] に、 [CODE[HTTP/1.1]]
を [CODE[SIP/2.0]] に置換して) 従います。
この仕様書に適合するためには、 SIP メッセージを送信する応用は
[CODE(ABNF)[SIP-Version]] として [CODE(SIP)[SIP/2.0]]
を含めなければ'''なりません'''。 [CODE(ABNF)[SIP-Version]]
文字列は大文字・小文字を区別しませんが、
実装は大文字で送らなければ'''なりません'''。
HTTP/1.1 とは異なり、 SIP は版番号を表記文字列として扱います。
実際上、これは何の違いもありません。
]FIG]
[6]
>
- [CODE(ABNF)[SIP-Version = "SIP" "/" 1*DIGIT "." 1*DIGIT]]
** RFC 6787 (MRCPv2)
[REFS[
- [401] [CITE@en[RFC 6787 - Media Resource Control Protocol Version 2 (MRCPv2)]]
( ([TIME[2012-11-13 15:18:40 +09:00]] 版))
<http://tools.ietf.org/html/rfc6787#page-26>
]REFS]
[532] [CITE@en[RFC 3507 - Internet Content Adaptation Protocol (ICAP)]]
( ([TIME[2014-06-08 07:17:07 +09:00]] 版))
<http://tools.ietf.org/html/rfc3507#section-4.3.2>