メインコンテンツまでスキップ

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 メソッドとの対応

コード理由フレーズメソッド
100Continue (継続)all
200OKall
201Created (作成済み)RECORD
250Low on Storage Space (ストレージ残量低下)RECORD
300Multiple Choices (複数の選択肢)all
301Moved Permanently (恒久的に移動)all
302Moved Temporarily (一時的に移動)all
303See Other (他を参照)all
305Use Proxy (プロキシを使用)all
400Bad Request (不正なリクエスト)all
401Unauthorized (未認証)all
402Payment Required (支払いが必要)all
403Forbidden (禁止)all
404Not Found (見つからない)all
405Method Not Allowed (メソッド不許可)all
406Not Acceptable (受け入れ不可)all
407Proxy Authentication Required (プロキシ認証が必要)all
408Request Timeout (リクエストタイムアウト)all
410Gone (消滅)all
411Length Required (長さが必要)all
412Precondition Failed (前提条件失敗)DESCRIBE, SETUP
413Request Entity Too Large (リクエストエンティティ過大)all
414Request-URI Too Long (Request-URI 過長)all
415Unsupported Media Type (未サポートのメディアタイプ)all
451Invalid parameter (パラメータ無効)SETUP
452Illegal Conference Identifier (会議識別子不正)SETUP
453Not Enough Bandwidth (帯域不足)SETUP
454Session Not Found (セッション未検出)all
455Method Not Valid In This State (この状態ではメソッド無効)all
456Header Field Not Valid (ヘッダーフィールド無効)all
457Invalid Range (範囲無効)PLAY
458Parameter Is Read-Only (パラメータは読み取り専用)SET_PARAMETER
459Aggregate Operation Not Allowed (集約操作は不許可)all
460Only Aggregate Operation Allowed (集約操作のみ許可)all
461Unsupported Transport (未サポートのトランスポート)all
462Destination Unreachable (到達不能)all
500Internal Server Error (内部サーバーエラー)all
501Not Implemented (未実装)all
502Bad Gateway (不正なゲートウェイ)all
503Service Unavailable (サービス利用不可)all
504Gateway Timeout (ゲートウェイタイムアウト)all
505RTSP Version Not Supported (RTSP バージョン未サポート)all
551Option 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 フィールドとして扱われます。