Saturday, October 8, 2011

FTP




FTP allows files to be transferred over the Internet and is still the most popular and quickest way to transfer large amounts of files on the Internet.

An FTP address looks a lot like an HTTP, or Website, address except it uses the prefix ftp:// instead of http://. FTP is part of the application layer of the ISO/OSI network model and is the most popular way web site owners / webmasters upload their web site files to the Internet. There is a range of FTP programs on the market which are both free or cost very little. Below is a list of some of the most popular FTP programs,

The Internet File Transfer Protocol (FTP) is defined by RFC 959 published in 1985. It provides facilities for transferring to and from remote computer systems. Usually the user transferring a file needs authority to login and access files on the remote system.

The common facility known as anonymous FTP actually works via a special type of public guest account implemented on the remote system.

An FTP session normally involves the interaction of five software elements.

User Interface This provides a user interface and drives the client protocol interpreter.

Client PI This is the client protocol interpreter. It issues commands to the remote server protocol interpreter and it also drives the client data transfer process.

Server PI This is the server protocol interpreter which responds to commands issued by the client protocol interpreter and drives the server data transfer process.

Client DTP This is the client data transfer process responsible for communicating with the server data transfer process and the local file system.
Server DTP This is the server data transfer process responsible for communicating with the client data transfer process and the remote file system.

RFC 959 refers to the user rather than the client. RFC 959 defines the means by which the two PIs talk to each other and by which the two DTPs talk to each other.

The user interface and the mechanism by which the PIs talk to the DTPs are not part of the standard. It is common practice for the PI and DTP functionalities to be part of the same program but this is not essential.

During an FTP session there will be two separate network connections one between the PIs and one between the DTPs. The connection between the PIs is known as the control connection. The connection between the DTPs is known as the data connection.

The control and data connections use TCP.

In normal Internet operation the FTP server listens on the well-known port number 21 for control connection requests.

The choice of port numbers for the data connection depends on the commands issued on the control connection. Conventionally the client sends a control message which indicates the port number on which the client is prepared to accept an incoming data connection request.

The use of separate connections for control and data offers the advantages that the two connections can select different appropriate qualities of service e.g. minimum delay for the control connection and maximum throughput for the data connection, it also avoids problems of providing escape and transparency for commands embedded within the data stream.

When a transfer is being set up it always initiated by the client, however either the client or the server may be the sender of data. As well as transferring user requested files, the data transfer mechanism is also used for transferring directory listings from server to client.

Command Choices

When a transfer is being set up there are normally four aspects of the transfer that need to be specified. These are

File type
This specifies the way the data of the file is mapped into a form suitable for transmission. There are four possible choices

ASCII file type.

At the sending end the file is converted from a local text file to NVT ASCII with end of lines indicated by a CR/LF pair. At the receiving this is converted into local text file form.

This explains why text file transfers between Unix hosts always indicate more bytes transferred than the actual file size. Note also that if one or both systems do not use ASCII text encodings it is the responsibility of the data transfer processes to convert between NVT ASCII and the local encodings.

EBCDIC file type

Similar to ASCII only EBCDIC character codings are used.

Image (or binary) file type
The file is transmitted exactly as stored at the sending end and stored exactly as received at the receiving end.

Local file type

Used in environments where the byte size is not eight. The number of bits per byte is specified by the sender.

Only ASCII and Image are likely to be encountered in practice.

Format Control

This is associated with text files being transferred ultimately to printing devices. There are various ways in which vertical format information can be encoded within a file. This includes indicating the way a start of page is indicated. The choices are

No printing controls. This is the default.

Telnet printing controls. Control characters as specified in the telnet protocol are included within the data stream.

Fortran printing controls. The first character of each line controls vertical spacing.
These are rarely used in practice.

Structure
Files can have internal structure which is preserved on transfer. It is the responsibility of the data transfer processes to map between transmitted structures and local structures. There are three possibilities.

File structure.

