idnits 2.17.1 draft-yevstifeyev-ftp-uri-scheme-00.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year (Using the creation date from RFC959, updated by this document, for RFC5378 checks: 1985-10-01) -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (May 20, 2011) is 4725 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) ** Obsolete normative reference: RFC 793 (Obsoleted by RFC 9293) -- Duplicate reference: RFC3986, mentioned in 'RFC2396', was also mentioned in 'RFC3986'. -- Obsolete informational reference (is this intentional?): RFC 3536 (Obsoleted by RFC 6365) -- Duplicate reference: RFC4266, mentioned in 'RFC4266', was also mentioned in 'RFC1738'. -- Obsolete informational reference (is this intentional?): RFC 4395 (Obsoleted by RFC 7595) Summary: 1 error (**), 0 flaws (~~), 1 warning (==), 6 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 INTERNET-DRAFT M. Yevstifeyev 3 Intended Status: Standards Track May 20, 2011 4 Updates: 959, 1738 (if approved) 5 Expires: November 21, 2011 7 The 'ftp' URI Scheme 8 draft-yevstifeyev-ftp-uri-scheme-00 10 Abstract 12 This document specifies the 'ftp' Uniform Resource Identifier (URI) 13 scheme, that is used to refer to resources accessible via File 14 Transfer Protocol (FTP). It updates RFC 959 and RFC 1738. 16 Status of this Memo 18 This Internet-Draft is submitted to IETF in full conformance with the 19 provisions of BCP 78 and BCP 79. 21 Internet-Drafts are working documents of the Internet Engineering 22 Task Force (IETF), its areas, and its working groups. Note that 23 other groups may also distribute working documents as 24 Internet-Drafts. 26 Internet-Drafts are draft documents valid for a maximum of six months 27 and may be updated, replaced, or obsoleted by other documents at any 28 time. It is inappropriate to use Internet-Drafts as reference 29 material or to cite them other than as "work in progress." 31 The list of current Internet-Drafts can be accessed at 32 http://www.ietf.org/1id-abstracts.html 34 The list of Internet-Draft Shadow Directories can be accessed at 35 http://www.ietf.org/shadow.html 37 Copyright and License Notice 39 Copyright (c) 2011 IETF Trust and the persons identified as the 40 document authors. All rights reserved. 42 This document is subject to BCP 78 and the IETF Trust's Legal 43 Provisions Relating to IETF Documents 44 (http://trustee.ietf.org/license-info) in effect on the date of 45 publication of this document. Please review these documents 46 carefully, as they describe your rights and restrictions with respect 47 to this document. Code Components extracted from this document must 48 include Simplified BSD License text as described in Section 4.e of 49 the Trust Legal Provisions and are provided without warranty as 50 described in the Simplified BSD License. 52 Table of Contents 54 1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 2 55 1.1 Terminology . . . . . . . . . . . . . . . . . . . . . . . . 3 56 2. URI Scheme Specification . . . . . . . . . . . . . . . . . . . 3 57 2.1. URI Scheme Syntax . . . . . . . . . . . . . . . . . . . . . 3 58 2.2. URI Scheme Semantics . . . . . . . . . . . . . . . . . . . 3 59 2.2.1. The Part . . . . . . . . . . . . . . . . . 4 60 2.2.2. The Part . . . . . . . . . . . . . . . . . 5 61 2.2.3. The Part . . . . . . . . . . . . . . . . . . 5 62 2.2.3.1. A Note on Part . . . . . . . . . . 5 63 2.3. Encoding Considerations . . . . . . . . . . . . . . . . . . 5 64 3. Security Considerations . . . . . . . . . . . . . . . . . . . 6 65 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6 66 5. References . . . . . . . . . . . . . . . . . . . . . . . . . . 7 67 5.1. Normative References . . . . . . . . . . . . . . . . . . . 7 68 5.2. Informative References . . . . . . . . . . . . . . . . . . 7 69 Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . . 8 70 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 9 72 1 Introduction 74 File Transfer Protocol (FTP) is a standard network protocol used to 75 copy a file from one host to another over a TCP-based network. It 76 has had a very long history; the protocol is rooted in the early 77 1970s, the times of ARPANET, with the first specification being RFC 78 114 [RFC0114]; however, the most current FTP specification is RFC 959 79 [RFC0959]. (Also visit Section 4 pf RFC 1123 [RFC1123] for 80 "narrative" description of FTP.) 82 Historically, there has been a Uniform Resource Identifier (URI) 83 scheme for referencing resources accessible via FTP - 'ftp' URI 84 scheme. The first mention of it appears in RFC 1630 [RFC1630] - pre- 85 Standard Track RFC on URIs. Later, RFC 1738 [RFC1738], Section 3.2 86 specified this scheme on IETF Standards Track. Subsequently, RFC 87 1738 was formally obsoleted by RFC 4248 [RFC4248] and RFC 4266 88 [RFC4266]; in fact RFC 2396 [RFC2396] and its successor - RFC 3986 89 [RFC3986] - replaced and deprecated it (formally they both updated 90 RFC 1738). Currently, almost all of URI schemes specified in RFC 91 1738 have been given a separate specification; one of the rare 92 exceptions is the 'ftp' URI scheme. This document removes this 93 uncertainty; it gives the 'ftp' URI scheme an official, Standard 94 Track documentation. It updates RFC 959 [RFC0959] and RFC 1738 95 [RFC1738]. 97 Please note that the 'ftp' and 'file' URI schemes are not the same, 98 even though they both might refer to the resource on the local host. 100 Generic URI syntax is described in RFC 3986 [RFC3986]; registration 101 procedures for new URI schemes - in RFC 4395 [RFC4395]. 103 1.1 Terminology 105 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 106 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 107 document are to be interpreted as described in RFC 2119 [RFC2119]. 109 2. URI Scheme Specification 111 2.1. URI Scheme Syntax 113 The 'ftp' URI takes the form of rule below, specified using 114 Augmented Backus-Naur Form (ABNF) [RFC5234]: 116 ftp-uri = "ftp:" ftp-hier-part 117 ftp-hier-part = "//" [user-pass "@"] host-port [ftp-path] 118 user-pass = user [":" pass] 119 user = *usp-char 120 pass = *usp-char 121 usp-char = *(unreserved / pct-encoded / sub-delims) 122 host-port = host [":" port] 123 ftp-path = path-abempty [typecode-part] 124 typecode-part = ";typecode=" typecode 125 typecode = "a" / "i" / "d" 127 where the , , , , 128 and rules are defined in RFC 3986 [RFC3986], Appendix 129 A. The semantics of each part are defined below, in Section 2.2. 131 2.2. URI Scheme Semantics 133 The 'ftp' URI specifies either a FTP server for establishing a 134 connection (when is omitted) or a resource on such FTP 135 server (when is present). 137 The application resolving the 'ftp' URI SHALL follow the following 138 algorithm: 140 o Request the password, if not supplied in the URI (per Section 141 2.1.1); 143 o Establish the Transmission Control Protocol (TCP) [RFC0793] 144 connection to the resource identified by the on the port 145 identified by the (or 21, if not supplied there); 147 o Authenticate itself to the server, using either the credentials of 148 the URI, those requested from the user or anonymous FTP [RFC1635]; 150 o Perform a series of commands according to part (see 151 Section 2.2.3). 153 'ftp' URIs may also be used for other operations; for instance, it is 154 possible to update or remove a file on a remote file server. The 155 mechanism for doing so is not specified in this document. 157 Note: The 'ftp' URI scheme supports FTP over TCP only; such 158 derivations as FTP over User Datagram Protocol (UDP) [RFC0768] are 159 not supported by it. 161 More detailed description of each URI's parts' semantics is below. 163 2.2.1. The Part 165 The part of the 'ftp' URI specifies the user name that will be 166 used for FTP authentication; part - the password. The user 167 name and password SHALL be transmitted using the "USER" and "PASS" 168 FTP commands, respectively, defined in RFC 959 [RFC0959]. The user 169 name and password are delimited by the colon (":") character (ASCII 170 [ASCII] character 0x3A). 172 The part is OPTIONAL in 'ftp' URIs. Thus, if the whole 173 part is omitted, the following "anonymous FTP" convention 174 [RFC1635] SHALL be used: 176 (1) the user name "anonymous"; and 178 (2) the password that is an e-mail address [RFC5322] of the client is 179 supplied. 181 The part in the is OPTIONAL as well. Therefore, 182 if there is a user name but no password supplied in the 'ftp' URI, it 183 SHALL be requested from the user. 185 The and parts of the URI is composed of the characters 186 of ABNF production; any other characters SHALL be percent- 187 encoded if occur in these parts. The rule includes 188 characters allowed in RFC 3986 production, excluding the 189 colon (":") character, whose use is explicitly specified above. 191 RFC 3986 deprecated the use of "user:pass" pair in the 192 part of URIs. However, for some historical reasons, the benefits of 193 the use of such construction for denoting the user information are 194 valuable enough to overlook this issue. 196 2.2.2. The Part 198 The part specifies the FTP server the resource identified 199 by a particular 'ftp' URI is located on. 201 If the ":" is omitted, the port SHALL default to 21, as 202 registered in [IANA-PORTREG]. 204 2.2.3. The Part 206 The part, which is OPTIONAL, has the following non- 207 normative syntax: 209 //...//;type= 211 where ";type=" is OPTIONAL as well. This part SHALL be 212 interpreted as follows (in this algorithm productions from the 213 aforementioned non-normative syntax are enclosed in angle brackets): 215 (1) each of parts are consistently supplied as arguments to 216 the CWD (change working directory) FTP command after 217 establishing the FTP connection to the server identified by the 218 part of the URI; 220 (2a) if the is equal to "d", the NLST (name list) FTP 221 command (see Section 4.1.3 of RFC 959 [RFC0959]) with as 222 the argument is sent out; 224 (2b) otherwise, the TYPE FTP command (see Section 3.1.1 of RFC 959 225 [RFC0959]) with the as an argument is performed; and 227 (3) access the file identified by the in an appropriate way. 229 2.2.3.1. A Note on Part 231 The part has rarely been seen in the wide 232 development. It is not often used in 'ftp' URIs and is included in 233 this specification for historical reasons. Thus, if the is omitted, the client program interpreting the URI SHOULD 235 guess the appropriate mode to use. 237 2.3. Encoding Considerations 239 The 'ftp' URIs may contain characters form the Universal Character 240 Set (UCS) [UCS], encoded using UTF-8 character encoding [RFC3629], as 241 suggested by RFC 3986 [RFC3986]. Those octets that do not correspond 242 to the characters in the unreserved set of RFC 3986 SHALL be percent- 243 encoded. In fact, there are no other encoding considerations for 244 'ftp' URIs not discussed in Section 2 of RFC 3986. 246 Please visit RFC 3536 [RFC3536] for definitions of the terms related 247 to encoding and internalization. 249 3. Security Considerations 251 Generic security considerations for URIs are discussed in Section 7 252 of RFC 3986 [RFC3986]. 254 Security considerations for FTP are addressed in RFC 2577 [RFC2577]. 255 RFC 2228 [RFC2228] and RFC 4217 [RFC4217] provided a bunch of ways 256 for securing FTP. 258 4. IANA Considerations 260 IANA is asked to update the registration of the 'ftp' URI scheme 261 using the following template, per RFC 4395 [RFC4395]: 263 o URI scheme name: ftp 265 o Status: Permanent 267 o URI scheme syntax: see Section 2.1 of RFC xxxx 269 o URI scheme semantics: see Section 2.2 of RFC xxxx 271 o URI scheme encoding considerations: see Section 2.3 of RFC xxxx 273 o Protocols that use the scheme: File Transfer Protocol (FTP) 274 [RFC0959] 276 o Security considerations: see Section 3 of RFC xxxx 278 o Contact: IESG 280 o Author/Change controller: IETF 282 o References: see Section 5 of RFC xxxx 284 [RFC Editor: Please replace xxxx with assigned RFC number] 286 5. References 288 5.1. Normative References 290 [RFC0793] Postel, J., "Transmission Control Protocol", STD 7, 291 RFC 793, September 1981. 293 [RFC0959] Postel, J. and J. Reynolds, "File Transfer Protocol", STD 294 9, RFC 959, October 1985. 296 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 297 Requirement Levels", BCP 14, RFC 2119, March 1997. 299 [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO 300 10646", STD 63, RFC 3629, November 2003. 302 [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform 303 Resource Identifier (URI): Generic Syntax", STD 66, 304 RFC 3986, January 2005. 306 [RFC5234] Crocker, D., Ed., and P. Overell, "Augmented BNF for 307 Syntax Specifications: ABNF", STD 68, RFC 5234, January 308 2008. 310 5.2. Informative References 312 [ASCII] American National Standards Institute (ANSI), "Coded 313 Character Set -- 7-bit American Standard Code for 314 Information Interchange", ANSI X3.4, 1986. 316 [IANA-PORTREG] 317 Internet Assigned Numbers Authority (IANA), "Port 318 Numbers". 320 [RFC0114] Bhushan, A., "File Transfer Protocol", RFC 114, April 321 1971. 323 [RFC0768] Postel, J., "User Datagram Protocol", STD 6, RFC 768, 324 August 1980. 326 [RFC1123] Braden, R., Ed., "Requirements for Internet Hosts - 327 Application and Support", STD 3, RFC 1123, October 1989. 329 [RFC1630] Berners-Lee, T., "Universal Resource Identifiers in WWW: A 330 Unifying Syntax for the Expression of Names and Addresses 331 of Objects on the Network as used in the World-Wide Web", 332 RFC 1630, June 1994. 334 [RFC1635] Deutsch, P., Emtage, A., and A. Marine, "How to Use 335 Anonymous FTP", FYI 24, RFC 1635, May 1994. 337 [RFC1738] Berners-Lee, T., Masinter, L., and M. McCahill, "Uniform 338 Resource Locators (URL)", RFC 1738, December 1994. 339 Obsoleted by RFC4248, RFC4266. 341 [RFC2228] Horowitz, M. and S. Lunt, "FTP Security Extensions", 342 RFC 2228, October 1997. 344 [RFC2396] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform 345 Resource Identifiers (URI): Generic Syntax", RFC 2396, 346 August 1998. Obsoleted by RFC3986. 348 [RFC2577] Allman, M. and S. Ostermann, "FTP Security 349 Considerations", RFC 2577, May 1999. 351 [RFC3536] Hoffman, P., "Terminology Used in Internationalization in 352 the IETF", RFC 3536, May 2003. 354 [RFC4217] Ford-Hutchinson, P., "Securing FTP with TLS", RFC 4217, 355 October 2005. 357 [RFC4248] Hoffman, P., "The telnet URI Scheme", RFC 4248, October 358 2005. 360 [RFC4266] Hoffman, P., "The gopher URI Scheme", RFC 4266, November 361 2005. 363 [RFC4395] Hansen, T., Hardie, T., and L. Masinter, "Guidelines and 364 Registration Procedures for New URI Schemes", BCP 35, 365 RFC 4395, February 2006. 367 [RFC5322] Resnick, P., Ed., "Internet Message Format", RFC 5322, 368 October 2008. 370 [UCS] International Organization for Standardization (ISO), 371 "Information Technology - Universal Multiple-Octet Coded 372 Character Set (UCS)", ISO/IEC Standard 10646, December 373 2003. 375 Appendix A. Acknowledgments 377 The authors of RFC 1738 were Tim Berners-Lee, Larry Masinter and Mark 378 McCahill, who worked on the initial 'ftp' URI scheme definition. 379 Another attempts to specify this URI scheme were undertaken by Paul 380 Hoffman, {who else?}. 382 Considerable input to this document was provided by {TBD}. 384 Authors' Addresses 386 Mykyta Yevstifeyev 387 8 Kuzovkov St., flat 25 388 Kotovsk 389 Ukraine 391 EMail: evnikita2@gmail.com