Lecture 10 FTP & TFTP CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger and Michael mgunes.
Download ReportTranscript Lecture 10 FTP & TFTP CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger and Michael mgunes.
Lecture 10 FTP & TFTP CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger and Michael mgunes 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 FTP 2 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 FTP 3 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 4 The FTP Model PI: Protocol Interpreter DTP: Data Transfer Protocol Server PI File System Server DTP User Interface Control Data User User PI User DTP File System FTP 5 Control 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. FTP 6 Control 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). FTP 7 FTP’s Connections client User Interface * Non-persistent Persistent command *Server Insulates users from “raw” data is listening on port 21 *Server“raw” uses FTP portcommands 20 * Routes and reply connection commands forFTP connection requests for data server’s connections * connection Receives replies server User Protocol Interpreter Control Connection User Data Data Transfer Connection Function Server Protocol 21 Interpreter Server Data Transfer 20 Function FTP’s Connections – Establishment ftp> open cse.unr.edu client User Interface User Protocol Interpreter Connected to cse.unr.edu 220 cse FTP server ready. 530 Please login with USER and PASS 331 Password req for mgunes. Password: 230 User mgunes logged in. ftp> USER PASS mgunes mypass server Control Connection User Data Data Transfer Connection Function Server Protocol Interpreter Server Data Transfer Function FTP’s Connections Data Transfer client User Interface User Protocol Interpreter ls client.txt -rw-r--r-- mgunes client.txt 226 Data Connection PORT 200 Closing LIST Port 192,168,100,173,19,137 client.txt Command Sucessful 150 Data Connection will be open shortly server Control Connection Passive open on Port 5001 User Data Data Transfer Connection Function Server Protocol Interpreter Server Data Transfer Function Establish Data Connection FTP’s Connections – Connection Closing client User Interface bye 221 Service Closing QUIT server User Protocol Interpreter Control Connection User Data Data Transfer Connection Function Server Protocol Interpreter Server Data Transfer Function FTP Connections FTP 12 FTP Client Commands (issued by user interface) Command Description Retrieve file from server get filename Retrieve multiple files from server* mget filename* Copy local file to server put filename Copy multiple local files to server* mput filename* Begin login to server open server Logoff server bye / close / exit List files in current remote dir on server ls / dir Change local directory lcd Change remote directory cd Lists commands the server accepts rhelp / remotehelp * Sent to server as multiple command by User Protocol Interpreter Access Control Commands USER specify user PASS specify password CWD change directory CDUP change directory to parent QUIT logout FTP 14 Transfer Parameter Commands PORT publish local data port PASV server should listen TYPE establish data representation MODE establish transfer mode STRU establish file structure FTP 15 Data 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. FTP 16 Service 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 FTP 17 FTP 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. FTP 18 FTP 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 - can’t do). FTP 19 FTP 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. FTP 20 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 FTP 21 RFC 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 FTP 22 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 24 Diskless Workstation Booting 1 The call for help Help! I don't know who I am! My Ethernet address is: 4C:23:17:77:A6:03 RARP Diskless Workstation TFTP 25 The answer from the all-knowing I know all! You are to be know as: 128.113.45.211 RARP Server Diskless Workstation RARP REPLY TFTP 26 The request for instructions I need the file named boot-128.113.45.211 Diskless Workstation TFTP Request (Broadcast) TFTP 27 The dialog here is part 1 I got part 1 TFTP Server here is part 2 Diskless Workstation boot file TFTP File Transfer TFTP 28 TFTP 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. TFTP 29 TFTP Message Formats OPCODE FILENAME OPCODE BLOCK# 0 MODE 0 DATA OPCODE BLOCK# OPCODE BLOCK# 2 bytes 2 bytes ERROR MESSAGE 0 TFTP 30 TFTP 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. TFTP 31 NetAscii 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 TFTP 32 Read Request 01 0 filename null terminated ascii string containing name of file 0 mode null terminated ascii string containing transfer mode 2 byte opcode network byte order variable length fields! TFTP 33 Write Request 02 0 filename null terminated ascii string containing name of file 0 mode null terminated ascii string containing transfer mode 2 byte opcode network byte order variable length fields! TFTP 34 TFTP 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. TFTP 35 TFTP Acknowledgment 04 2 byte opcode network byte order block # 2 byte block number network byte order TFTP 36 TFTP Error Packet 05 errcode 2 byte opcode network byte order errstring 0 null terminated ascii error string 2 byte error code network byte order TFTP 37 TFTP 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 TFTP 38 TFTP Connection Establishment TFTP 39 TFTP Session TFTP 40 Lost 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 "sorcerer’s apprentice syndrome". TFTP 41 Sorcerer’s Apprentice Syndrome send DATA[n] (time out) retransmit DATA[n] receive ACK[n] send DATA[n+1] receive ACK[n] (dup) send DATA[n+1](dup) ... receive DATA[n] send ACK[n] receive DATA[n] (dup) send ACK[n] (dup) receive DATA[n+1] send ACK[n+1] receive DATA[n+1] (dup) send ACK[n+1] (dup) TFTP 42 The Fix Sender should not resend a data packet in response to a duplicate ACK. If sender receives ACK[n] don’t send DATA[n+1] if the ACK was a duplicate. TFTP 43 Concurrency 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. TFTP 44 TFTP 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. TFTP 45 When is it over? There is no length of file field sent! All data messages 512 bytes of data. except the last one contain message length is 2 + 2 + 512 = 516 The last data message might contain 0 bytes of data! TFTP 46 Issues 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! TFTP 47 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 TFTP 48