This actually means that the file is seen as a contiguous stream of bytes with no internal structure.

Record structure.

The file is structured as a series of records. This only really applies to text files.

Page structure.

This would be better called block structure. Each page is transmitted with a page number so that they can be transmitted in any order.

Page structure is unlikely to be encountered in practice. Record structure is also comparatively uncommon as using ASCII file type will achieve the same effect with text files.

Transmission mode

There are three choices

Stream mode.

The file is simply transferred as a series of bytes.

Block mode.

The file is transferred block by bock with a header at the start of each block.

Compressed mode.

A simple run length encoding scheme is used to compress sequences of identical bytes.

Only stream mode is likely to be encountered in practice. Compression is normally achieved using various utility programs.

When a transfer is being set up the client may specify one or more of the options described above, if the server cannot support that option there will be an error response reflected back, ultimately, to the user. There is no negotiation mechanism.

There are a substantial number of commands available for users to establish their bona-fides on remote systems and to navigate the remote system's file system.

Command formats

Commands are transmitted as NVT ASCII strings starting with three or four upper case NVT ASCII characters followed by optional arguments and a CR/LF pair at the end of the command.

Replies start with 3 digit NVT ASCII numbers with an optional message.

A long reply may be sent as several messages with a dash after the three digits on the first message and no dash after the three digits on the last message. Intermediate lines need not have any initial digits but if they do (and many implementations prefer this) they should be the same three digits followed by a dash.

Here is a list of all commands. The ones marked with an asterisk are rare and rarely implemented.

String Meaning
ABOR Abort transfer.
*ACCT Some systems associate both accounts and users with file system objects.
*ALLO Allocate space for file about to be sent. Parameter specifies number of bytes.
*APPE Append file to existing file.
CDUP Change to parent directory on remote system.
CWD Change working directory on remote system.
DELE Delete file on remote system.
HELP Elicit "helpful" information from the server. E.g. a list of commands supported.
LIST Send a list of file names in the current directory on the remote system on the data connection.
MKD Make directory.
MODE Specifies transfer mode. Parameter is S,B or C.
NLST Send a "full" directory listing of the current directory on the remote system on the data connection.
NOOP Do nothing.
PASS Supplies a user password. Must occur immediately after the USER command.
*PASV Specifies that the server data transfer process is to listen for a connection request from the client data transfer process.
PORT Specify the client port number on which the data transfer process is listening for a connection request.
PWD Show current directory name on remote system.
QUIT Logout or break the connection.
*REIN Reinitialize. Logout without breaking connection. A new USER command for a different user would follow.
*REST Restart transfer from server marker.
RETR Get file from remote system.
RMD Remove directory.
*RNFR Specifies old path name of file to be renamed. Follow with RNTO command.
*RNTO Specifies new path name of file to be renamed.
*SITE Site specific server services.
*SMNT Structure mount. Supplies the remote system path name of a file system structure.
*STAT Elicit status information.
STOR Store file on remote system over-writing the file if it already exists.
*STOU Store unique. Does not over-write existing files.
STRU Specifies file structure. Parameter is F,R or P.
*SYST Report operating system type on remote system.
TYPE Specifies representation (file) type. Parameter is one of the characters A,E,I,L for file type followed by N,T or C for format control or a number specifying the local byte size. Only TYPE A and TYPE I are common.

The control connection commands are of the following forms

Type Description
1yz Positive preliminary reply. Expect another reply before sending another command.
2yz Positive completion reply. The last command completed successfully.
3yz Positive intermediate reply. A further command must be sent.
4yz Transient negative completion reply. The requested action did not take place but can be retried.
5yz Permanent negative completion reply. The requested action did not take place and should not be retried.

The "y" digit encodes further information

Digit Meaning
0 Syntax error
1 Information
2 Connection status.
3 Authentication and accounting.
4 Unspecified
5 File system status

Here are some typical messages.

Number Meaning
125 Data connection open. Transfer starting.
200 Command OK
331 User name OK, Password Required.
425 Can't open data connection
452 Error writing file
500 Syntax error - unrecognised command

