tech-invite   World Map     

IETF     RFCs     Groups     SIP     ABNFs    |    3GPP     Specs     Glossaries     Architecture     IMS     UICC    |    search     info

ABNF grammars

|   SIP_Messages   |   SIP_URIs   |   SIP_Headers   |   SIP_Private_Headers   |   SIP_Response_Codes   |   SIP_basic_rules   |   SIP_common_rules   |   SDP_Session_Description   |   SDP_Attributes   |   RFC723x_HTTP_1.1   |   RFC3986_Generic_URI   |   RFC3987_IRI   |   RFC5322_IMF   |   RFC4975_MSRP   |   draft2326bis_RTSP_2.0   |   RFC5234_ABNF_Notation   |

ABNF for RTSP 2.0 – Real Time Streaming Protocol – draft rfc2326bis


RTSP-message   =
Request   =
Response   =
Request-Line   =
Status-Line   =
Method   =
"DESCRIBE"   / "GET_PARAMETER"   / "OPTIONS"   / "PAUSE"   / "PLAY"   / "PLAY_NOTIFY"   / "REDIRECT"   / "SETUP"   / "SET_PARAMETER"   / "TEARDOWN"   / extension-method

Request-URI   =
"*"  /  RTSP-REQ-URI

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

message-body-data   =
1*OCTET

rtsp-header   =
general-header   =
Accept-Ranges  /  Cache-Control  /  Connection  /  CSeq  /  Date  /  Media-Properties  /
Media-Range  /  Pipelined-Requests  /  Proxy-Supported  /  Range  /  RTP-Info  /  Scale  /
Seek-Style  /  Server  /  Session  /  Speed  /  Supported  /  Timestamp  /  Transport  /
User-Agent  /  Via  /
extension-header

request-header   =
response-header   =
message-body-header   =
extension-method   =
extension-header   =
header-name   =
header-value   =
*( TEXT-UTF8char  /  LWS )

Status-Code   =
"100"  / "200"  / "301"  / "302"  / "303"  / "304"  / "305"  / "400"  / "401"  / "402"  / "403"  / "404"  / "405"  / "406"  / "407"  / "408"  / "410"  / "411"  / "412"  / "413"  / "414"  / "415"  / "451"  / "452"  / "453"  / "454"  / "455"  / "456"  / "457"  / "458"  / "459"  / "460"  / "461"  / "462"  / "463"  / "464"  / "465"  / "466"  / "470"  / "471"  / "472"  / "500"  / "501"  / "502"  / "503"  / "504"  / "505"  / "551"  / "553"  / extension-code

Reason-Phrase   =
1*( TEXT-UTF8char  /  HTAB  /  SP )

extension-code   =
RTSP-URI   =
schemes   ":"   URI-rest

RTSP-REQ-URI   =
schemes   ":"   URI-req-rest

RTSP-URI-Ref   =
RTSP-REQ-Ref   =
schemes   =
"rtsp"  /  "rtsps"  /  scheme

URI-rest   =
hier-part   [ "?"   query ]

URI-req-rest   =
hier-part   [ "?"   query ]

hier-part   =
"//"   authority   path-abempty

RTSP-Relative   =
relative-part   [ "?"   query ]

RTSP-REQ-Rel   =
relative-part   [ "?"   query ]

relative-part   =
path   =
path-abempty   =
*( "/"   segment )

path-absolute   =
"/"   [ segment-nz   *( "/"   segment ) ]

path-noscheme   =
segment-nz-nc   *( "/"   segment )

path-rootless   =
segment-nz   *( "/"   segment )

path-empty   =
0<pchar>

segment   =
*pchar   [ ";"   *pchar ]

segment-nz   =
( 1*pchar   [ ";"   *pchar ] )  /  ( ";"   *pchar )

segment-nz-nc   =
( 1*pchar-nc   [ ";"   *pchar-nc ] )  /  ( ";"   *pchar-nc )

; non-zero-length segment without any colon "
; no parameter (";" delimited) inside path


pchar   =
unreserved  /  pct-encoded  /  sub-delims  /  ":"  /  "@"

pchar-nc   =
unreserved  /  pct-encoded  /  sub-delims  /  "@"

sub-delims   =
"!"  /  "$"  /  "&"  /  " ' "  /  "("  /  ")"  /  "*"  /  "+"  /  ","  /  "="

; sub-delims is different from RFC 3986/3987
; not including ";"


RTSP-IRI   =
schemes   ":"   IRI-rest

