Zum Hauptinhalt springen

7 Response (Antwort)

7 Response (Antwort)

[H6] gilt, außer dass HTTP-Version durch RTSP-Version ersetzt wird. Außerdem definiert RTSP zusätzliche Statuscodes und definiert einige HTTP-Codes nicht. Die gültigen Antwortcodes und die Methoden, mit denen sie verwendet werden dürfen, sind in Tabelle 1 festgelegt.

Nach Empfang und Auslegung einer Anfragenachricht antwortet der Empfänger mit einer RTSP-Antwortnachricht.

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 (Statuszeile)

Die erste Zeile einer Response-Nachricht ist die Status-Line; sie besteht aus der Protokollversion, gefolgt von einem numerischen Statuscode und der dem Statuscode zugeordneten Textphrase, wobei die Elemente durch SP-Zeichen getrennt sind. Außer in der abschließenden CRLF-Sequenz sind CR und LF nicht zulässig.

Status-Line =   RTSP-Version SP Status-Code SP Reason-Phrase CRLF

7.1.1 Status Code and Reason Phrase (Statuscode und Begründungsphrase)

Das Element Status-Code ist ein dreistelliges ganzzahliges Ergebnis des Versuchs, die Anfrage zu verstehen und zu erfüllen. Diese Codes sind in Abschnitt 11 vollständig definiert. Die Reason-Phrase soll eine kurze textliche Beschreibung des Status-Codes liefern. Der Status-Code ist für Automaten gedacht, die Reason-Phrase für den menschlichen Benutzer. Der Client muss die Reason-Phrase nicht prüfen oder anzeigen.

Die erste Ziffer des Status-Codes definiert die Antwortklasse. Die letzten beiden Ziffern haben keine Kategorisierungsrolle. Es gibt 5 Werte für die erste Ziffer:

  • 1xx: Informativ - Anfrage empfangen, Vorgang wird fortgesetzt

  • 2xx: Erfolg - Die Aktion wurde erfolgreich empfangen, verstanden und akzeptiert

  • 3xx: Umleitung - Weitere Maßnahmen sind erforderlich, um die Anfrage abzuschließen

  • 4xx: Clientfehler - Die Anfrage enthält fehlerhafte Syntax oder kann nicht erfüllt werden

  • 5xx: Serverfehler - Der Server konnte eine offenbar gültige Anfrage nicht erfüllen

Die einzelnen Werte der für RTSP/1.0 definierten numerischen Statuscodes und ein Beispielsatz zugehöriger Reason-Phrases sind unten aufgeführt. Die hier genannten Begründungsphrasen sind nur Empfehlungen - sie können durch lokale Äquivalente ersetzt werden, ohne das Protokoll zu beeinträchtigen. RTSP übernimmt die meisten HTTP/1.1-[2]-Statuscodes und fügt RTSP-spezifische Statuscodes ab x50 hinzu, um Konflikte mit neu definierten HTTP-Codes zu vermeiden.

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-Statuscodes sind erweiterbar. RTSP-Anwendungen müssen nicht die Bedeutung aller registrierten Statuscodes verstehen, wenngleich dies wünschenswert ist. Anwendungen MUST jedoch die Klasse jedes Statuscodes verstehen, wie durch die erste Ziffer angezeigt, und jede nicht erkannte Antwort wie den x00-Code dieser Klasse behandeln, mit der Ausnahme, dass eine nicht erkannte Antwort MUST NOT zwischengespeichert werden darf. Empfängt der Client beispielsweise den unbekannten Code 431, kann er sicher annehmen, dass etwas mit seiner Anfrage nicht stimmte, und die Antwort wie einen 400-Status behandeln. In solchen Fällen SHOULD Benutzeragenten dem Benutzer die mit der Antwort gelieferte Entität zeigen, da diese wahrscheinlich menschenlesbare Informationen zum ungewöhnlichen Status enthält.

Tabelle 1: Statuscodes und Verwendung mit RTSP-Methoden

CodeBegründungsphraseMethode
100Continue (fortfahren)all
200OKall
201Created (erstellt)RECORD
250Low on Storage Space (wenig Speicherplatz)RECORD
300Multiple Choices (mehrere Auswahlmöglichkeiten)all
301Moved Permanently (dauerhaft verschoben)all
302Moved Temporarily (vorübergehend verschoben)all
303See Other (siehe andere)all
305Use Proxy (Proxy verwenden)all
400Bad Request (fehlerhafte Anfrage)all
401Unauthorized (nicht autorisiert)all
402Payment Required (Zahlung erforderlich)all
403Forbidden (verboten)all
404Not Found (nicht gefunden)all
405Method Not Allowed (Methode nicht erlaubt)all
406Not Acceptable (nicht akzeptabel)all
407Proxy Authentication Required (Proxy-Authentifizierung erforderlich)all
408Request Timeout (Anfragezeitüberschreitung)all
410Gone (entfernt)all
411Length Required (Länge erforderlich)all
412Precondition Failed (Vorbedingung fehlgeschlagen)DESCRIBE, SETUP
413Request Entity Too Large (Anfrageentität zu groß)all
414Request-URI Too Long (Request-URI zu lang)all
415Unsupported Media Type (Medientyp nicht unterstützt)all
451Invalid parameter (ungültiger Parameter)SETUP
452Illegal Conference Identifier (ungültige Konferenzkennung)SETUP
453Not Enough Bandwidth (nicht genug Bandbreite)SETUP
454Session Not Found (Sitzung nicht gefunden)all
455Method Not Valid In This State (Methode in diesem Zustand ungültig)all
456Header Field Not Valid (Header-Feld ungültig)all
457Invalid Range (ungültiger Bereich)PLAY
458Parameter Is Read-Only (Parameter nur lesbar)SET_PARAMETER
459Aggregate Operation Not Allowed (Aggregatoperation nicht erlaubt)all
460Only Aggregate Operation Allowed (nur Aggregatoperation erlaubt)all
461Unsupported Transport (Transport nicht unterstützt)all
462Destination Unreachable (Ziel nicht erreichbar)all
500Internal Server Error (interner Serverfehler)all
501Not Implemented (nicht implementiert)all
502Bad Gateway (fehlerhaftes Gateway)all
503Service Unavailable (Dienst nicht verfügbar)all
504Gateway Timeout (Gateway-Zeitüberschreitung)all
505RTSP Version Not Supported (RTSP-Version nicht unterstützt)all
551Option not support (Option nicht unterstützt)all

7.1.2 Response Header Fields (Antwort-Header-Felder)

Die response-header-Felder erlauben dem Anfrageempfänger, zusätzliche Informationen über die Antwort zu übermitteln, die nicht in die Status-Line passen. Diese Felder liefern Informationen über den Server und über weiteren Zugriff auf die durch den Request-URI identifizierte Ressource.

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

Namen von response-header-Feldern lassen sich zuverlässig nur in Verbindung mit einer Protokollversionsänderung erweitern. Neue oder experimentelle Header-Felder MAY jedoch die Semantik von response-header-Feldern erhalten, wenn alle Kommunikationspartner sie als solche erkennen. Nicht erkannte Header-Felder werden wie entity-header-Felder behandelt.