< draft-ietf-appsawg-file-scheme-01.txt   draft-ietf-appsawg-file-scheme-02.txt >
Applications Area Working Group M. Kerwin Applications Area Working Group M. Kerwin
Internet-Draft QUT Internet-Draft QUT
Obsoletes: 1738 (if approved) April 14, 2015 Obsoletes: 1738 (if approved) May 28, 2015
Intended status: Standards Track Intended status: Standards Track
Expires: October 16, 2015 Expires: November 29, 2015
The file URI Scheme The file URI Scheme
draft-ietf-appsawg-file-scheme-01 draft-ietf-appsawg-file-scheme-02
Abstract Abstract
This document specifies the "file" Uniform Resource Identifier (URI) This document specifies the "file" Uniform Resource Identifier (URI)
scheme, obsoleting the definition in RFC 1738. scheme, obsoleting the definition in RFC 1738.
It attemps to define a common core which is intended to interoperate It attemps to define a common core which is intended to interoperate
across the broad spectrum of existing implementations, while at the across the broad spectrum of existing implementations, while at the
same time documenting other current practices. same time documenting other current practices.
skipping to change at page 1, line 41 skipping to change at page 1, line 41
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on October 16, 2015. This Internet-Draft will expire on November 29, 2015.
Copyright Notice Copyright Notice
Copyright (c) 2015 IETF Trust and the persons identified as the Copyright (c) 2015 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. History . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1. History . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2. Similar Technologies . . . . . . . . . . . . . . . . . . 3 1.2. Similar Technologies . . . . . . . . . . . . . . . . . . 3
1.3. Notational Conventions . . . . . . . . . . . . . . . . . 3 1.3. Notational Conventions . . . . . . . . . . . . . . . . . 4
2. Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2. Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3. Operations on file URIs . . . . . . . . . . . . . . . . . . . 4 3. Operations on file URIs . . . . . . . . . . . . . . . . . . . 5
3.1. Translating Local File Path to file URI . . . . . . . . . 5 3.1. Translating Local File Path to file URI . . . . . . . . . 5
3.2. Translating UNC String to file URI . . . . . . . . . . . 6 3.2. Translating UNC String to file URI . . . . . . . . . . . 6
3.3. Translating Non-local File Path to file URI . . . . . . . 7 3.3. Translating Non-local File Path to file URI . . . . . . . 7
3.4. Incompatible File Paths . . . . . . . . . . . . . . . . . 7 3.4. Incompatible File Paths . . . . . . . . . . . . . . . . . 7
3.4.1. Win32 Namespaces . . . . . . . . . . . . . . . . . . 7 3.4.1. Win32 Namespaces . . . . . . . . . . . . . . . . . . 7
4. Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . 7 4. Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5. Security Considerations . . . . . . . . . . . . . . . . . . . 8 5. Security Considerations . . . . . . . . . . . . . . . . . . . 8
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 9 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 9
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 9
8.1. Normative References . . . . . . . . . . . . . . . . . . 9 8.1. Normative References . . . . . . . . . . . . . . . . . . 10
8.2. Informative References . . . . . . . . . . . . . . . . . 10 8.2. Informative References . . . . . . . . . . . . . . . . . 10
Appendix A. Example URIs . . . . . . . . . . . . . . . . . . . . 11 Appendix A. Example URIs . . . . . . . . . . . . . . . . . . . . 12
Appendix B. System-specific Operations . . . . . . . . . . . . . 11 Appendix B. System-specific Operations . . . . . . . . . . . . . 12
B.1. POSIX Systems . . . . . . . . . . . . . . . . . . . . . . 12 B.1. POSIX Systems . . . . . . . . . . . . . . . . . . . . . . 12
B.2. DOS- and Windows-Like Systems . . . . . . . . . . . . . . 12 B.2. DOS- and Windows-Like Systems . . . . . . . . . . . . . . 12
B.3. Mac OS X Systems . . . . . . . . . . . . . . . . . . . . 12 B.3. Mac OS X Systems . . . . . . . . . . . . . . . . . . . . 13
B.4. OpenVMS Files-11 Systems . . . . . . . . . . . . . . . . 12 B.4. OpenVMS Files-11 Systems . . . . . . . . . . . . . . . . 13
Appendix C. Nonstandard Syntax Variations . . . . . . . . . . . 12 Appendix C. Nonstandard Syntax Variations . . . . . . . . . . . 13
C.1. DOS and Windows Drive Letters . . . . . . . . . . . . . . 12 C.1. DOS and Windows Drive Letters . . . . . . . . . . . . . . 13
C.1.1. Vertical Bar Character . . . . . . . . . . . . . . . 13 C.1.1. Relative Paths . . . . . . . . . . . . . . . . . . . 14
C.2. UNC Paths . . . . . . . . . . . . . . . . . . . . . . . . 14 C.1.2. Vertical Bar Character . . . . . . . . . . . . . . . 14
C.3. Backslash as Separator . . . . . . . . . . . . . . . . . 15 C.2. UNC Paths . . . . . . . . . . . . . . . . . . . . . . . . 15
Appendix D. Example of IRI vs Percent-Encoded URI . . . . . . . 15 C.3. Backslash as Separator . . . . . . . . . . . . . . . . . 16
Appendix E. UNC Syntax . . . . . . . . . . . . . . . . . . . . . 16 Appendix D. Example of IRI vs Percent-Encoded URI . . . . . . . 16
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 17 Appendix E. UNC Syntax . . . . . . . . . . . . . . . . . . . . . 17
Appendix F. Collected Rules . . . . . . . . . . . . . . . . . . 18
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 19
1. Introduction 1. Introduction
A file URI identifies a file on a particular file system. It can be A file URI identifies a file on a particular file system. It can be
used in discussions about the file, and if other conditions are met used in discussions about the file, and if other conditions are met
it can be dereferenced to directly access the file. it can be dereferenced to directly access the file.
The file URI scheme is not coupled with a specific protocol. As The file URI scheme is not coupled with a specific protocol. As
such, there is no well-defined set of operations that can be such, there is no well-defined set of operations that can be
performed on file URIs, nor a specific media type associated with performed on file URIs, nor a specific media type associated with
skipping to change at page 5, line 50 skipping to change at page 6, line 9
2. Append the transformed segment and a delimiting slash 2. Append the transformed segment and a delimiting slash
character "/" to the URI. character "/" to the URI.
6. If the path includes a file name: 6. If the path includes a file name:
1. Transform the file name to a path segment as above. 1. Transform the file name to a path segment as above.
2. Append the transformed segment to the URI. 2. Append the transformed segment to the URI.
Differences from RFC 1738 Differences from RFC 1738
In [RFC1738] a file URL always started with the token "file://", In [RFC1738] a file URL always started with the token "file://",
followed by an authority and a "/". That "/" was not considered part followed by an authority and a "/". That "/" was not considered part
of the path. This implies that the correct encoding for a file path of the path. This implies that the correct encoding for a file path
in a UNIX-like environment would have been: in a UNIX-like environment would have been:
token + authority + slash + path token + authority + slash + path
= "file://" + "" + "/" + "/path/to/file.txt" = "file://" + "" + "/" + "/path/to/file.txt"
= "file:////path/to/file.txt" = "file:////path/to/file.txt"
However that construct was never used in practice, and in fact would However that construct was never used in practice, and in fact would
skipping to change at page 7, line 5 skipping to change at page 7, line 13
Section 3.3) as per Section 2 of [RFC3986]. Section 3.3) as per Section 2 of [RFC3986].
2. Append a delimiting slash character "/" and the transformed 2. Append a delimiting slash character "/" and the transformed
segment to the URI. segment to the URI.
Example: Example:
UNC String: \\host.example.com\Share\path\to\file.txt UNC String: \\host.example.com\Share\path\to\file.txt
URI: file://host.example.com/Share/path/to/file.txt URI: file://host.example.com/Share/path/to/file.txt
Differences from RFC 1738 Differences from RFC 1738
In [RFC1738] a file URL an authority of "localhost" was used to refer In [RFC1738] a file URL an authority of "localhost" was used to refer
to the local file system, but in this specification it equates to a to the local file system, but in this specification it equates to a
UNC string with the host "localhost". UNC string with the host "localhost".
3.3. Translating Non-local File Path to file URI 3.3. Translating Non-local File Path to file URI
Translating a non-local file path other than a UNC string to a file Translating a non-local file path other than a UNC string to a file
URI follows the same basic algorithm as for local files, above, URI follows the same basic algorithm as for local files, above,
except that the authority MUST refer to the network-accesible node except that the authority MUST refer to the network-accesible node
skipping to change at page 8, line 30 skipping to change at page 8, line 40
are complex topics, and the use of file URIs can complicate the are complex topics, and the use of file URIs can complicate the
security model in effect for file privileges. Software using file security model in effect for file privileges. Software using file
URIs MUST NOT grant greater access than would be available for other URIs MUST NOT grant greater access than would be available for other
file access methods. file access methods.
File systems typically assign an operational meaning to special File systems typically assign an operational meaning to special
characters, such as the "/", "\", ":", "[", and "]" characters, and characters, such as the "/", "\", ":", "[", and "]" characters, and
to special device names like ".", "..", "...", "aux", "lpt", etc. In to special device names like ".", "..", "...", "aux", "lpt", etc. In
some cases, merely testing for the existence of such a name will some cases, merely testing for the existence of such a name will
cause the operating system to pause or invoke unrelated system calls, cause the operating system to pause or invoke unrelated system calls,
leading to significant securt concerns regarding denial of service leading to significant security concerns regarding denial of service
and unintended data transfer. It would be impossible for this and unintended data transfer. It would be impossible for this
specification to list all such significant characters and device specification to list all such significant characters and device
names. Implementers MUST research the reserved names and characters names. Implementers MUST research the reserved names and characters
for the types of storage device that may be attached to their for the types of storage device that may be attached to their
application and restrict the use of data obtained from URI components application and restrict the use of data obtained from URI components
accordingly. accordingly.
Additionally, as discussed in the HP OpenVMS Systems Documentation Additionally, as discussed in the HP OpenVMS Systems Documentation
http://h71000.www7.hp.com/doc/84final/ba554_90015/ch03s09.html http://h71000.www7.hp.com/doc/84final/ba554_90015/ch03s09.html
"access control strings include sufficient information to allow "access control strings include sufficient information to allow
someone to break in to the remote account, [therefore] they create someone to break in to the remote account, [therefore] they create
serious security exposure." In a similar vein, the presence of a serious security exposure." In a similar vein, the presence of a
password in a "user:password" userinfo field is deprecated by password in a "user:password" userinfo field is deprecated by
[RFC3986]. As such, the userinfo field of a file URI, if present, [RFC3986]. As such, the userinfo field of a file URI, if present,
MUST NOT contain a password. MUST NOT contain a password.
6. IANA Considerations 6. IANA Considerations
IANA maintains the registry of URI Schemes [BCP115] at
http://www.iana.org/assignments/uri-schemes/ .
This document defines the following URI scheme, so the "Permanent URI This document defines the following URI scheme, so the "Permanent URI
Schemes" registry has been updated accordingly. Schemes" registry has been updated accordingly. This registration
complies with [BCP115].
+------------+--------------------------+-----------+ Scheme name:
| URI Scheme | Description | Reference | file
+------------+--------------------------+-----------+
| file | Host-specific file names | RFC XXXX | Status:
+------------+--------------------------+-----------+ permanent
Applications/protocols that use this scheme name:
Commonly used in hypertext documents to refer to files without
depending on network access. Supported by major browsers.
Windows API (PathCreateFromUrl, UrlCreateFromPath).
Perl LWP.
Contact:
Matthew Kerwin <matthew.kerwin@qut.edu.au>
Change Controller:
This scheme is registered under the IETF tree. As such, the IETF
maintains change control.
[RFC Editor Note: Replace XXXX with this RFC's reference.] [RFC Editor Note: Replace XXXX with this RFC's reference.]
7. Acknowledgements 7. Acknowledgements
This specification is derived from [RFC1738], [RFC3986], and This specification is derived from [RFC1738], [RFC3986], and
[I-D.hoffman-file-uri] (expired); the acknowledgements in those [I-D.hoffman-file-uri] (expired); the acknowledgements in those
documents still apply. documents still apply.
Additional thanks to Dave Risney, author of the informative IE Blog Additional thanks to Dave Risney, author of the informative IE Blog
skipping to change at page 10, line 23 skipping to change at page 10, line 46
[RFC6874] Carpenter, B., Cheshire, S., and R. Hinden, "Representing [RFC6874] Carpenter, B., Cheshire, S., and R. Hinden, "Representing
IPv6 Zone Identifiers in Address Literals and Uniform IPv6 Zone Identifiers in Address Literals and Uniform
Resource Identifiers", RFC 6874, February 2013. Resource Identifiers", RFC 6874, February 2013.
[UTR15] Davis, M. and K. Whistler, "Unicode Normalization Forms", [UTR15] Davis, M. and K. Whistler, "Unicode Normalization Forms",
August 2012. August 2012.
8.2. Informative References 8.2. Informative References
[Bug107540]
Bugzilla@Mozilla, "Bug 107540", October 2007,
<https://bugzilla.mozilla.org/show_bug.cgi?id=107540>.
[I-D.hoffman-file-uri] [I-D.hoffman-file-uri]
Hoffman, P., "The file URI Scheme", draft-hoffman-file- Hoffman, P., "The file URI Scheme", draft-hoffman-file-
uri-03 (work in progress), January 2005. uri-03 (work in progress), January 2005.
[MS-DTYP] Microsoft Open Specifications, "Windows Data Types, 2.2.56 [MS-DTYP] Microsoft Open Specifications, "Windows Data Types, 2.2.56
UNC", January 2013, UNC", January 2013,
<http://msdn.microsoft.com/en-us/library/gg465305.aspx>. <http://msdn.microsoft.com/en-us/library/gg465305.aspx>.
[MS-NBTE] Microsoft Open Specifications, "NetBIOS over TCP (NBT) [MS-NBTE] Microsoft Open Specifications, "NetBIOS over TCP (NBT)
Extensions", May 2014, Extensions", May 2014,
skipping to change at page 12, line 18 skipping to change at page 12, line 49
B.2. DOS- and Windows-Like Systems B.2. DOS- and Windows-Like Systems
When mapping a DOS- or Windows-like file path to a URI, use the drive When mapping a DOS- or Windows-like file path to a URI, use the drive
letter (e.g. "c:") as the first path segment. letter (e.g. "c:") as the first path segment.
Some implementations leave the leading slash off before the drive Some implementations leave the leading slash off before the drive
letter. See Appendix C.1) letter. See Appendix C.1)
Some implementations replace ":" with "|", while others leave it off Some implementations replace ":" with "|", while others leave it off
completed. See Appendix C.1.1 completely. See Appendix C.1.2
B.3. Mac OS X Systems B.3. Mac OS X Systems
o HFS+ uses non-standard UTF-8 [STD63] form (like NFD) o HFS+ uses non-standard UTF-8 [STD63] form (like NFD)
- take care transforming <-> NFC [UTR15] * take care transforming <-> NFC [UTR15]
B.4. OpenVMS Files-11 Systems B.4. OpenVMS Files-11 Systems
When mapping a VMS file path to a file URI, use the device name as When mapping a VMS file path to a file URI, use the device name as
the first path segment. Note that the dollars sign "$" is a reserved the first path segment. Note that the dollars sign "$" is a reserved
character ([RFC3986], Section 2.2), so should be percent-encoded. character ([RFC3986], Section 2.2), so should be percent-encoded.
If the VMS file path includes a node reference, use that as the If the VMS file path includes a node reference, use that as the
authority. Where the original node reference includes a username and authority. Where the original node reference includes a username and
password in an access control string, they can be transcribed into password in an access control string, they can be transcribed into
skipping to change at page 13, line 17 skipping to change at page 13, line 48
drive-letter = ALPHA ":" drive-letter = ALPHA ":"
This is intended to support URIs of the form: This is intended to support URIs of the form:
o "file:c:/path/to/file" o "file:c:/path/to/file"
The minimal representation of a local file in a DOS- or The minimal representation of a local file in a DOS- or
Windows-based environment, with no authority field and an Windows-based environment, with no authority field and an
absolute path that begins with a drive letter. absolute path that begins with a drive letter.
C.1.1. Vertical Bar Character Note that comparison of drive letters in DOS or Windows file paths is
case-insensitive. Some implementations therefore canonicalize drive
letters in file URIs by converting them to uppercase.
C.1.1. Relative Paths
In DOS- or Windows-based file systems, relative paths beginning with
a slash "/" should be resolved relative to the drive letter, and
resolution of ".." dot segments (per Section 5.2.4 of [RFC3986])
should not ever overwrite the drive letter.
e.g.:
base: file:///c:/path/to/file.txt
rel. URI: /some/other/thing.bmp
resolved: file:///c:/some/other/thing.bmp
base: file:///c:/foo.txt
rel. URI: ../../bar.txt
resolved: file:///c:/bar.txt
Relative paths with a drive letter followed by a character other than
a slash (e.g. "c:bar/baz.txt" or "c:../foo.txt") should not be
accepted as valid URIs in DOS or Windows systems.
C.1.2. Vertical Bar Character
Historically some implementations have used a vertical line character Historically some implementations have used a vertical line character
"|" instead of a colon ":" in the drive letter construct. [RFC3986] "|" instead of a colon ":" in the drive letter construct. [RFC3986]
forbids the use of the vertical line, however it may be necessary to forbids the use of the vertical line, however it may be necessary to
interpret or update old URIs. interpret or update old URIs.
For interpreting such URIs, the "auth-path" and "local-path" rules in For interpreting such URIs, the "auth-path" and "local-path" rules in
Section 2 and the "drive-letter" rule above are replaced with the Section 2 and the "drive-letter" rule above are replaced with the
following: following:
skipping to change at page 13, line 44 skipping to change at page 15, line 4
file-absolute = "/" drive-letter path-absolute file-absolute = "/" drive-letter path-absolute
drive-letter = ALPHA ":" drive-letter = ALPHA ":"
/ ALPHA "|" / ALPHA "|"
This is intended to support URIs of the form: This is intended to support URIs of the form:
o "file:///c|/path/to/file" o "file:///c|/path/to/file"
o "file:/c|/path/to/file" o "file:/c|/path/to/file"
o "file:c|/path/to/file" o "file:c|/path/to/file"
Regular DOS or Windows file URIs, with vertical line characters Regular DOS or Windows file URIs, with vertical line characters
in the drive letter construct. in the drive letter construct.
To update such an old URI, replace the vertical line "|" with a colon To update such an old URI, replace the vertical line "|" with a colon
":". ":".
C.2. UNC Paths C.2. UNC Paths
It is common to encounter file URIs that encode entire UNC strings in It is common to encounter file URIs that encode entire UNC strings in
the path, with all backslash "\" characters replaced with slashes the path, with all backslash "\" characters replaced with slashes
"/". "/".
To interpret such URIs, the "auth-path" rule in Section 2 is replaced To interpret such URIs, the "auth-path" rule in Section 2 is replaced
with the following: with the following:
auth-path = [ file-auth ] path-absolute auth-path = [ file-auth ] path-absolute
/ unc-authority path-absolute / unc-authority path-absolute
unc-authority = 2*3"/" authority unc-authority = 2*3"/" [ userinfo "@" ] file-host
[FIXME: "authority" allows '[' and ']' in IPv6 literals, but file-host = inline-IP / IPv4address / reg-name
RFC3986 forbids them in the path, so the "unc-authority" rule is
not entirely valid.]
For example: inline-IP = "%5B" ( IPv6address / IPvFuture ) "%5D"
Traditional: This syntax uses the "userinfo", "IPv4address, "IPv6address",
file:////hostname/share/object/names "IPvFuture", and "reg-name` rules from [RFC3986].
\_____/\__________________________ /
Scheme Transformed UNC string
Firefox: Note that the "file-host" rule is the same as "host" but with
file://///hostname/share/object/names percent-encoding applied to "[" and "]" characters.
\_____/|\__________________________ /
Scheme | Transformed UNC string
Extra slash
This extended syntax is intended to support URIs that take the This extended syntax is intended to support URIs that take the
following forms, in addition to those in Appendix A: following forms, in addition to those in Appendix A:
Non-local files: Non-local files:
o "file:////host.example.com/path/to/file" o "file:////host.example.com/path/to/file"
The "traditional" representation of a non-local file, with an The "traditional" representation of a non-local file, with an
empty authority and a complete (transformed) UNC string in the empty authority and a complete (transformed) UNC string in the
path. path.
o "file://///host.example.com/path/to/file" o "file://///host.example.com/path/to/file"
As above, with an extra slash between the empty authority and As above, with an extra slash between the empty authority and
the transformed UNC string, conformant with the definition from the transformed UNC string, conformant with the definition from
[RFC1738]; see: exceptions in Section 3.2. This representation
is notably used by the Firefox web browser. [RFC1738]. This representation is notably used by the Firefox
web browser. See Bugzilla#107540 [Bug107540].
It also further limits the set of file URIs that can be translated to It also further limits the set of file URIs that can be translated to
a local file path to those whose path does not encode a UNC string. a local file path to those with a path that does not encode a UNC
string.
C.3. Backslash as Separator C.3. Backslash as Separator
Historically some implementations have copied entire file paths into Historically some implementations have copied entire file paths into
the path components of file URIs. Where DOS or Windows file paths the path components of file URIs. Where DOS or Windows file paths
were copied thus, resulting URI strings contained unencoded backslash were copied thus, resulting URI strings contained unencoded backslash
"\" characters, which are forbidden by both [RFC1738] and [RFC3986]. "\" characters, which are forbidden by both [RFC1738] and [RFC3986].
It may be possible to translate or update such an invalid file URI by It may be possible to translate or update such an invalid file URI by
replacing all backslashes "\" with slashes "/", if it can be replacing all backslashes "\" with slashes "/", if it can be
skipping to change at page 17, line 5 skipping to change at page 18, line 5
o "netbios-name" from [MS-NBTE], Section 2.2.1. o "netbios-name" from [MS-NBTE], Section 2.2.1.
o "fqdn" from [RFC1035] or [RFC1123] o "fqdn" from [RFC1035] or [RFC1123]
o "ip-address" from Section 2.1 of [RFC1123], or Section 2.2 of o "ip-address" from Section 2.1 of [RFC1123], or Section 2.2 of
[RFC4291]. [RFC4291].
The precise format of "sharename" depends on the protocol; see: SMB The precise format of "sharename" depends on the protocol; see: SMB
[MS-SMB], NFS [RFC3530], NCP [NOVELL]. [MS-SMB], NFS [RFC3530], NCP [NOVELL].
Appendix F. Collected Rules
Here are the collected syntax rules for all optional appendices,
presented for convenience.
file-URI = file-scheme ":" file-hier-part
file-scheme = "file"
file-hier-part = "//" auth-path
/ local-path
auth-path = [ file-auth ] path-absolute
/ [ file-auth ] file-absolute
/ unc-authority path-absolute
local-path = [ drive-letter ] path-absolute
/ file-absolute
file-auth = [ userinfo "@" ] host
unc-authority = 2*3"/" [ userinfo "@" ] file-host
file-host = inline-IP / IPv4address / reg-name
inline-IP = "%5B" ( IPv6address / IPvFuture ) "%5D"
file-absolute = "/" drive-letter path-absolute
drive-letter = ALPHA ":"
/ ALPHA "|"
This collected syntax is intended to support file URIs that take the
following forms:
Local files:
o "file:///path/to/file"
A traditional file URI for a local file, with an empty
authority.
o "file:/path/to/file"
The minimal representation of a local file, with no authority
field and an absolute path that begins with a slash "/".
o "file:c:/path/to/file"
The minimal representation of a local file in a DOS- or
Windows-based environment, with no authority field and an
absolute path that begins with a drive letter.
o "file:///c|/path/to/file"
o "file:/c|/path/to/file"
o "file:c|/path/to/file"
Regular DOS or Windows file URIs, with vertical line characters
in the drive letter construct.
Non-local files:
o "file://host.example.com/path/to/file"
The representation of a non-local file, with an explicit
authority.
o "file:////host.example.com/path/to/file"
The "traditional" representation of a non-local file, with an
empty authority and a complete (transformed) UNC string in the
path.
o "file://///host.example.com/path/to/file"
As above, with an extra slash between the empty authority and
the transformed UNC string.
Author's Address Author's Address
Matthew Kerwin Matthew Kerwin
QUT Queensland University of Technology
Victoria Park Road
Kelvin Grove, QLD 4059
Australia
Email: matthew.kerwin@qut.edu.au Email: matthew.kerwin@qut.edu.au
 End of changes. 32 change blocks. 
56 lines changed or deleted 177 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/