The term "FTP" stands for File Transfer Protocol and to put it in it's basic term, means to upload and download files to and from a web server or over a network that supports the TCP/IP protocol.
There are always at least two computers involved in file transfer, which are the server and the client. Both of these computers must have some form of FTP software, either the client FTP (the person uploading), or the server side FTP (the server that you upload to).
The server FTP client will listen constantly for a signal on the network from other computers' FTP clients (or another server FTP in some cases) The client computer that is running the FTP software will then initiate the connection to the server by giving a login name and password that the server will check. If this is correct the server FTP will then authenticate the client FTP to view the files available on the server.
Once connected to the server the client can perform a number of file manipulation operations, including file uploads, file downloads, renaming and deleting files on the server, re-ordering folders, basically anything the client has permission to do with the files.
One of the best parts about FTP software is that it is almost completely platform independent, which means it doesn't matter what operating system the client or server is running as the FTP will work regardless. The only thing the client or server needs is a connection to a TCP/IP based network (i.e. the Internet) to be able to manipulate files on another computer.
Criticisms of FTP:
Passwords and file contents are sent in clear text, which can be intercepted by eavesdroppers. There are protocol enhancements that circumvent this.- Multiple TCP/IP connections are used, one for the control connection, and one for each download, upload, or directory listing. Firewall software needs additional logic to account for these connections.
- It is hard to filter active mode FTP traffic on the client side by using a firewall, since the client must open an arbitrary port in order to receive the connection. This problem is largely resolved by using passive mode FTP.
- It is possible to abuse the protocol's built-in proxy features to tell a server to send data to an arbitrary port of a third computer;.
- FTP is a high latency protocol due to the number of commands needed to initiate a transfer.
- No integrity check on the receiver side. If transfer is interrupted the receiver has no way to know if the received file is complete or not. It is necessary to manage this externally for example with MD5 sums or cyclic redundancy checking.
- No error detection. FTP relies on the underlying TCP layer for error control, which uses a weak checksum by modern standards.
- No date/timestamp attribute transfer. Uploaded files are given a new current timestamp, unlike other file transfer protocols such as SFTP, which allow attributes to be included. There is no way in the standard FTP protocol to set the time-last-modified (or time-created) datestamp that most modern filesystems preserve. There is a draft of a proposed extension that adds new commands for this, but as of yet, most of the popular FTP servers do not support it.