tech-invite   World Map     

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

ABNF grammars

|   SIP   |   SIP URIs   |   SIP Headers   |   SIP Private Headers   |   SDP   |
|   HTTP   |   Generic URI   |   IRI   |   IMF   |   MSRP   |   RTSP   |   ABNF Notation   |

URI (Uniform Resource Identifier) Generic Syntax – RFC 3986

 

Here          Top

 

|   URI Reference   |   Scheme   |   Authority   |   Path   |   Query   |   Fragment   |   Characters   |


URI-reference   =
URI  /  relative-ref
Up

URI   =
scheme   ":"   hier-part   [ "?"   query ]   [ "#"   fragment ]
Up

absolute-URI   =
scheme   ":"   hier‑part   [ "?"   query ]
Up

relative-ref   =
relative-part   [ "?"   query ]   [ "#"   fragment ]
Up

hier-part   =
relative-part   =

 

|   URI Reference   |   Scheme   |   Authority   |   Path   |   Query   |   Fragment   |   Characters   |


scheme   =
ALPHA   *( ALPHA   /   DIGIT   /   "+"   /   "-"   /   "." )

; Examples:
;     "sip"
;     "sips"
;     "tel"
;     "http"
;     "https"
;     "mailto"
;     "pres"
;     "ftp"
;     "file"
;     "rtsp"
;     "msrp"

Up

 

|   URI Reference   |   Scheme   |   Authority   |   Path   |   Query   |   Fragment   |   Characters   |


authority   =
userinfo   "@" ]   host   [ ":"   port ]
Up


userinfo   =
*( unreserved  /  pct‑encoded  /  sub‑delims  /  ":" )
Up


host   =
IP-literal   =
"["   ( IPv6address  /  IPv6addrz  /  IPvFuture )   "]"
Up

IPv6addrz   =
IPv6address   "%25"   ZoneID   ;  see   RFC 6874
Up

ZoneID   =
1*( unreserved  /  pct‑encoded )
Up

IPvFuture   =
"v"   1*HEXDIG   "."   1*( unreserved  /  sub‑delims  /  ":" )
Up

IPv6address   =
                                             6( h16   ":" )   ls32   /
                                     "::"   5( h16   ":" )   ls32   /
[                        h16 ]   "::"   4( h16   ":" )   ls32   /
[ *1( h16   ":" )   h16 ]   "::"   3( h16   ":" )   ls32   /
[ *2( h16   ":" )   h16 ]   "::"   2( h16   ":" )   ls32   /
[ *3( h16   ":" )   h16 ]   "::"       h16   ":"     ls32   /
[ *4( h16   ":" )   h16 ]   "::"                        ls32   /
[ *5( h16   ":" )   h16 ]   "::"       h16   /
[ *6( h16   ":" )   h16 ]   "::"
Up
Up

ls32   =
h16   ":"   h16 )  /  IPv4address
Up

h16   =
1*4HEXDIG
Up
Up

IPv4address   =
dec-octet   "."   dec-octet   "."   dec-octet   "."   dec-octet
Up
Up

dec-octet   =
DIGIT   /     ;  0-9
%x31-39   DIGIT   /     ;  10‑99
"1"   2DIGIT   /     ;  100‑199
"2"   %x30‑34   DIGIT   /     ;  200‑249
"25"   %x30‑35     ;  250‑255
Up

reg-name   =
*( unreserved  /  pct‑encoded  /  sub‑delims )
Up

 


port   =

 

|   URI Reference   |   Scheme   |   Authority   |   Path   |   Query   |   Fragment   |   Characters   |


path   =
path‑abempty  /    ;  begins with "/" or is empty
path‑absolute  /    ;  begins with "/" but not "//"
path‑noscheme  /    ;  begins with a non‑colon segment
path‑rootless  /    ;  begins with a segment
path‑empty    ;  zero characters
Up

path-abempty   =
*( "/"   segment )
Up

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

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

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

path-empty   =
0<pchar>
Up

segment   =
segment-nz   =
1*pchar

segment-nz-nc   =
1*( unreserved  /  pct‑encoded  /  sub‑delims  /  "@" )
;  non-zero-length segment without any colon ":"

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

 

|   URI Reference   |   Scheme   |   Authority   |   Path   |   Query   |   Fragment   |   Characters   |


query   =
*(  pchar   /   "/"   /   "?"  )
Up

 

|   URI Reference   |   Scheme   |   Authority   |   Path   |   Query   |   Fragment   |   Characters   |


fragment   =
*(  pchar   /   "/"   /   "?"  )
Up

 

|   URI Reference   |   Scheme   |   Authority   |   Path   |   Query   |   Fragment   |   Characters   |


pct-encoded   =
"%"   HEXDIG   HEXDIG
Up

unreserved   =
ALPHA   /   DIGIT   /   "-"   /   "."   /   "_"   /   "~"
Up

reserved   =
gen-delims   =
":"   /   "/"   /   "?"   /   "#"   /   "["   /   "]"   /   "@"
Up

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