Section 8. Response

After receiving and interpreting a request message, the recipient
   responds with an RTSP response message.  Normally, there is only one,
   final, response.  Responses using the response code class 1xx is the
   only class for which there MAY be sent one or more responses prior to
   the final response message.
   The valid response codes and the methods they can be used with are
   listed in Table 4.
8.1.  Status-Line
   The first line of a response message is the Status-Line, consisting
   of the protocol version followed by a numeric status code and the
   textual phrase associated with the status code, with each element
   separated by SP characters.  No CR or LF is allowed except in the
   final CRLF sequence.
   <RTSP-Version> SP <Status-Code> SP <Reason Phrase> CRLF
8.1.1.  Status Code and Reason Phrase
   The Status-Code element is a 3-digit integer result code of the
   attempt to understand and satisfy the request.  These codes are fully
   defined in Section 17.  The reason phrase is intended to give a short
   textual description of the Status-Code.  The Status-Code is intended
   for use by automata and the reason phrase is intended for the human
   user.  The client is not required to examine or display the reason
   phrase.
   The first digit of the Status-Code defines the class of response.
   The last two digits do not have any categorization role.  There are
   five values for the first digit:
   1xx:  Informational - Request received, continuing process
   2xx:  Success - The action was successfully received, understood, and
         accepted
   3rr:  Redirection - Further action needs to be taken in order to
         complete the request (3rr rather than 3xx is used as 304 is
         excluded; see Section 17.3)
   4xx:  Client Error - The request contains bad syntax or cannot be
         fulfilled
   5xx:  Server Error - The server failed to fulfill an apparently valid
         request
   The individual values of the numeric status codes defined for RTSP
   2.0, and an example set of corresponding reason phrases, are
   presented in Table 4.  The reason phrases listed here are only
   recommended; they may be replaced by local equivalents without
   affecting the protocol.  Note that RTSP adopted most HTTP/1.1
   [RFC2068] status codes and then added RTSP-specific status codes
   starting at x50 to avoid conflicts with future HTTP status codes that
   are desirable to import into RTSP.  All these codes are RTSP specific
   and RTSP has its own registry separate from HTTP for status codes.
   RTSP status codes are extensible.  RTSP applications are not required
   to understand the meaning of all registered status codes, though such
   understanding is obviously desirable.  However, applications MUST
   understand the class of any status code, as indicated by the first
   digit, and treat any unrecognized response as being equivalent to the
   x00 status code of that class, with an exception for unknown 3xx
   codes, which MUST be treated as a 302 (Found).  The reason for that
   exception is that the status code 300 (Multiple Choices in HTTP) is
   not defined for RTSP.  A response with an unrecognized status code
   MUST NOT be cached.  For example, if an unrecognized status code of
   431 is received by the client, it can safely assume that there was
   something wrong with its request and treat the response as if it had
   received a 400 status code.  In such cases, user agents SHOULD
   present to the user the message body returned with the response,
   since that message body is likely to include human-readable
   information that will explain the unusual status.
   +------+---------------------------------+--------------------------+
   | Code | Reason                          | Method                   |
   +------+---------------------------------+--------------------------+
   | 100  | Continue                        | all                      |
   |      |                                 |                          |
   | 200  | OK                              | all                      |
   |      |                                 |                          |
   | 301  | Moved Permanently               | all                      |
   |      |                                 |                          |
   | 302  | Found                           | all                      |
   |      |                                 |                          |
   | 303  | See Other                       | n/a                      |
   |      |                                 |                          |
   | 304  | Not Modified                    | 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                      |
   |      |                                 |                          |
   | 412  | Precondition Failed             | DESCRIBE, SETUP          |
   |      |                                 |                          |
   | 413  | Request Message Body Too Large  | all                      |
   |      |                                 |                          |
   | 414  | Request-URI Too Long            | all                      |
   |      |                                 |                          |
   | 415  | Unsupported Media Type          | all                      |
   |      |                                 |                          |
   | 451  | Parameter Not Understood        | SET_PARAMETER,           |
   |      |                                 | GET_PARAMETER            |
   |      |                                 |                          |
   | 452  | reserved                        | n/a                      |
   |      |                                 |                          |
   | 453  | Not Enough Bandwidth            | SETUP                    |
   |      |                                 |                          |
   | 454  | Session Not Found               | all                      |
   |      |                                 |                          |
   | 455  | Method Not Valid in This State  | all                      |
   |      |                                 |                          |
   | 456  | Header Field Not Valid for      | all                      |
   |      | Resource                        |                          |
   |      |                                 |                          |
   | 457  | Invalid Range                   | PLAY, PAUSE              |
   |      |                                 |                          |
   | 458  | Parameter Is Read-Only          | SET_PARAMETER            |
   |      |                                 |                          |
   | 459  | Aggregate Operation Not Allowed | all                      |
   |      |                                 |                          |
   | 460  | Only Aggregate Operation        | all                      |
   |      | Allowed                         |                          |
   |      |                                 |                          |
   | 461  | Unsupported Transport           | all                      |
   |      |                                 |                          |
   | 462  | Destination Unreachable         | all                      |
   |      |                                 |                          |
   | 463  | Destination Prohibited          | SETUP                    |
   |      |                                 |                          |
   | 464  | Data Transport Not Ready Yet    | PLAY                     |
   |      |                                 |                          |
   | 465  | Notification Reason Unknown     | PLAY_NOTIFY              |
   |      |                                 |                          |
   | 466  | Key Management Error            | all                      |
   |      |                                 |                          |
   | 470  | Connection Authorization        | all                      |
   |      | Required                        |                          |
   |      |                                 |                          |
   | 471  | Connection Credentials Not      | all                      |
   |      | Accepted                        |                          |
   |      |                                 |                          |
   | 472  | Failure to Establish Secure     | all                      |
   |      | Connection                      |                          |
   |      |                                 |                          |
   | 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      | all                      |
   |      |                                 |                          |
   | 551  | Option Not Supported            | all                      |
   |      |                                 |                          |
   | 553  | Proxy Unavailable               | all                      |
   +------+---------------------------------+--------------------------+
          Table 4: Status Codes and Their Usage with RTSP Methods
8.2.  Response Headers
   The response-headers allow the request recipient to pass additional
   information about the response that cannot be placed in the Status-
   Line.  This header gives information about the server and about
   further access to the resource identified by the Request-URI.  All
   headers currently classified as response-headers are listed in
   Table 5.
                +------------------------+----------------+
                | Header                 | Defined in     |
                +------------------------+----------------+
                | Authentication-Info    | Section 18.7   |
                |                        |                |
                | Connection-Credentials | Section 18.13  |
                |                        |                |
                | Location               | Section 18.28  |
                |                        |                |
                | MTag                   | Section 18.31  |
                |                        |                |
                | Proxy-Authenticate     | Section 18.34  |
                |                        |                |
                | Public                 | Section 18.39  |
                |                        |                |
                | Retry-After            | Section 18.44  |
                |                        |                |
                | Unsupported            | Section 18.55  |
                |                        |                |
                | WWW-Authenticate       | Section 18.58  |
                +------------------------+----------------+
                    Table 5: The RTSP Response Headers
   Response-header names can be extended reliably only in combination
   with a change in the protocol version.  However, the usage of feature
   tags in the request allows the responding party to learn the
   capability of the receiver of the response.  A new or experimental
   header can be given the semantics of response-header if all parties
   in the communication recognize them to be a response-header.
   Unrecognized headers in responses MUST be ignored.