FTP Extensions for IPv6 and NATs
RFC 2428
Network Working Group M. Allman
Request for Comments: 2428 NASA Lewis/Sterling Software
Category: Standards Track S. Ostermann
Ohio University
C. Metz
The Inner Net
September 1998
FTP Extensions for IPv6 and NATs
Status of this Memo
This document specifies an Internet standards track protocol for the
Internet community, and requests discussion and suggestions for
improvements. Please refer to the current edition of the "Internet
Official Protocol Standards" (STD 1) for the standardization state
and status of this protocol. Distribution of this memo is unlimited.
Copyright Notice
Copyright (C) The Internet Society (1998). All Rights Reserved.
Abstract
The specification for the File Transfer Protocol assumes that the
underlying network protocol uses a 32-bit network address
(specifically IP version 4). With the deployment of version 6 of the
Internet Protocol, network addresses will no longer be 32-bits. This
paper specifies extensions to FTP that will allow the protocol to
work over IPv4 and IPv6. In addition, the framework defined can
support additional network protocols in the future.
1. Introduction
The keywords, such as MUST and SHOULD, found in this document are
used as defined in RFC 2119 [Bra97].
The File Transfer Protocol [PR85] only provides the ability to
communicate information about IPv4 data connections. FTP assumes
network addresses will be 32 bits in length. However, with the
deployment of version 6 of the Internet Protocol [DH96] addresses
will no longer be 32 bits long. RFC 1639 [Pis94] specifies
extensions to FTP to enable its use over various network protocols.
Unfortunately, the mechanism can fail in a multi-protocol
environment. During the transition between IPv4 and IPv6, FTP needs
the ability to negotiate the network protocol that will be used for
data transfer.
Allman, et. al. Standards Track [Page 1]
RFC 2428 FTP Extensions for IPv6 and NATs September 1998
This document provides a specification for a way that FTP can
communicate data connection endpoint information for network
protocols other than IPv4. In this specification, the FTP commands
PORT and PASV are replaced with EPRT and EPSV, respectively. This
document is organized as follows. Section 2 outlines the EPRT
command and Section 3 outlines the EPSV command. Section 4 defines
the utilization of these two new FTP commands. Section 5 briefly
presents security considerations. Finally, Section 6 provides
conclusions.
2. The EPRT Command
The EPRT command allows for the specification of an extended address
for the data connection. The extended address MUST consist of the
network protocol as well as the network and transport addresses. The
format of EPRT is:
EPRT<space><d><net-prt><d><net-addr><d><tcp-port><d>
The EPRT command keyword MUST be followed by a single space (ASCII
32). Following the space, a delimiter character (<d>) MUST be
specified. The delimiter character MUST be one of the ASCII
characters in range 33-126 inclusive. The character "|" (ASCII 124)
is recommended unless it coincides with a character needed to encode
the network address.
The <net-prt> argument MUST be an address family number defined by
IANA in the latest Assigned Numbers RFC (RFC 1700 [RP94] as of the
writing of this document). This number indicates the protocol to be
used (and, implicitly, the address length). This document will use
two of address family numbers from [RP94] as examples, according to
the following table:
AF Number Protocol
--------- --------
1 Internet Protocol, Version 4 [Pos81a]
2 Internet Protocol, Version 6 [DH96]
The <net-addr> is a protocol specific string representation of the
network address. For the two address families specified above (AF
Number 1 and 2), addresses MUST be in the following format:
AF Number Address Format Example
--------- -------------- -------
1 dotted decimal 132.235.1.2
2 IPv6 string 1080::8:800:200C:417A
representations
defined in [HD96]
Allman, et. al. Standards Track [Page 2]
RFC 2428 FTP Extensions for IPv6 and NATs September 1998
The <tcp-port> argument must be the string representation of the
number of the TCP port on which the host is listening for the data
Show full document text