Title: Lecture 10 FTP
1Lecture 10FTP TFTP
- CPE 401 / 601Computer Network Systems
slides are modified from Dave Hollinger and
Michael mgunes
2Overview
- File Transfer Protocol (RFC 959)
- Why FTP?
- FTPs connections
- FTP in action
- FTP commands/responses
- Trivial File Transfer Protocol (RFC 1350)
- TFTP and TFTPs message formats
- FTP and TFTP compared
3Why 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
4Problems 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
5The FTP Model
PI Protocol Interpreter DTP Data Transfer
Protocol
User Interface
User
Control
Server PI
User PI
Data
File System
File System
User DTP
Server DTP
6Control and Data Connections
- Control functions (commands) and reply codes are
transferred over the control connection. - All data transfer takes place over the data
connection. - The control connection must be up while data
transfer takes place.
7Control Connection
- The control connection is the well known
service. - The control connection uses the TELNET protocol.
- Commands and replies are all line oriented text
(default is ASCII).
8FTPs Connections
client
User Interface
server
User Protocol Interpreter
Server Protocol Interpreter
Control Connection
21
User Data Transfer Function
Server Data Transfer Function
Data Connection
20
9FTPs Connections Establishment
ftpgt open cse.unr.edu
Connected to cse.unr.edu 220 cse FTP server
ready. 530 Please login with USER and PASS
client
331 Password req for mgunes. Password
User Interface
230 User mgunes logged in. ftpgt
USER mgunes
PASS mypass
server
User Protocol Interpreter
Server Protocol Interpreter
Control Connection
User Data Transfer Function
Server Data Transfer Function
Data Connection
10FTPs Connections Data Transfer
client
ls client.txt
-rw-r--r-- mgunes client.txt
User Interface
226 Closing Data Connection
PORT 192,168,100,173,19,137
200 Port Command Sucessful
LIST client.txt
150 Data Connection will be open shortly
server
User Protocol Interpreter
Server Protocol Interpreter
User Protocol Interpreter
Server Protocol Interpreter
Control Connection
Passive open on Port 5001
User Data Transfer Function
Server Data Transfer Function
Data Connection
Establish Data Connection
11FTPs Connections Connection Closing
bye
client
User Interface
221 Service Closing
QUIT
server
User Protocol Interpreter
Server Protocol Interpreter
Control Connection
User Data Transfer Function
Data Connection
Server Data Transfer Function
12FTP Connections
13FTP Client Commands (issued by user interface)
Sent to server as multiple command by User
Protocol Interpreter
14Access Control Commands
- USER specify user
- PASS specify password
- CWD change directory
- CDUP change directory to parent
- QUIT logout
15Transfer Parameter Commands
- PORT publish local data port
- PASV server should listen
- TYPE establish data representation
- MODE establish transfer mode
- STRU establish file structure
16Data Transfer Modes
- STREAM
- file is transmitted as a stream of bytes.
- BLOCK
- file is transmitted as a series of blocks
preceded by headers containing count and
descriptor code (EOF, EOR, restart marker). - COMPRESSED
- uses a simple compression scheme - compressed
blocks are transmitted.
17Service Commands
- RETR retrieve file
- STOR send file
- STOU send file and save as unique
- APPE send file and append
- ABOR abort prev. service command
- PWD print working directory
- LIST transfer list of files over data link
18FTP Replies
- All replies are sent over control connection.
- Replies are a single line containing
- 3 digit status code (sent as 3 numeric chars).
- text message.
- The FTP spec. includes support for multiline text
replies.
19FTP Reply Status Code
- First digit of status code indicates type of
reply - 1 Positive Preliminary Reply (got it, but
wait). - 2 Positive Completion Reply (success).
- 3 Positive Intermediate Reply (waiting for
more information). - 4 Transient Negative Completion (error - try
again). - 5 Permanent Negative Reply (error - cant do).
20FTP Reply Status Code
- 2nd digit indicates function groupings.
- 0 Syntax (problem with command syntax).
- 1 Information (reply to help or status cmds).
- 2 Connections (problem with a connection).
- 3 Authentication (problem with login).
- 4 Unspecified.
- 5 File system (related to file system).
- 3rd digit indicates specific problem within
function group.
21Example 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
22RFC 959
- The RFC includes lots more information and many
details including - parameters for commands
- lists of reply status codes
- protocol state diagrams
- support for a variety of file structures
- sample sessions
23(No Transcript)
24Trivial 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)
25Diskless Workstation Booting 1The call for help
Help! I don't know who I am! My Ethernet address
is 4C231777A603
Diskless Workstation
RARP
26The answer from the all-knowing
RARP Server
I know all! You are to be know as 128.113.45.211
Diskless Workstation
RARP REPLY
27The request for instructions
I need the file named boot-128.113.45.211
Diskless Workstation
TFTP Request (Broadcast)
28The dialog
TFTP Server
here is part 1
I got part 1
here is part 2
Diskless Workstation
boot file
TFTP File Transfer
29TFTP Protocol
- 5 message types
- Read request
- Write request
- Data
- ACK (acknowledgment)
- Error
- Each is an independent UDP Datagram
- Each has a 2 byte opcode (1st 2 bytes)
- The structure of the rest of the datagram depends
on the opcode.
30TFTP Message Formats
31TFTP transfer modes
- octet for transferring binary files.
- no translation done.
- netascii for transferring text files.
- all lines end with \r\n (CR,LF).
- provides standard format for transferring text
files. - both ends responsible for converting to/from
netascii format.
32NetAscii Transfer Mode
- Unix - end of line marker is just '\n'
- receiving a file
- you need to remove '\r' before storing data.
- sending a file
- you need to replace every '\n' with "\r\n" before
sending
33Read Request
01
filename
0
mode
0
null terminated ascii string containing name of
file
null terminated ascii string containing transfer
mode
2 byte opcode network byte order
variable length fields!
34Write Request
02
filename
0
mode
0
null terminated ascii string containing name of
file
null terminated ascii string containing transfer
mode
2 byte opcode network byte order
variable length fields!
35TFTP Data Packet
03
block
data 0 to 512 bytes
2 byte block number network byte order
2 byte opcode network byte order
all data packets have 512 bytes except the last
one.
36TFTP Acknowledgment
04
block
2 byte block number network byte order
2 byte opcode network byte order
37TFTP Error Packet
05
errcode
errstring
0
null terminated ascii error string
2 byte opcode network byte order
2 byte error code network byte order
38TFTP Error Codes (16 bit int)
- 0 - not defined
- 1 - File not found
- 2 - Access violation
- 3 - Disk full
- 4 - Illegal TFTP operation
- 5 - Unknown port
- 6 - File already exists
- 7 - No such user
39TFTP Connection Establishment
40TFTP Session
41Lost Data Packets - Original Protocol
Specification
- Sender uses a timeout with retransmission.
- sender could be client or server.
- Duplicate data packets must be recognized and ACK
retransmitted. - This original protocol suffers from the
"sorcerers apprentice syndrome".
42Sorcerers Apprentice Syndrome
send DATAn (time out) retransmit
DATAn receive ACKn send DATAn1 receive
ACKn (dup) send DATAn1(dup) ...
receive DATAn send ACKn receive DATAn
(dup) send ACKn (dup) receive DATAn1 send
ACKn1 receive DATAn1 (dup) send ACKn1
(dup)
43The Fix
- Sender should not resend a data packet in
response to a duplicate ACK. - If sender receives ACKn
- dont send DATAn1 if the ACK was a duplicate.
44Concurrency
- TFTP servers use a "well known address" (UDP port
number). - How would you implement a concurrent server?
- forking (alone) may lead to problems!
- Can provide concurrency without forking, but it
requires lots of bookkeeping.
45TFTP Concurrency
- According to the protocol, the server may create
a new udp port and send the initial response from
this new port. - The client should recognize this, and send all
subsequent messages to the new port.
46When is it over?
- There is no length of file field sent!
- All data messages except the last one contain 512
bytes of data. - message length is 2 2 512 516
- The last data message might contain 0 bytes of
data!
47Issues
- What if more than 65535 chunks are sent?
- 65536 blocks x 512 bytes/block 33,554,432
bytes. - The RFC does not address this issue!
- Remember that the network can duplicate packets!
48FTP 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