This HTML version of the ABNF from file <rfc2543.abnf> is automatically generated using the ABNF2HTML $Revision: 1.26 $ tool provided by Inet Technologies, Inc. written by Brian Bidulock.
This version of ABNF is for informational purposes only and is intended as a tool to help read the ABNF specification. Please see the Copyright and Disclaimers at the end of this document. For definitive syntax descriptions, please refer to the source IETF documents.
The protocol syntax is presented in ABNF according to RFC2234 with extensions from RFC822. This ABNF browser was generated from file <rfc2543.abnf> on Fri Aug 11 01:30:52 CDT 2000.
This document consists of:
The productions for the ABNF specification are provided below.
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]> | |
Following is a cross-reference list for the ABNF. On the left are references to productions, on the right are links to the rules in which those productions are referenced.
This ABNF2HTML generated document is a derivative work of an Internet-Draft or RFC and is:
Copyright © The Internet Society (2000).
All Rights Reserved.This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into language other than English.
The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or asigns.
This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THIS INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MECHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Although the conversion program which created this document has been tested vigorously, errors may have been introduced while translating from ABNF to HTML: neither the author nor Inet Technologies, Inc. offers any warranty of fitness for any purpose whatsoever regarding the information contained herein, and shall not be held responsible for any damages whatsoever (whether indirect or special) arising from the use of this document or the information contained herein. Inet Technologies, Inc. is under no obligation to provide any feature nor conform to any specification listed in this document.