IRI-rest   =
ihier-part   [ "?"   iquery ]

ihier-part   =
RTSP-IRI-ref   =
irelative-ref   =
irelative-part   [ "?"   iquery ]

irelative-part   =
ipath   =
ipath-abempty   =
*( "/"   isegment )

ipath-absolute   =
"/"   [ isegment-nz   *( "/"   isegment ) ]

ipath-noscheme   =
isegment-nz-nc   *( "/"   isegment )

ipath-rootless   =
isegment-nz   *( "/"   isegment )

ipath-empty   =
0<ipchar>

isegment   =
*ipchar   [ ";" *ipchar ]

isegment-nz   =
1*ipchar   [ ";"   *ipchar ]  /  ";"   *ipchar

isegment-nz-nc   =
( 1*ipchar-nc   [ ";"   *ipchar-nc ] )  /  ";"   *ipchar-nc

; non-zero-length segment without any colon "
; no parameter (";" delimited) inside path


ipchar   =
iunreserved  /  pct-encoded  /  sub-delims  /  ":"  /  "@"

ipchar-nc   =
iunreserved  /  pct-encoded  /  sub-delims  /  "@"

BACKSLASH   =
%x5C

LWS   =
[ CRLF ]   1*( SP  /  HTAB )

SWS   =
[ LWS ]

HCOLON   =
*( SP  /  HTAB )   ":"   SWS

TEXT   =
%x20-7E  /  %x80-FF

tspecials   =
"("   /   ")"   /   "<"   /   ">"   /   "@"   /
","   /   ";"   /   ":"   /   BACKSLASH   /
DQUOTE   /   "/"   /   "["   /   "]"   /   "?"   /
"="   /   "{"   /   "}"   /   SP   /   HTAB

token   =
1*( %x21  /  %x23-27  /  %x2A-2B  /
%x2D-2E  /  %x30-39  /  %x41-5A  /
%x5E-7A  /  %x7C  /  %x7E )

quoted-string   =
( DQUOTE   *qdtext   DQUOTE )

qdtext   =
%x20-21  /  %x23-5B  /  %x5D-7E  /
quoted-pair  /  UTF8-NONASCII

quoted-pair   =
"\\"  /  ( "\"   DQUOTE )

ctext   =
%x20-27  /  %x2A-7E  /  %x80-FF

generic-param   =
token   [ EQUAL   gen-value ]

gen-value   =
token  /  host  /  quoted-string

safe   =
"$"   /   "-"   /   "_"   /   "."   /   "+"

extra   =
"!"   /   "*"   /   " ' "   /   "("   /   ")"   /   ","

rtsp-extra   =
"!"   /   "*"   /   " ' "   /   "("   /   ")"

HEX   =
DIGIT  /
"A"  /  "B"  /  "C"  /  "D"  /  "E"  /  "F"  /
"a"  /  "b"  /  "c"  /  "d"  /  "e"  /  "f"

LHEX   =
DIGIT  /
"a"  /  "b"  /  "c"  /  "d"  /  "e"  /  "f"

reserved   =
";"   /   "/"   /   "?"   /   ":"   /
"@"   /   "&"   /   "="

unreserved   =
ALPHA  /  DIGIT  /  safe  /  extra

rtsp-unreserved   =
ALPHA  /  DIGIT  /  safe  /  rtsp-extra

base64   =
base64-unit   =
base64-pad   =
( 2base64-char   "==" )  /  ( 3base64-char   "=" )

base64-char   =
ALPHA  /  DIGIT  /   "+"   /   "/"

SLASH   =
SWS   "/"   SWS

EQUAL   =
SWS   "="   SWS

LPAREN   =
SWS   "("   SWS

RPAREN   =
SWS   ")"   SWS

COMMA   =
SWS   ","   SWS

SEMI   =
SWS   ";"   SWS

COLON   =
SWS   ":"   SWS

MINUS   =
SWS   "-"   SWS

LDQUOT   =
SWS   DQUOTE

RDQUOT   =
DQUOTE   SWS

RAQUOT   =
">"   SWS

LAQUOT   =
SWS   "<"

TEXT-UTF8char   =
%x21-7E  /  UTF8-NONASCII

UTF8-NONASCII   =
UTF8-2  /  UTF8-3  /  UTF8-4

; as defined in   RFC 3629 – Section 4


POS-FLOAT   =
1*12DIGIT   [ "."   1*9DIGIT ]

FLOAT   =
[ "-" ]   POS-FLOAT