File Transfer: FTP: Chapter 2
File Transfer: FTP: Chapter 2
File Transfer: FTP: Chapter 2
We see that in response to the conditional GET, the Web server still sends a response
message but does not include the requested object in the response message. Including
the requested object would only waste bandwidth and increase user-perceived response
time, particularly if the object is large. Note that this last response message has 304
Not Modified in the status line, which tells the cache that it can go ahead and for-
ward its (the proxy cache’s) cached copy of the object to the requesting browser.
This ends our discussion of HTTP, the first Internet protocol (an application-layer
protocol) that we’ve studied in detail. We’ve seen the format of HTTP messages and
the actions taken by the Web client and server as these messages are sent and received.
We’ve also studied a bit of the Web’s application infrastructure, including caches, cook-
ies, and back-end databases, all of which are tied in some way to the HTTP protocol.
User
or host
Figure 2.14 FTP moves files between local and remote file systems
2.3 • FILE TRANSFER: FTP 117
HTTP and FTP are both file transfer protocols and have many common charac-
teristics; for example, they both run on top of TCP. However, the two application-layer
protocols have some important differences. The most striking difference is that FTP
uses two parallel TCP connections to transfer a file, a control connection and a data
connection. The control connection is used for sending control information between
the two hosts—information such as user identification, password, commands to
change remote directory, and commands to “put” and “get” files. The data connection
is used to actually send a file. Because FTP uses a separate control connection, FTP is
said to send its control information out-of-band. HTTP, as you recall, sends request
and response header lines into the same TCP connection that carries the transferred
file itself. For this reason, HTTP is said to send its control information in-band. In the
next section, we’ll see that SMTP, the main protocol for electronic mail, also sends
control information in-band. The FTP control and data connections are illustrated in
Figure 2.15.
When a user starts an FTP session with a remote host, the client side of FTP
(user) first initiates a control TCP connection with the server side (remote host) on
server port number 21. The client side of FTP sends the user identification and
password over this control connection. The client side of FTP also sends, over the
control connection, commands to change the remote directory. When the server
side receives a command for a file transfer over the control connection (either to,
or from, the remote host), the server side initiates a TCP data connection to the
client side. FTP sends exactly one file over the data connection and then closes the
data connection. If, during the same session, the user wants to transfer another file,
FTP opens another data connection. Thus, with FTP, the control connection
remains open throughout the duration of the user session, but a new data connec-
tion is created for each file transferred within a session (that is, the data connec-
tions are non-persistent).
Throughout a session, the FTP server must maintain state about the user. In par-
ticular, the server must associate the control connection with a specific user account,
and the server must keep track of the user’s current directory as the user wanders
about the remote directory tree. Keeping track of this state information for each
ongoing user session significantly constrains the total number of sessions that FTP
can maintain simultaneously. Recall that HTTP, on the other hand, is stateless—it
does not have to keep track of any user state.
118 CHAPTER 2 • APPLICATION LAYER
Readers who are interested in learning about the other FTP commands and replies
are encouraged to read RFC 959.