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

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

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

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

hier-part   =
relative-part   =

Top

 

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


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

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


Top

 

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


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


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

Up       Top


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

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

ZoneID   =
1*( unreserved  /  pct‑encoded )

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

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 ]   "::"

h16   =
1*4HEXDIG

ls32   =
h16   ":"   h16 )  /  IPv4address

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

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

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

Up       Top


port   =

Up       Top

 

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


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   =
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  /  ":"  /  "@"

Top

 

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


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

Top

 

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


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

Top

 

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


pct-encoded   =
"%"   HEXDIG   HEXDIG

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

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

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

Top