There are defined responses for all commands fully specified in RFC 959.

FTP utilities
There are very many different FTP utility programs and FTP is often incorporated within utilities such as WWW browsers. On Unix systems the basic utility is called ftp and it includes facilities to allow users to see the various commands.

Here is an example of it in action. Local prompts are shown in bold. This session took place at 08:52 on June 4th, 1996.

bash$ ftp plaza.aarnet.edu.au
Connected to plaza.aarnet.edu.au.
220 plaza.aarnet.EDU.AU FTP server (Version wu-2.4(2) Fri Apr 15 14:04:20 EST 1994) ready.
Name (plaza.aarnet.edu.au:jphb): ftp
331 Guest login ok, send your complete e-mail address as password.
Password:
230-
230- This is the AARNet Archive Server, Melbourne, Australia.
230-
230-
230-The disk that failed back in September is still not back on-line.
230-As a consequence of this, we are only shadowing files modified in
230-the last 100 days on many of the more popular archives. We apologise
230-for this inconvenience.
230-
230-Local time is Tue Jun 4 17:46:00 1996
230-
230-Please read the file /info/welcome-ftpuser
230- it was last modified on Fri Apr 22 14:47:05 1994 - 774 days ago
230 Guest login ok, access restrictions apply.
ftp> pwd
257 "/" is current directory.
ftp> ls
200 PORT command successful.
150 Opening ASCII mode data connection for file list.
lost+found
usr
etc
java
pub
micros
wais
bin
ACS
usenet
X11
rfc
graphics
info
gnu
archie
aarnet
.cap
projects
ls-lRt.Z
.cache
talk-radio
gopher
security
NetWorkshop
Weather
lib
.symlinks
226 Transfer complete.
214 bytes received in 0.018 seconds (11 Kbytes/s)
ftp> cd rfc
250 CWD command successful.
ftp> get rfc1048.txt.gz
200 PORT command successful.
150 Opening ASCII mode data connection for rfc1048.txt.gz (5141 bytes).
226 Transfer complete.
local: rfc1048.txt.gz remote: rfc1048.txt.gz
5161 bytes received in 1.6 seconds (3.2 Kbytes/s)
ftp> quit
221 Goodbye.

The following replies will be noted. The descriptions are taken from RFC 959.


220
Service ready for new user. A standard banner message from the FTP server program. The date probably refers to the date the server program was compiled.

331
Use name OK, password required. ftp is a special user name understood by many FTP servers, any string is acceptable as a password. anonymous may be used with exactly the same effect.

230
User logged in, proceed. Evrything is OK, many FTP servers use this as an opportunity to display a welcoming message. Note the use of continuations (the 230- messages).

257
"PATHNAME" created is the RFC 959 interpretation of this message, here it simply means that the CD command worked OK as the explanatory text clearly indicates.

200
Command okay. The command was to indicate the port number on which the client will be listening for the server's data connection for the directory listing.

150
File status okay, about to open data connection. This is fairly self-explanatory. The server has established communication with the client's listening data connection port and is about to transfer the named file. In this case "list" actually means a directory listing rather than a file called "list". The client displays the incoming data on the standard output device rather than copying to a local file.

226
Closing data connection. Requested file action successful (for example, file transfer or file abort). In this case the transfer has been successful.

214
This isn't actually a message at all. It is statistics produced by the client for user information.

250
Requested file action okay, completed. The CWD command completed OK.

200
A PORT command for the data connection for the file transfer was received satisfactorily.

150
Data connection established from server to client.

226
Transfer completed. Followed by the client side generated statistics.

221
Service clsoing control connection.

5 comments:

Kawser Ahmed said...

Thanks for news.

muhammad nasir said...

so grate info

muhammad nasir said...

i like this very much

ahmedkawserit said...

Thanks for news.

muhammad nasir said...

This is very informative site for pc troubleshooting tips