Top Banner
File Transfer Protocol CS-328 Dick Steflik
20
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: patelchodu

File Transfer Protocol

CS-328

Dick Steflik

Page 2: patelchodu

FTP

• RFC 959• uses two TCP Ports

– one for control– one for data transfers

• command-response protocol• control port uses telnet protocol to negotiate

session– US-ASCII– <crlf> is end-of-line character

Page 3: patelchodu

Active Mode FTP• Client connect from a random unprivileged port (n > 1023) to the servers

command port (21) and sends port command to tell server to connect to n+1 then listens on the next higher unprivileged port (n+1) for server responses. The server connects from it’s data port (20) to the client data port (n+1)

ClientServer

20 21 1026 1027

1

2

3

4

Page 4: patelchodu

Passive Mode FTP• Client opens two random unprivileged ports ( n > 1023 and n+1; ex 1026 and

1027) and connects the first port (n) to server command port 21 and issues a pasv command (server sends port to use for data); client connects to servers specified data port, server completes connection.

ClientServer

20 21 1026 1027

1

2

2024

3

4

Page 5: patelchodu

Transfer Files in a Heterogeneous Host Environment

• Due to multiple hardware types and operating systems file are converted to four environmentally neutral data type for transport and the converted to local types at the destination– ASCII A NVT-ASCII

– EBCDIC E EBCDIC Text

– IMAGE I Raw binary, series of octets

– LOCAL L Raw binary using a variable byte size

• Client responsibility to tell server data type to use• Default data type, unless otherwise specified is ASCII

Page 6: patelchodu

File Structures

• Operating System store files in different structures

• FTP defined file structures for transporting files– File F Unstructured, sequence of bytes

– Record R Series of records

– Page P Series of data blocks (pages)

• Default file structure is File (F)• File Structure specified using STRU command

Page 7: patelchodu

Transmission Modes

• Mode is used to specify additional coding or sequencing performed on data

• independent of data type and file structure– Stream S stream of bytes, if record structure

EOF sent as record indication; if file eof indicated by closing stream

– Block B file sent as sequence of blocks preceded by header info allows restart of an interruped transfer

– Compressed C data compressed using run length encoding

Page 8: patelchodu

FTP Commands

• USER R User name, userid for access control

• PASS O Password for access control• ACCT O Account info• CWD O Change working directory• CDUP O Change to parent directory• SMNT O Structure mount, mount a different file system

• QUIT R informs server that client wants out• REIN O restarts session at authentication phase• PORT R Host addr and data port to use

Page 9: patelchodu

FTP Commands (more)

• PASV O Passive; informs server that client will contact to set up data connections, ask server to sent

port info

• TYPE R Data type, type of subsequent transfers• STRU R File structure• MODE R Transfer mode• RETR R Retrieve, download the file from server• STOR R Store, upload the specified to server

• STOU O Store unique, same as store but server picks unique file name

Page 10: patelchodu

FTP Commands (more)

• APPE O Append, upload file to server, if file name exists, append the upload

• ALLO O Allocate, sometimes used to preallocate space• REST O Restart, restart an interrupted transfer• RNFR O Rename file from filename• RNTO O Rename file to• ABOR O Abort, ask server to abort last command

• DELE O Delete specified file• RMD O Remove directory• MKD O Make directory

Page 11: patelchodu

FTP Commands (more)

• PWD O Print working directory

• LIST O Request directory listing• NLST O Request just a file name list• SITE O Site parameters, allow client to specify site

specific options and parameters• SYST O request server operating system• STAT O Request server to send status of current xfr

• HELP O general and command specific• NOOP R ask server to send a positive reply

Page 12: patelchodu

FTP Responses

• Each command generates a server response– 3 digit code, text, <crlf>

• use 3 digit code as driver for GUI Clients or programatic implementations

• use text for Command line clients

Page 13: patelchodu

Responses

• 1yz - Positive preliminary reply - command is being acted upon; expect a final reply code before sending another command

• 2yz - Positive completion reply - command was successfully executed; new command may be sent

• 3yz - Positive intermediate reply - command was accepted, but the final result is being delayed because other information

needs to be supplied from the client; reply is used for sequencing command groups

• 4yz - Transient negative completion reply - command failed, but the condition is temporary

• 5yz - Permanent negative completion reply - command failed and will always fail if given again; the command should not be attempted again

Page 14: patelchodu

Response

• x0z - Refers to command syntax

• x1z - Indicates information returned by commands requesting information such as status or help

• x2z - Refers to the state of the control or data connections• x3z - The reply is associated with the login process and

accounting procedures• x4z - Reserved for future use• x5z - Refers to the state of the requested file transfer or

other file system command

Page 15: patelchodu

Trivial File Transfer Protocol

• RFC 1782

• UDP port 69

• Simple protocol, usually used to transfer configuration files

• Usually used for transferring boot file for diskless hosts (X-Stations) or updating NVRAM

Page 16: patelchodu

TFTP

• Typically used in short distance, low noise environments

• Server is usually implement in firmware for updating things like routers, bios...

Page 17: patelchodu

TFTP

• Because of its compact size:– no error recovery like TCP based FTP– no command structure like FTP– cannot list directories– transfers to server are to a single configured

directory

Page 18: patelchodu

Transfer Modes

• netascii (8-bit ASCII)

• raw binary

• mail (obsolete, not used)

Page 19: patelchodu

TFTP Transfers

• client send a RRQ or WRQ to server

• server sends ACK 0

• client sends DAT1

• repeat until done

Page 20: patelchodu

TFTP Formats

• Type Op # Format without header 2 bytes string 1 byte string 1 byte ------------------------------------------------------ RRQ/ | 01/02 | Filename | 0 | Mode | 0 | WRQ ------------------------------------------------------- 2 bytes 2 bytes n bytes --------------------------------- DATA | 03 | Block # | Data | --------------------------------- 2 bytes 2 bytes ----------------------------- ACK | 04 | Block # | ----------------------------- 2 bytes 2 bytes string 1 byte ----------------------------------------------------- ERROR | 05 | ErrorCode | ErrMsg | 0 | -----------------------------------------------------