7 Response (レスポンス)
7 Response (レスポンス)
[H6] を適用しますが, HTTP-Version を RTSP-Version に置き換えます。また RTSP は追加のステータスコードを定義し, 一部の HTTP コードは定義しません。有効なレスポンスコードと, それらをどのメソッドと共に用い得るかは表 1 に定義されます。
リクエストメッセージを受信して解釈した後, 受信者は RTSP レスポンスメッセージで応答します。
Response = Status-Line ; Section 7.1
*( general-header ; Section 5
| response-header ; Section 7.1.2
| entity-header ) ; Section 8.1
CRLF
[ message-body ] ; Section 4.3
7.1 Status-Line (ステータス行)
レスポンスメッセージの最初の行は Status-Line で, プロトコルバージョンに続く数値ステータスコードと, ステータスコードに関連付けられたテキスト句からなり, 各要素は SP で区切られます。最終 CRLF シーケンス以外では CR や LF を含んではなりません。
Status-Line = RTSP-Version SP Status-Code SP Reason-Phrase CRLF
7.1.1 Status Code and Reason Phrase (ステータスコードと理由フレーズ)
Status-Code 要素は, リクエストを理解し満たそうとする試みの 3 桁整数結果コードです。これらのコードはセクション 11 で完全に定義されます。Reason-Phrase は Status-Code の短いテキスト記述を与えることを意図しています。Status-Code は自動処理向け, Reason-Phrase は人間ユーザー向けです。クライアントは Reason-Phrase を検査または表示する必要はありません。
Status-Code の最初の桁はレスポンスのクラスを定義します。下 2 桁に分類上の役割はありません。最初の桁には 5 つの値があります:
-
1xx: 情報 - リクエスト受信, 処理継続中
-
2xx: 成功 - 動作は正常に受信され理解され受理された
-
3xx: リダイレクト - リクエスト完了のためにさらなる動作が必要
-
4xx: クライアントエラー - リクエストに不正な構文があるか履行不能
-
5xx: サーバーエラー - サーバーは一見有効なリクエストを履行できなかった
以下に, RTSP/1.0 用に定義された数値ステータスコードの個々の値と, 対応する Reason-Phrase の例セットを示します。ここに挙げた理由句は推奨にすぎず, プロトコルに影響を与えずローカル相当語に置換してもよいでしょう。RTSP は HTTP/1.1 [2] のステータスコードのほとんどを採用し, 新たに定義される HTTP ステータスコードとの衝突を避けるため x50 から RTSP 固有のコードを追加します。
Status-Code = "100" ; Continue
| "200" ; OK
| "201" ; Created
| "250" ; Low on Storage Space
| "300" ; Multiple Choices
| "301" ; Moved Permanently
| "302" ; Moved Temporarily
| "303" ; See Other
| "304" ; Not Modified
| "305" ; Use Proxy
| "400" ; Bad Request
| "401" ; Unauthorized
| "402" ; Payment Required
| "403" ; Forbidden
| "404" ; Not Found
| "405" ; Method Not Allowed
| "406" ; Not Acceptable
| "407" ; Proxy Authentication Required
| "408" ; Request Time-out
| "410" ; Gone
| "411" ; Length Required
| "412" ; Precondition Failed
| "413" ; Request Entity Too Large
| "414" ; Request-URI Too Large
| "415" ; Unsupported Media Type
| "451" ; Parameter Not Understood
| "452" ; Conference Not Found
| "453" ; Not Enough Bandwidth
| "454" ; Session Not Found
| "455" ; Method Not Valid in This State
| "456" ; Header Field Not Valid for Resource
| "457" ; Invalid Range
| "458" ; Parameter Is Read-Only
| "459" ; Aggregate operation not allowed
| "460" ; Only aggregate operation allowed
| "461" ; Unsupported transport
| "462" ; Destination unreachable
| "500" ; Internal Server Error
| "501" ; Not Implemented
| "502" ; Bad Gateway
| "503" ; Service Unavailable
| "504" ; Gateway Time-out
| "505" ; RTSP Version not supported
| "551" ; Option not supported
| extension-code
extension-code = 3DIGIT
Reason-Phrase = *<TEXT, excluding CR, LF>
RTSP ステータスコードは拡張可能です。RTSP アプリケーションは登録済みすべてのコードの意味を理解する必要はありませんが, 理解できるに越したことはありません。ただし, アプリケーションは先頭桁で示される任意のステータスコードのクラスを MUST 理解し, 認識できないレスポンスはそのクラスの x00 コードと同等として扱わなければなりません。ただし認識できないレスポンスは MUST NOT キャッシュされます。例えばクライアントが 431 という未認識コードを受け取った場合, リクエストに何か問題があったと安全に仮定し 400 を受け取ったかのように扱えます。そのような場合, ユーザーエージェントはレスポンスに付随するエンティティをユーザーに提示すべき (SHOULD) です。異常ステータスを説明する人間可読情報が含まれる可能性が高いためです。
表 1: ステータスコードと RTSP メソッドとの対応
| コード | 理由フレーズ | メソッド |
|---|---|---|
| 100 | Continue (継続) | all |
| 200 | OK | all |
| 201 | Created (作成済み) | RECORD |
| 250 | Low on Storage Space (ストレージ残量低下) | RECORD |
| 300 | Multiple Choices (複数の選択肢) | all |
| 301 | Moved Permanently (恒久的に移動) | all |
| 302 | Moved Temporarily (一時的に移動) | all |
| 303 | See Other (他を参照) | all |
| 305 | Use Proxy (プロキシを使用) | all |
| 400 | Bad Request (不正なリクエスト) | all |
| 401 | Unauthorized (未認証) | all |
| 402 | Payment Required (支払いが必要) | all |
| 403 | Forbidden (禁止) | all |
| 404 | Not Found (見つからない) | all |
| 405 | Method Not Allowed (メソッド不許可) | all |
| 406 | Not Acceptable (受け入れ不可) | all |
| 407 | Proxy Authentication Required (プロキシ認証が必要) | all |
| 408 | Request Timeout (リクエストタイムアウト) | all |
| 410 | Gone (消滅) | all |
| 411 | Length Required (長さが必要) | all |
| 412 | Precondition Failed (前提条件失敗) | DESCRIBE, SETUP |
| 413 | Request Entity Too Large (リクエストエンティティ過大) | all |
| 414 | Request-URI Too Long (Request-URI 過長) | all |
| 415 | Unsupported Media Type (未サポートのメディアタイプ) | all |
| 451 | Invalid parameter (パラメータ無効) | SETUP |
| 452 | Illegal Conference Identifier (会議識別子不正) | SETUP |
| 453 | Not Enough Bandwidth (帯域不足) | SETUP |
| 454 | Session Not Found (セッション未検出) | all |
| 455 | Method Not Valid In This State (この状態ではメソッド無効) | all |
| 456 | Header Field Not Valid (ヘッダーフィールド無効) | all |
| 457 | Invalid Range (範囲無効) | PLAY |
| 458 | Parameter Is Read-Only (パラメータは読み取り専用) | SET_PARAMETER |
| 459 | Aggregate Operation Not Allowed (集約操作は不許可) | all |
| 460 | Only Aggregate Operation Allowed (集約操作のみ許可) | all |
| 461 | Unsupported Transport (未サポートのトランスポート) | all |
| 462 | Destination Unreachable (到達不能) | all |
| 500 | Internal Server Error (内部サーバーエラー) | all |
| 501 | Not Implemented (未実装) | all |
| 502 | Bad Gateway (不正なゲートウェイ) | all |
| 503 | Service Unavailable (サービス利用不可) | all |
| 504 | Gateway Timeout (ゲートウェイタイムアウト) | all |
| 505 | RTSP Version Not Supported (RTSP バージョン未サポート) | all |
| 551 | Option not support (オプション未サポート) | all |
7.1.2 Response Header Fields (レスポンスヘッダーフィールド)
response-header フィールドにより, リクエスト受信者は Status-Line に置けないレスポンスに関する追加情報を渡せます。これらはサーバーおよび Request-URI で識別されるリソースへのさらなるアクセスに関する情報を与えます。
response-header = Location ; Section 12.25
| Proxy-Authenticate ; Section 12.26
| Public ; Section 12.28
| Retry-After ; Section 12.31
| Server ; Section 12.36
| Vary ; Section 12.42
| WWW-Authenticate ; Section 12.44
response-header フィールド名を確実に拡張できるのはプロトコルバージョン変更と組み合わせた場合に限られます。ただし, 通信当事者全員が response-header フィールドとして認識するなら, 新規または実験的フィールドに response-header の意味を与えても MAY です。認識できないヘッダーフィールドは entity-header フィールドとして扱われます。