FTP - File Transfer Protocol
TFTP – Trivial FTP
CISC 856 – Fall 2005
Michael Haggerty
University of Delaware
(some/most slides courtesy of
Umakanth Puppala and
Vikram Rajan)
haggerty@cis.udel.edu
Overview
File Transfer Protocol (RFC 959)
• Why FTP?
• FTP’s connections
• FTP in action
• FTP commands/responses
Trivial File Transfer Protocol (RFC 1350)
• TFTP and TFTP’s message formats
• FTP and TFTP compared
Why do we need a FTP
Service?
Purpose: To Transfer files between two computers
Goals of FTP Service
• Promote sharing of files (programs and/or data)
• Encourage indirect/implicit use of remote computers
• Shield users from variations in file storage among hosts
• Transfer data reliably and efficiently
Problems of File Transfer
• At first, file transfer may seem simple
• Heterogeneous systems use different:
– Operating Systems
– Character Sets
– Naming Conventions
– Directory Structures
– File Structures and Formats
• FTP need to address and resolve these
problems
FTP’s 2 Connections
client * Non-persistent
Persistent
*Server
Insulates
is
command
users
listening from
data
on port “raw”
21
*Server“raw”
* Routes uses FTP
portcommands
20
and reply
forFTP connection
commands
* connection
for connection requests
data server’s
Receives connections
replies
User
Interface
server
User Control Server
Protocol Protocol
Interpreter Connection 21 Interpreter
User Data Server
Data Transfer Data Transfer
Function Connection 20 Function
FTP’s 2 Connections – Establishment
ftp> open strauss.udel.edu
Connected to strauss.udel.edu
220 strauss FTP server ready.
client 530 Please login with USER and PASS
331 Password req for haggerty.
Password:
User 230 User haggerty logged in.
Interface ftp>
USER
PASS haggerty
mypass
server
User Server
Protocol Control Protocol
Interpreter Connection Interpreter
User Data Server
Data Transfer Data Transfer
Function Connection Function
FTP’s 2 Connections
Data Transfer
client ls client.txt
-rw-r--r-- haggerty client.txt
LIST client.txt
User 226 Closing Data Connection
Interface PORT 192,168,100,173,19,137
200 Port Command Sucessful
150 Data Connection will be open server
shortly
User Server
Protocol Control Protocol
Interpreter Connection Interpreter
Passive open on
Port 5001
User Data Server
Data Transfer Data Transfer
Function Connection Function
Establish Data Connection
FTP’s 2 Connections – Connection
Closing
bye
client
User
Interface
221
QUITService Closing
server
User Server
Protocol Control Protocol
Interpreter Connection Interpreter
User Data Server
Data Transfer Data Transfer
Function Connection Function
FTP Connections
FTP Connection
Client Server
ftp> open server SYN
SYN|ACK
ACK
220 Service Ready
ACK
ftp> USER haggerty
ACK
331 User OK,password?
ACK
ftp> PASS mypass
ACK
230 User login OK
ACK
FTP Data Transfer
Client Server
PORT 192,168,0,173,19,137
200 Command Successful
NLST client.txt
ACK
150 Data Connection
ACK will be open shortly
Control connection
Data Connection
226 Closing Data
ACK Connection
FTP Client Commands (issued by user interface)
Command Description
get filename Retrieve file from server
mget filename* Retrieve multiple files from server*
put filename Copy local file to server
mput filename* Copy multiple local files to server*
open server Begin login to server
bye / close / exit Logoff server
ls / dir List files in current remote dir on server
lcd Change local directory
cd Change remote directory
rhelp / remotehelp Lists commands the server accepts
* Sent to server as multiple command by User Protocol Interpreter
A-PDU FTP Commands
Command Description
LIST [filelist ] List files or directories (ls / dir)
USER username Send username to server
PASS password Password on server
PORT h1,h2,h3,h4,p1,p2 Client IP and port number
RETR filename Retrieve (get) filename
STOR filename Store (put) filename
TYPE (ascii, image) Do nothing (check if server is alive)
Example FTP Responses
• 120 Service will be ready shortly
• 200 Command OK
• 230 User login OK
• 331 User name OK; password is needed
• 421 Service not available
• 530 User not logged in
• 552 Requested action aborted; exceeded storage allocation
Summary of FTP connections
• FTP has 2 connections
- Control (persistent connection)
- Server issues a passive open on well-known 21
- Client uses an ephemeral port to issue active open
- Server ultimately closes control connection
- Data (ephemeral connection)
- Client issues passive open on an ephemeral port
- Client sends this port to server via PORT
command
- Server receives the port number and issues active
open using its well-known 20 to the received
ephemeral port
Data Connection continued
• This does not always work…why?
• Instead, use PASV command
– Client sends PASV command to server
– Server chooses ephemeral port: passive open
– Server responds with IP, Port in reply (227)
– Client issues active open to server’s port
• Ultimately, the data sender closes connection
Trivial FTP (TFTP)
• Used only to read and write files from/to
a remote server
– Cannot list directories
• Useful for bootstrapping diskless systems
– Workstations
– X terminals
• Simple and small:
– 5 message formats
– Runs on UDP
– Designed to fit in ROM
– Uses a “stop and wait” protocol
– NO BUILT IN SECURITY FEATURES (login)
TFTP Message Formats
TFTP Connection Establishment
Slide courtesy of McGraw-
Hill
Example TFTP Session
FTP vs. TFTP
• FTP provides (minimal) security through login
procedure
• TFTP has NO login procedure
• FTP Provides a reliable service through its use
of TCP
• TFTP must handle its own retransmissions
since it uses UDP
• FTP uses two connections
• TFTP uses one connection (stop and wait)
• FTP provides many commands
• TFTP can only read and write files
Slide from William Boyer boyer@cis.udel.edu
Installations
Koneksi Lewat Windows
Permitting Anonimous FTP
• Edit file konfigurasi
FTP
# /etc/proftpd/proftpd.conf
• Restart FTP