| RFC 2543 ABNF Productions |
|---|
| Rule Name | Production or Comment | |
|---|---|---|
| = | Request | Response | |
| = | Request-Line
*( general-header
| request-header
| entity-header
) double-return
[message-body] ; Note - each header ends with a return and the end of
headers is a double return. For line folding, the folded header must begin
with 1*( SP | HT ) | |
| = | <Note: This is typically SDP> | |
| = | Method SP Request-URI SP SIP-Version return | |
| = | <defined in [RFC2068]> | |
| = | <defined in [RFC2068]> | |
| = | "sip:" [userinfo "@"] hostport url-parameters [headers] | |
| = | user [":" password] | |
| = | *( unreserved | escaped | "&" | "=" | "+" | "$" | "," ) | |
| = | *( unreserved | escaped | "&" | "=" | "+" | "$" | "," ) | |
| = | host [":" port] | |
| = | hostname | IPv4address | |
| = | *( domainlabel "." ) toplabel ["."] | |
| = | alphanum | alphanum *( alphanum | "-" ) alphanum | |
| = | alpha | alpha *( alphanum | "-" ) alphanum | |
| = | 1*digit "." 1*digit "." 1*digit "." 1*digit | |
| = | *digit ; empty port field is allowed | |
| = | *( ";" url-parameter ) | |
| = | transport-param | user-param | method-param | ttl-param | maddr-param | other-param | |
| = | "transport=" ( "udp" | "tcp" ) | |
| = | "ttl=" ttl | |
| = | 1*3DIGIT ; 0 to 255 | |
| = | "maddr=" host | |
| = | "user=" ( "phone" | "ip" ) | |
| = | "method=" Method | |
| = | "tag=" UUID | |
| = | 1*( hex | "-" ) | |
| = | ( token | ( token "=" ( token | quoted-string ) ) ) | |
| = | "?" header *( "&" header ) | |
| = | hname "=" hvalue | |
| = | 1*uric | |
| = | *uric | |
| = | reserved | unreserved | escaped | |
| = | ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | "," | |
| = | 1*DIGIT | |
| = | global-phone-number | local-phone-number | |
| = | "+" 1*phonedigit [isdn-subaddress] [post-dial] | |
| = | 1*( phonedigit | dtmf-digit | pause-character ) [isdn-subaddress] [post-dial] | |
| = | ";isub=" 1*phonedigit | |
| = | ";postd=" 1*( phonedigit | dtmf-digit | pause-character ) | |
| = | DIGIT | visual-separator | |
| = | "-" | "." | |
| = | one-second-pause | wait-for-dial-tone | |
| = | "p" | |
| = | "w" | |
| = | "*" | "#" | "A" | "B" | "C" | "D" | |
| = | Accept | Accept-Encoding | Accept-Language | Call-ID | Contact | CSeq | Date | Encryption | Expires | From | Record-Route | Timestamp | To | Via | |
| = | Content-Encoding | Content-Length | Content-Type | |
| = | Authorization | Contact | Hide | Max-Forwards | Organization | Priority | Proxy-Authorization | Proxy-Require | Route | Require | Response-Key | Subject | User-Agent | WWW-Authenticate | |
| = | Allow | Authorization | Proxy-Authenticate | Retry-After | Server | Unsupported | Warning | WWW-Authenticate | |
| = | "INVITE" | "ACK" | "OPTIONS" | "BYE" | "CANCEL" | "REGISTER" | |
| = | "Accept" ":" #( media-range [accept-params] ) | |
| = | ( "*/*" | ( type "/" "*" ) | ( type "/" subtype ) ) *( ";" parameter ) | |
| = | attribute "=" value | |
| = | token | |
| = | token | quoted-string | |
| = | ";" "q" "=" qvalue *( accept-extension ) | |
| = | ";" token ["=" ( token | quoted-string )] | |
| = | "Accept-Encoding" ":" 1#( content-coding ) | |
| = | ( content-coding | "*" ) | |
| = | token | |
| = | "Accept-Language" ":" 1#( language-range [";" "q" "=" qvalue] ) | |
| = | ( ( 1*8ALPHA *( "-" 1*8ALPHA ) ) | "*" ) | |
| = | "Proxy-Authorization" ":" credentials | |
| = | "Proxy-Authenticate" ":" 1#challenge | |
| = | "User-Agent" ":" 1*( product | comment ) | |
| = | "Server" ":" 1*( product | comment ) | |
| = | Status-Line
*( general-header
| response-header
| entity-header
) double-return
[message-body] ; Note - each header ends with a return and the end of
headers is a double return. For line folding, the folded header must begin
with 1*( SP | HT ) | |
| = | SIP-version SP Status-Code SP Reason-Phrase | |
| = | "SIP/2.0" | |
| = | Informational | Success | Redirection | Client-Error | Server-Error | Global-Failure | extension-code | |
| = | 3DIGIT | |
| = | *<TEXT-UTF8, excluding CR, LF > | |
| = | "100" ;
Trying | "180" ; Ringing | "181" ; Call Is Being Forwarded | "182" ; Queued | |
| = | "200" ;
OK | |
| = | "300" ;
Multiple Choices | "301" ; Moved Permanently | "302" ; Moved Temporarily | "303" ; See Other | "305" ; Use Proxy | "380" ; Alternative Service | |
| = | "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 Timeout | "409" ; Conflict | "410" ; Gone | "411" ; Length Required | "413" ; Request Entity Too Large | "414" ; Request-URI Too Large | "415" ; Unsupported Media Type | "420" ; Bad Extension | "480" ; Temporarily not available | "481" ; Call Leg/Transaction Does Not Exist | "482" ; Loop Detected | "483" ; Too Many Hops | "484" ; Address Incomplete | "485" ; Ambiguous | "486" ; Busy Here | |
| = | "500" ;
Internal Server Error | "501" ; Not Implemented | "502" ; Bad Gateway | "503" ; Service Unavailable | "504" ; Gateway Time-out | "505" ; SIP Version not supported | |
| = | "600" ; Busy
Everywhere | "603" ; Decline | "604" ; Does not exist anywhere | "606" ; Not Acceptable | |
| = | field-name ":" [field-value] CRLF | |
| = | token | |
| = | *( field-content | LWS ) | |
| = | <the OCTETs making up the field-value and consisting of either *TEXT-UTF8 or combinations of token, separators, and quoted-string > | |
| = | "Allow" ":" 1#Method | |
| = | ( "Call-ID" | "i" ) ":" token | |
| = | 1*uric | |
| = | ( "Contact" | "m" ) ":" ( "*" | ( 1#( ( name-addr | addr-spec ) [*( ";" contact-params )] [comment] ) ) ) | |
| = | [display-name] "<" addr-spec ">" | |
| = | SIP-URL | URI | |
| = | *token | quoted-string | |
| = | "q" "=" qvalue | ( "action" "=" "proxy" | "redirect" ) | ( "expires" "=" delta-seconds | DQUOTE SIP-date DQUOTE ) | extension-attribute | |
| = | extension-name ["=" extension-value] | |
| = | ( "Content-Encoding" | "e" ) ":" 1#content-coding | |
| = | ( "Content-Length" | "l" ) ":" 1*DIGIT | |
| = | ( "Content-Type" | "c" ) ":" media-type | |
| = | type "/" subtype *( ";" parameter ) | |
| = | token | |
| = | token | |
| = | "CSeq" ":" 1*DIGIT Method | |
| = | "Date:" SIP-date | |
| = | rfc1123-date | |
| = | "Encryption" ":" encryption-scheme 1*SP #encryption-params | |
| = | token | |
| = | token "=" ( token | quoted-string ) | |
| = | "Expires" ":" ( SIP-date | delta-seconds ) | |
| = | ( "From" | "f" ) ":" ( name-addr | addr-spec ) *( ";" addr-params ) *( ";" extension-params ) | |
| = | tag-param | |
| = | "tag=" UUID | |
| = | "Hide" ":" ( "route" | "hop" ) | |
| = | "Max-Forwards" ":" 1*DIGIT | |
| = | "Organization" ":" *TEXT-UTF8 | |
| = | "Priority" ":" priority-value | |
| = | "emergency" | "urgent" | "normal" | "non-urgent" | |
| = | "Record-Route" ":" 1#name-addr | |
| = | "Require" ":" 1#option-tag | |
| = | "Proxy-Require" ":" 1#option-tag | |
| = | token | |
| = | "Response-Key" ":" key-scheme 1*SP #key-param | |
| = | token | |
| = | token "=" ( token | quoted-string ) | |
| = | "Retry-After" ":" ( SIP-date | delta-seconds ) [comment] [";" "duration" "=" delta-seconds] | |
| = | "Route" ":" 1#name-addr | |
| = | ( "Subject" | "s" ) ":" *TEXT-UTF8 | |
| = | "Timestamp" ":" *( DIGIT ) ["." *( DIGIT )] [delay] | |
| = | *( DIGIT ) ["." *( DIGIT )] | |
| = | ( "To" | "t" )
":" ( name-addr
| addr-spec
) *( ";" addr-params
) *( ";" extension-params
) ; Extension params are allowed in From to
and Via | |
| = | "Unsupported" ":" 1#option-tag | |
| = | ( "Via" | "v" )
":" 1#( sent-protocol
sent-by
*( ";" via-params
) [comment]
) *( ";" extension-params
) ; Extension params are allowed in From to
and Via | |
| = | via-hidden | via-ttl | via-maddr | via-received | via-branch | |
| = | "hidden" | |
| = | "ttl" "=" ttl | |
| = | "maddr" "=" maddr ; Note: maddr not
defined but it should be host | |
| = | "received" "=" host | |
| = | "branch" "=" token | |
| = | protocol-name "/" protocol-version "/" transport | |
| = | "SIP" | token | |
| = | token | |
| = | "UDP" | "TCP" | token | |
| = | ( host [":" port] ) | ( concealed-host ) | |
| = | token | |
| = | "Warning" ":" 1#warning-value | |
| = | warn-code SP warn-agent SP warn-text | |
| = | 3DIGIT | |
| = | ( host
[":" port] )
| pseudonym ; the name or pseudonym of the server adding the Warning
header, for use in debugging | |
| = | token | |
| = | quoted-string | |
| = | "WWW-Authenticate" ":" 1#challenge | |
| = | token | |
| = | auth-scheme 1*SP realm *( "," auth-param ) | |
| = | "realm" "=" realm-value | |
| = | token "=" string | |
| = | basic-credentials | ( auth-scheme #( auth-params ) ) | |
| = | "Basic" SP basic-cookie | |
| = | <encrypted string> | |
| = | *( pgp-params ) | |
| = | realm | pgp-version | pgp-algorithm | nonce | |
| = | "realm" "=" realm-value | |
| = | quoted-string | |
| = | "version" "=" DQUOTE digit *( "." digit ) *letter DQUOTE | |
| = | "algorithm" "=" ( "md5" | "sha1" | token ) | |
| = | "nonce" "=" nonce-value | |
| = | quoted-string | |
| = | "Authorization" ":" credentials | |
| = | realm | pgp-version | pgp-signature | signed-by | nonce | |
| = | "signature" "=" quoted-string | |
| = | "signed-by" "=" DQUOTE URI DQUOTE | |
| = | 1#( pgp-version | pgp-encoding | pgp-key ) | |
| = | "encoding" "=" "ascii" | token | |
| = | "key" "=" quoted-string | |
| = | %x00-FF ; any 8-bit sequence of
data | |
| = | %x00-7F ; any US-ASCII character
(octets 0 - 127) | |
| = | "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z" | |
| = | "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z" | |
| = | lowalpha | upalpha | |
| = | "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | |
| = | alpha | digit | |
| = | %x00-1F | %x7F ; any US-ASCII control
character (octets 0 -- 31) and DEL (127) | |
| = | %d13 ; US-ASCII CR, carriage return
character | |
| = | %d10 ; US-ASCII LF, line feed
character | |
| = | %d32 ; US-ASCII SP, space
character | |
| = | %d09 ; US-ASCII HT, horizontal tab
character | |
| = | CR
| LF |
CRLF ; typically the end of a line | |
| = | alphanum | mark | |
| = | ( CR CR ) | ( LF LF ) | ( CR LF CR LF ) | |
| = | "-" | "_" | "." | "!" | "~" | "*" | " ' " | "(" | ")" | |
| = | "%" hex hex | |
| = | [CRLF]
1*( SP
| HT
) ; linear whitespace | |
| = | <any UTF-8 character encoding, except CTLs, but including LWS> | |
| = | "A" | "B" | "C" | "D" | "E" | "F" | "a" | "b" | "c" | "d" | "e" | "f" | digit | |
| = | 1*( alphanum | "-" | "." | "$" | "%" | "*" | "_" | "+" | "~" | "`" | "'" ) | |
| = | "(" | ")" | "<" | "" | "@" | "," | ";" | ":" | "\" | "<" | "/" | "[" | "]" | "?" | "=" | "{" | "}" | SP | HT | |
| = | "(" *( ctext | quoted-pair | comment ) ")" | |
| = | <anyTEXT-UTF8 excluding "(" and ")" > | |
| = | ( DQUOTE *( qdtext | quoted-pair ) DQUOTE ) | |
| = | <anyTEXT-UTF8 except '"' > | |
| = | "\" CHAR | |
| = | 1*DIGIT ; This is not spec. in 2543 and no reference is given (its
in H.3.3.2) | |
| = | ( "0" ["." 0*3DIGIT] ) | ( "1" ["." 0*3( "0" )] ) | |
| = | ( [absoluteURI
| relativeURI]
["#" fragment]
) | ( sip-url
) ; According to 2453:4.3 - ReqURI is
SIPUri (without certain tokens) or GeneralURI | |
| = | scheme ":" ( hier-part | opaque-part ) | |
| = | ( net-path | abs-path | rel-path ) ["?" query] | |
| = | ( net-path | abs-path ) ["?" query] | |
| = | uric-no-slash *uric | |
| = | unreserved | escaped | ";" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | "," | |
| = | "//" authority [abs-path] | |
| = | "/" path-segments | |
| = | rel-segment [abs-path] | |
| = | 1*( unreserved | escaped | ";" | "@" | "&" | "=" | "+" | "$" | "," ) | |
| = | alpha *( alpha | digit | "+" | "-" | "." ) | |
| = | server-H | reg-name | |
| = | 1*( unreserved | escaped | "$" | "," | ";" | ":" | "@" | "&" | "=" | "+" ) | |
| = | [[userinfo-H "@"] hostport] | |
| = | *( unreserved | escaped | ";" | ":" | "&" | "=" | "+" | "$" | "," ) | |
| = | [abs-path | opaque-part] | |
| = | segment *( "/" segment ) | |
| = | *pchar *( ";" param ) | |
| = | *pchar | |
| = | unreserved | escaped | ":" | "@" | "&" | "=" | "+" | "$" | "," | |
| = | *uric | |
| = | *uric | |
| = | token ["/" product-version] | |
| = | token | |
| = | wkday "," SP date1 SP time SP "GMT" | |
| = | 2DIGIT
SP month
SP 4DIGIT ; day month year (e.g., 02 Jun 1982) | |
| = | 2DIGIT
":" 2DIGIT
":" 2DIGIT ; 00:00:00 - 23:59:59 | |
| = | "Mon" | "Tue" | "Wed" | "Thu" | "Fri" | "Sat" | "Sun" | |
| = | "Jan" | "Feb" | "Mar" | "Apr" | "May" | "Jun" | "Jul" | "Aug" | "Sep" | "Oct" | "Nov" | "Dec" | |
| = | proto-version origin-field session-name-field information-field uri-field email-fields phone-fields connection-field bandwidth-fields time-fields key-field attribute-fields media-descriptions | |
| = | "v=" 1*DIGIT
return ;this memo describes version 0 | |
| = | "o=" username space sess-id space sess-version space nettype space addrtype space addr return | |
| = | "s=" text return | |
| = | ["i=" text return] | |
| = | ["u=" uri return] | |
| = | *( "e=" email-address return ) | |
| = | *( "p=" phone-number return ) | |
| = | ["c=" nettype
space
addrtype
space
connection-address
return] ;a connection field must be present
;in every media description or at the ;session-level | |
| = | *( "b=" bwtype ":" bandwidth return ) | |
| = | 1*( "t=" start-time space stop-time *( return repeat-fields ) return ) [zone-adjustments return] | |
| = | "r=" repeat-interval space typed-time 1*( space typed-time ) | |
| = | time space ["-"] typed-time *( space time space ["-"] typed-time ) | |
| = | ["k=" key-type return] | |
| = | "prompt" | "clear:" key-data | "base64:" key-data | "uri:" uri | |
| = | email-safe | "~" | %x22 | |
| = | *( "a=" attribute return ) | |
| = | "m=" media space port ["/" integer] space proto 1*( space fmt ) return | |
| = | *( media-field information-field *( connection-field ) bandwidth-fields key-field attribute-fields ) | |
| = | 1*( alpha-numeric ) ;typically "audio", "video", "application" ;or "data"
| |
| = | 1*( alpha-numeric ) ;typically an RTP payload type for audio
;and video media | |
| = | 1*( alpha-numeric ) ;typically "RTP/AVP" or "udp" for IP4 | |
| = | 1*( DIGIT
) ;should in the range "1024" to "65535"
inclusive ;for UDP based media | |
| = | ( att-field ":" att-value ) | att-field | |
| = | 1*( alpha-numeric ) | |
| = | byte-string | |
| = | 1*( DIGIT
) ;should be unique for this originating
username/host | |
| = | 1*( DIGIT
) ;0 is a new session | |
| = | multicast-address | addr | |
| = | 3*( decimal-uchar
"." ) decimal-uchar
"/" ttl
["/" integer] ;multicast addresses may be in the range
;224.0.0.0 to 239.255.255.255 | |
| = | time | "0" | |
| = | time | "0" | |
| = | POS-DIGIT
9*( DIGIT
) ;sufficient for 2 more centuries
| |
| = | typed-time | |
| = | 1*( DIGIT ) [fixed-len-time-unit] | |
| = | "d" | "h" | "m" | "s" | |
| = | 1*( alpha-numeric ) | |
| = | 1*( DIGIT ) | |
| = | safe ;pretty wide definition, but doesn't include space
| |
| = | email | email "(" email-safe ")" | email-safe "<" email ">" | |
| = | <defined in RFC822> | |
| = | phone | phone "(" email-safe ")" | email-safe "<" phone ">" | |
| = | "+" POS-DIGIT
1*( space
| "-" | DIGIT
) ;there must be a space or hyphen between
the ;international code and the rest of the number. | |
| = | "IN" ;list to
be extended | |
| = | "IP4" | "IP6" ;list to be
extended | |
| = | FQDN | unicast-address | |
| = | 4*( alpha-numeric | "-" | "." ) ;fully qualified domain name as specified in RFC1035
| |
| = | IP4-address | IP6-address | |
| = | b1 "." decimal-uchar "." decimal-uchar "." b4 | |
| = | decimal-uchar ;less than "224"; not "0" or "127" | |
| = | decimal-uchar ;not "0" | |
| = | <to be defined> | |
| = | byte-string ;default is to interpret this as I0-10646 UTF8
;ISO 8859-1 requires a "a=charset:ISO-8859-1" ;session-level attribute to be used | |
| = | 1*( %x01-09 | %x0B | %x0C | %x0E-FF ) ;any byte except NUL, CR or LF | |
| = | DIGIT | POS-DIGIT DIGIT | ( "1" 2*( DIGIT ) ) | ( "2" ( "0" | "1" | "2" | "3" | "4" ) DIGIT ) | ( "2" "5" ( "0" | "1" | "2" | "3" | "4" | "5" ) ) | |
| = | POS-DIGIT *( DIGIT ) | |
| = | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | |
| = | safe | space | tab | |
| = | alpha-numeric | "'" | "'" | "-" | "." | "/" | ":" | "?" | %x22 | "#" | "$" | "&" | "*" | ";" | "=" | "@" | "[" | "]" | "^" | "_" | "`" | "{" | "|" | "}" | "+" | "~" | "<" | |
| = | SP | |
| = | HT | |
| = | <defined in [RFC2234]> | |
| = | <defined in [RFC2234]> | |
| Symbol Cross Reference List |
|---|