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