\section{Request}
\label{sec:request}

A request message from a client to a server or vice versa includes,
within the first line of that message, the method to be applied to the
resource, the identifier of the resource, and the protocol version in use.

\begin{flushleft}
\begin{tt}
\begin{tabular}{@{\hspace{1em}}llcll}
Request & =   & Request-Line     & ; Section \ref{sec:request-line}\\
        & *(  & general-header   & ; Section \ref{sec:general-header}\\
        & $|$ & request-header   & ; Section \ref{sec:request-header}\\
        & $|$ & entity-header )  & ; Section \ref{sec:entity-header}\\
        &     & CRLF\\
        &     & [ message-body ] & ; Section \ref{sec:message-body}\\
\end{tabular}
\end{tt}
\end{flushleft}

\subsection{Request Line}
\label{sec:request-line}

\begin{verbatim}
  Request-Line = Method SP Request-URI SP RTSP-Version SP seq-no CRLF
\end{verbatim}

\begin{flushleft}
\begin{tt}
\begin{tabular}{@{\hspace{1em}}llcll}
Method & =   & "DESCRIBE"        & ; Section \ref{sec:DESCRIBE}\\
       & $|$ & "ANNOUNCE"        & ; Section \ref{sec:ANNOUNCE}\\
       & $|$ & "GET\_PARAMETER"  & ; Section \ref{sec:GET_PARAMETER}\\
       & $|$ & "OPTIONS"         & ; Section \ref{sec:OPTIONS}\\
       & $|$ & "PAUSE"           & ; Section \ref{sec:PAUSE}\\
       & $|$ & "PLAY"            & ; Section \ref{sec:PLAY}\\
       & $|$ & "RECORD"          & ; Section \ref{sec:RECORD}\\
       & $|$ & "REDIRECT"        & ; Section \ref{sec:REDIRECT}\\
       & $|$ & "SETUP"           & ; Section \ref{sec:SETUP}\\
       & $|$ & "SET\_PARAMETER"  & ; Section \ref{sec:SET_PARAMETER}\\
       & $|$ & "TEARDOWN"        & ; Section \ref{sec:TEARDOWN}\\
       & $|$ & extension-method
\end{tabular}
\end{tt}
\end{flushleft}

\begin{verbatim}
  extension-method = token

  Request-URI = "*" | absolute_URI

  RTSP-Version = "RTSP" "/" 1*DIGIT "." 1*DIGIT

  seq-no = 1*DIGIT
\end{verbatim}

\subsection{Request Header Fields}
\label{sec:request-header}

\begin{flushleft}
\begin{tt}
\begin{tabular}{@{\hspace{1em}}llcll}
request-header & =   & Accept           & ; Section \ref{sec:Accept}\\
               & $|$ & Accept-Encoding  & ; Section \ref{sec:Accept-Encoding}\\
               & $|$ & Accept-Language  & ; Section \ref{sec:Accept-Language}\\
               & $|$ & Authorization    & ; Section \ref{sec:Authorization}\\
               & $|$ & From             & ; Section \ref{sec:From}\\
               & $|$ & If-Modified-Since & ; Section \ref{sec:If-Modified-Since}\\
               & $|$ & Range            & ; Section \ref{sec:Range}\\
               & $|$ & Referer          & ; Section \ref{sec:Referer}\\
               & $|$ & User-Agent       & ; Section \ref{sec:User-Agent}\\
\end{tabular}
\end{tt}
\end{flushleft}

Note that in contrast to HTTP/1.1, RTSP requests always contain the
absolute URL (that is, including the scheme, host and port) rather than
just the absolute path. 

\motivation{HTTP/1.1 requires servers to understand the absolute URL,
but clients are supposed to use the {\sf Host} request header.  This is
purely needed for backward-compatibility with HTTP/1.0 servers, a
consideration that does not apply to RTSP.}

The asterisk "*" in the Request-URI means that the request does not
apply to a particular resource, but to the server itself, and is only
allowed when the method used does not necessarily apply to a resource. 
One example would be

\begin{verbatim}
  OPTIONS * RTSP/1.0
\end{verbatim}
