diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2007-11-23 21:43:40 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2007-11-23 21:43:40 +0000 |
commit | 8ec6ee47f1e70ff25518ad6455e68d45d7ce1b87 (patch) | |
tree | 529fa06cd4c0aa05a3a4c200dad958b00c330545 | |
parent | 5bc593ccb8502703bd09a7cdc5a036fc748aa91e (diff) | |
download | busybox-w32-8ec6ee47f1e70ff25518ad6455e68d45d7ce1b87.tar.gz busybox-w32-8ec6ee47f1e70ff25518ad6455e68d45d7ce1b87.tar.bz2 busybox-w32-8ec6ee47f1e70ff25518ad6455e68d45d7ce1b87.zip |
Add an RFC for future ipv6 ftp work
-rw-r--r-- | networking/ftp_ipv6_rfc2428.txt | 451 |
1 files changed, 451 insertions, 0 deletions
diff --git a/networking/ftp_ipv6_rfc2428.txt b/networking/ftp_ipv6_rfc2428.txt new file mode 100644 index 000000000..a6ec3535e --- /dev/null +++ b/networking/ftp_ipv6_rfc2428.txt | |||
@@ -0,0 +1,451 @@ | |||
1 | |||
2 | |||
3 | |||
4 | |||
5 | |||
6 | |||
7 | Network Working Group M. Allman | ||
8 | Request for Comments: 2428 NASA Lewis/Sterling Software | ||
9 | Category: Standards Track S. Ostermann | ||
10 | Ohio University | ||
11 | C. Metz | ||
12 | The Inner Net | ||
13 | September 1998 | ||
14 | |||
15 | |||
16 | FTP Extensions for IPv6 and NATs | ||
17 | |||
18 | Status of this Memo | ||
19 | |||
20 | This document specifies an Internet standards track protocol for the | ||
21 | Internet community, and requests discussion and suggestions for | ||
22 | improvements. Please refer to the current edition of the "Internet | ||
23 | Official Protocol Standards" (STD 1) for the standardization state | ||
24 | and status of this protocol. Distribution of this memo is unlimited. | ||
25 | |||
26 | Copyright Notice | ||
27 | |||
28 | Copyright (C) The Internet Society (1998). All Rights Reserved. | ||
29 | |||
30 | Abstract | ||
31 | |||
32 | The specification for the File Transfer Protocol assumes that the | ||
33 | underlying network protocol uses a 32-bit network address | ||
34 | (specifically IP version 4). With the deployment of version 6 of the | ||
35 | Internet Protocol, network addresses will no longer be 32-bits. This | ||
36 | paper specifies extensions to FTP that will allow the protocol to | ||
37 | work over IPv4 and IPv6. In addition, the framework defined can | ||
38 | support additional network protocols in the future. | ||
39 | |||
40 | 1. Introduction | ||
41 | |||
42 | The keywords, such as MUST and SHOULD, found in this document are | ||
43 | used as defined in RFC 2119 [Bra97]. | ||
44 | |||
45 | The File Transfer Protocol [PR85] only provides the ability to | ||
46 | communicate information about IPv4 data connections. FTP assumes | ||
47 | network addresses will be 32 bits in length. However, with the | ||
48 | deployment of version 6 of the Internet Protocol [DH96] addresses | ||
49 | will no longer be 32 bits long. RFC 1639 [Pis94] specifies | ||
50 | extensions to FTP to enable its use over various network protocols. | ||
51 | Unfortunately, the mechanism can fail in a multi-protocol | ||
52 | environment. During the transition between IPv4 and IPv6, FTP needs | ||
53 | the ability to negotiate the network protocol that will be used for | ||
54 | data transfer. | ||
55 | |||
56 | |||
57 | |||
58 | Allman, et. al. Standards Track [Page 1] | ||
59 | |||
60 | RFC 2428 FTP Extensions for IPv6 and NATs September 1998 | ||
61 | |||
62 | |||
63 | This document provides a specification for a way that FTP can | ||
64 | communicate data connection endpoint information for network | ||
65 | protocols other than IPv4. In this specification, the FTP commands | ||
66 | PORT and PASV are replaced with EPRT and EPSV, respectively. This | ||
67 | document is organized as follows. Section 2 outlines the EPRT | ||
68 | command and Section 3 outlines the EPSV command. Section 4 defines | ||
69 | the utilization of these two new FTP commands. Section 5 briefly | ||
70 | presents security considerations. Finally, Section 6 provides | ||
71 | conclusions. | ||
72 | |||
73 | 2. The EPRT Command | ||
74 | |||
75 | The EPRT command allows for the specification of an extended address | ||
76 | for the data connection. The extended address MUST consist of the | ||
77 | network protocol as well as the network and transport addresses. The | ||
78 | format of EPRT is: | ||
79 | |||
80 | EPRT<space><d><net-prt><d><net-addr><d><tcp-port><d> | ||
81 | |||
82 | The EPRT command keyword MUST be followed by a single space (ASCII | ||
83 | 32). Following the space, a delimiter character (<d>) MUST be | ||
84 | specified. The delimiter character MUST be one of the ASCII | ||
85 | characters in range 33-126 inclusive. The character "|" (ASCII 124) | ||
86 | is recommended unless it coincides with a character needed to encode | ||
87 | the network address. | ||
88 | |||
89 | The <net-prt> argument MUST be an address family number defined by | ||
90 | IANA in the latest Assigned Numbers RFC (RFC 1700 [RP94] as of the | ||
91 | writing of this document). This number indicates the protocol to be | ||
92 | used (and, implicitly, the address length). This document will use | ||
93 | two of address family numbers from [RP94] as examples, according to | ||
94 | the following table: | ||
95 | |||
96 | AF Number Protocol | ||
97 | --------- -------- | ||
98 | 1 Internet Protocol, Version 4 [Pos81a] | ||
99 | 2 Internet Protocol, Version 6 [DH96] | ||
100 | |||
101 | The <net-addr> is a protocol specific string representation of the | ||
102 | network address. For the two address families specified above (AF | ||
103 | Number 1 and 2), addresses MUST be in the following format: | ||
104 | |||
105 | AF Number Address Format Example | ||
106 | --------- -------------- ------- | ||
107 | 1 dotted decimal 132.235.1.2 | ||
108 | 2 IPv6 string 1080::8:800:200C:417A | ||
109 | representations | ||
110 | defined in [HD96] | ||
111 | |||
112 | |||
113 | |||
114 | Allman, et. al. Standards Track [Page 2] | ||
115 | |||
116 | RFC 2428 FTP Extensions for IPv6 and NATs September 1998 | ||
117 | |||
118 | |||
119 | The <tcp-port> argument must be the string representation of the | ||
120 | number of the TCP port on which the host is listening for the data | ||
121 | connection. | ||
122 | |||
123 | The following are sample EPRT commands: | ||
124 | |||
125 | EPRT |1|132.235.1.2|6275| | ||
126 | |||
127 | EPRT |2|1080::8:800:200C:417A|5282| | ||
128 | |||
129 | The first command specifies that the server should use IPv4 to open a | ||
130 | data connection to the host "132.235.1.2" on TCP port 6275. The | ||
131 | second command specifies that the server should use the IPv6 network | ||
132 | protocol and the network address "1080::8:800:200C:417A" to open a | ||
133 | TCP data connection on port 5282. | ||
134 | |||
135 | Upon receipt of a valid EPRT command, the server MUST return a code | ||
136 | of 200 (Command OK). The standard negative error code 500 and 501 | ||
137 | [PR85] are sufficient to handle most errors (e.g., syntax errors) | ||
138 | involving the EPRT command. However, an additional error code is | ||
139 | needed. The response code 522 indicates that the server does not | ||
140 | support the requested network protocol. The interpretation of this | ||
141 | new error code is: | ||
142 | |||
143 | 5yz Negative Completion | ||
144 | x2z Connections | ||
145 | xy2 Extended Port Failure - unknown network protocol | ||
146 | |||
147 | The text portion of the response MUST indicate which network | ||
148 | protocols the server does support. If the network protocol is | ||
149 | unsupported, the format of the response string MUST be: | ||
150 | |||
151 | <text stating that the network protocol is unsupported> \ | ||
152 | (prot1,prot2,...,protn) | ||
153 | |||
154 | Both the numeric code specified above and the protocol information | ||
155 | between the characters '(' and ')' are intended for the software | ||
156 | automata receiving the response; the textual message between the | ||
157 | numeric code and the '(' is intended for the human user and can be | ||
158 | any arbitrary text, but MUST NOT include the characters '(' and ')'. | ||
159 | In the above case, the text SHOULD indicate that the network protocol | ||
160 | in the EPRT command is not supported by the server. The list of | ||
161 | protocols inside the parenthesis MUST be a comma separated list of | ||
162 | address family numbers. Two example response strings follow: | ||
163 | |||
164 | Network protocol not supported, use (1) | ||
165 | |||
166 | Network protocol not supported, use (1,2) | ||
167 | |||
168 | |||
169 | |||
170 | Allman, et. al. Standards Track [Page 3] | ||
171 | |||
172 | RFC 2428 FTP Extensions for IPv6 and NATs September 1998 | ||
173 | |||
174 | |||
175 | 3. The EPSV Command | ||
176 | |||
177 | The EPSV command requests that a server listen on a data port and | ||
178 | wait for a connection. The EPSV command takes an optional argument. | ||
179 | The response to this command includes only the TCP port number of the | ||
180 | listening connection. The format of the response, however, is | ||
181 | similar to the argument of the EPRT command. This allows the same | ||
182 | parsing routines to be used for both commands. In addition, the | ||
183 | format leaves a place holder for the network protocol and/or network | ||
184 | address, which may be needed in the EPSV response in the future. The | ||
185 | response code for entering passive mode using an extended address | ||
186 | MUST be 229. The interpretation of this code, according to [PR85] | ||
187 | is: | ||
188 | |||
189 | 2yz Positive Completion | ||
190 | x2z Connections | ||
191 | xy9 Extended Passive Mode Entered | ||
192 | |||
193 | The text returned in response to the EPSV command MUST be: | ||
194 | |||
195 | <text indicating server is entering extended passive mode> \ | ||
196 | (<d><d><d><tcp-port><d>) | ||
197 | |||
198 | The portion of the string enclosed in parentheses MUST be the exact | ||
199 | string needed by the EPRT command to open the data connection, as | ||
200 | specified above. | ||
201 | |||
202 | The first two fields contained in the parenthesis MUST be blank. The | ||
203 | third field MUST be the string representation of the TCP port number | ||
204 | on which the server is listening for a data connection. The network | ||
205 | protocol used by the data connection will be the same network | ||
206 | protocol used by the control connection. In addition, the network | ||
207 | address used to establish the data connection will be the same | ||
208 | network address used for the control connection. An example response | ||
209 | string follows: | ||
210 | |||
211 | Entering Extended Passive Mode (|||6446|) | ||
212 | |||
213 | The standard negative error codes 500 and 501 are sufficient to | ||
214 | handle all errors involving the EPSV command (e.g., syntax errors). | ||
215 | |||
216 | When the EPSV command is issued with no argument, the server will | ||
217 | choose the network protocol for the data connection based on the | ||
218 | protocol used for the control connection. However, in the case of | ||
219 | proxy FTP, this protocol might not be appropriate for communication | ||
220 | between the two servers. Therefore, the client needs to be able to | ||
221 | request a specific protocol. If the server returns a protocol that | ||
222 | is not supported by the host that will be connecting to the port, the | ||
223 | |||
224 | |||
225 | |||
226 | Allman, et. al. Standards Track [Page 4] | ||
227 | |||
228 | RFC 2428 FTP Extensions for IPv6 and NATs September 1998 | ||
229 | |||
230 | |||
231 | client MUST issue an ABOR (abort) command to allow the server to | ||
232 | close down the listening connection. The client can then send an | ||
233 | EPSV command requesting the use of a specific network protocol, as | ||
234 | follows: | ||
235 | |||
236 | EPSV<space><net-prt> | ||
237 | |||
238 | If the requested protocol is supported by the server, it SHOULD use | ||
239 | the protocol. If not, the server MUST return the 522 error messages | ||
240 | as outlined in section 2. | ||
241 | |||
242 | Finally, the EPSV command can be used with the argument "ALL" to | ||
243 | inform Network Address Translators that the EPRT command (as well as | ||
244 | other data commands) will no longer be used. An example of this | ||
245 | command follows: | ||
246 | |||
247 | EPSV<space>ALL | ||
248 | |||
249 | Upon receipt of an EPSV ALL command, the server MUST reject all data | ||
250 | connection setup commands other than EPSV (i.e., EPRT, PORT, PASV, et | ||
251 | al.). This use of the EPSV command is further explained in section | ||
252 | 4. | ||
253 | |||
254 | 4. Command Usage | ||
255 | |||
256 | For all FTP transfers where the control and data connection(s) are | ||
257 | being established between the same two machines, the EPSV command | ||
258 | MUST be used. Using the EPSV command benefits performance of | ||
259 | transfers that traverse firewalls or Network Address Translators | ||
260 | (NATs). RFC 1579 [Bel94] recommends using the passive command when | ||
261 | behind firewalls since firewalls do not generally allow incoming | ||
262 | connections (which are required when using the PORT (EPRT) command). | ||
263 | In addition, using EPSV as defined in this document does not require | ||
264 | NATs to change the network address in the traffic as it is forwarded. | ||
265 | The NAT would have to change the address if the EPRT command was | ||
266 | used. Finally, if the client issues an "EPSV ALL" command, NATs may | ||
267 | be able to put the connection on a "fast path" through the | ||
268 | translator, as the EPRT command will never be used and therefore, | ||
269 | translation of the data portion of the segments will never be needed. | ||
270 | When a client only expects to do two-way FTP transfers, it SHOULD | ||
271 | issue this command as soon as possible. If a client later finds that | ||
272 | it must do a three-way FTP transfer after issuing an EPSV ALL | ||
273 | command, a new FTP session MUST be started. | ||
274 | |||
275 | |||
276 | |||
277 | |||
278 | |||
279 | |||
280 | |||
281 | |||
282 | Allman, et. al. Standards Track [Page 5] | ||
283 | |||
284 | RFC 2428 FTP Extensions for IPv6 and NATs September 1998 | ||
285 | |||
286 | |||
287 | 5. Security Issues | ||
288 | |||
289 | The authors do not believe that these changes to FTP introduce new | ||
290 | security problems. A companion Work in Progress [AO98] is a more | ||
291 | general discussion of FTP security issues and techniques to reduce | ||
292 | these security problems. | ||
293 | |||
294 | 6. Conclusions | ||
295 | |||
296 | The extensions specified in this paper will enable FTP to operate | ||
297 | over a variety of network protocols. | ||
298 | |||
299 | References | ||
300 | |||
301 | [AO98] Allman, M., and S. Ostermann, "FTP Security | ||
302 | Considerations", Work in Progress. | ||
303 | |||
304 | [Bel94] Bellovin, S., "Firewall-Friendly FTP", RFC 1579, February | ||
305 | 1994. | ||
306 | |||
307 | [Bra97] Bradner, S., "Key words for use in RFCs to Indicate | ||
308 | Requirement Levels", BCP 14, RFC 2119, March 1997. | ||
309 | |||
310 | [DH96] Deering, S., and R. Hinden, "Internet Protocol, Version 6 | ||
311 | (IPv6) Specification", RFC 1883, December 1995. | ||
312 | |||
313 | [HD96] Hinden, R., and S. Deering, "IP Version 6 Addressing | ||
314 | Architecture", RFC 2373, July 1998. | ||
315 | |||
316 | [Pis94] Piscitello, D., "FTP Operation Over Big Address Records | ||
317 | (FOOBAR)", RFC 1639, June 1994. | ||
318 | |||
319 | [Pos81a] Postel, J., "Internet Protocol", STD 5, RFC 791, September | ||
320 | 1981. | ||
321 | |||
322 | [Pos81b] Postel, J., "Transmission Control Protocol", STD 7, RFC 793, | ||
323 | September 1981. | ||
324 | |||
325 | [PR85] Postel, J., and J. Reynolds, "File Transfer Protocol (FTP)", | ||
326 | STD 9, RFC 959, October 1985. | ||
327 | |||
328 | [RP94] Reynolds, J., and J. Postel, "Assigned Numbers", STD 2, RFC | ||
329 | 1700, October 1994. See also: | ||
330 | http://www.iana.org/numbers.html | ||
331 | |||
332 | |||
333 | |||
334 | |||
335 | |||
336 | |||
337 | |||
338 | Allman, et. al. Standards Track [Page 6] | ||
339 | |||
340 | RFC 2428 FTP Extensions for IPv6 and NATs September 1998 | ||
341 | |||
342 | |||
343 | Authors' Addresses | ||
344 | |||
345 | Mark Allman | ||
346 | NASA Lewis Research Center/Sterling Software | ||
347 | 21000 Brookpark Rd. MS 54-2 | ||
348 | Cleveland, OH 44135 | ||
349 | |||
350 | Phone: (216) 433-6586 | ||
351 | EMail: mallman@lerc.nasa.gov | ||
352 | http://gigahertz.lerc.nasa.gov/~mallman/ | ||
353 | |||
354 | |||
355 | Shawn Ostermann | ||
356 | School of Electrical Engineering and Computer Science | ||
357 | Ohio University | ||
358 | 416 Morton Hall | ||
359 | Athens, OH 45701 | ||
360 | |||
361 | Phone: (740) 593-1234 | ||
362 | EMail: ostermann@cs.ohiou.edu | ||
363 | |||
364 | |||
365 | Craig Metz | ||
366 | The Inner Net | ||
367 | Box 10314-1954 | ||
368 | Blacksburg, VA 24062-0314 | ||
369 | |||
370 | Phone: (DSN) 754-8590 | ||
371 | EMail: cmetz@inner.net | ||
372 | |||
373 | |||
374 | |||
375 | |||
376 | |||
377 | |||
378 | |||
379 | |||
380 | |||
381 | |||
382 | |||
383 | |||
384 | |||
385 | |||
386 | |||
387 | |||
388 | |||
389 | |||
390 | |||
391 | |||
392 | |||
393 | |||
394 | Allman, et. al. Standards Track [Page 7] | ||
395 | |||
396 | RFC 2428 FTP Extensions for IPv6 and NATs September 1998 | ||
397 | |||
398 | |||
399 | Full Copyright Statement | ||
400 | |||
401 | Copyright (C) The Internet Society (1998). All Rights Reserved. | ||
402 | |||
403 | This document and translations of it may be copied and furnished to | ||
404 | others, and derivative works that comment on or otherwise explain it | ||
405 | or assist in its implementation may be prepared, copied, published | ||
406 | and distributed, in whole or in part, without restriction of any | ||
407 | kind, provided that the above copyright notice and this paragraph are | ||
408 | included on all such copies and derivative works. However, this | ||
409 | document itself may not be modified in any way, such as by removing | ||
410 | the copyright notice or references to the Internet Society or other | ||
411 | Internet organizations, except as needed for the purpose of | ||
412 | developing Internet standards in which case the procedures for | ||
413 | copyrights defined in the Internet Standards process must be | ||
414 | followed, or as required to translate it into languages other than | ||
415 | English. | ||
416 | |||
417 | The limited permissions granted above are perpetual and will not be | ||
418 | revoked by the Internet Society or its successors or assigns. | ||
419 | |||
420 | This document and the information contained herein is provided on an | ||
421 | "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING | ||
422 | TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING | ||
423 | BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION | ||
424 | HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF | ||
425 | MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | ||
426 | |||
427 | |||
428 | |||
429 | |||
430 | |||
431 | |||
432 | |||
433 | |||
434 | |||
435 | |||
436 | |||
437 | |||
438 | |||
439 | |||
440 | |||
441 | |||
442 | |||
443 | |||
444 | |||
445 | |||
446 | |||
447 | |||
448 | |||
449 | |||
450 | Allman, et. al. Standards Track [Page 8] | ||
451 | |||