File Transfer Protocol is a standard protocol for transferring files over TCP networks (eg Internet). FTP is often used to download web pages and other documents from web servers.
The protocol is built on the architecture of the client-server and uses different network connections for the transmission of commands and data between the client and the server.
FTP users may authenticate, passing the username and password in clear text, or, if it is allowed on the server, they can connect anonymously. You can use the SSH protocol for secure transmission, hiding (through encryption) username and password.
FTP is one of the oldest application protocols that appeared long before HTTP, and even before the TCP / IP, in 1971. At first it worked over Transmission Control Protocol NCP. Today, it is widely used for software distribution and access to remote hosts.
Sufficiently striking feature of the FTP protocol is that it uses multiple (at least – double) connection. At the same time one channel is a control, which receives commands through the server.
Therefore, in one session the FTP protocol can transfer multiple files simultaneously, in both directions. Each data channel opens its TCP port number which selects either the server or the client, depending on the mode of transmission.
The FTP protocol works in binary mode, which reduces the overhead traffic and the communication time for large file transfers. HTTP protocol require encoding of binary information in text form, for example, using the algorithm Base64.
Beginning work via FTP, the client enters the session, and all operations are conducted in the framework of this session (in other words , the server remembers the current state).
FTP operates on the application layer of the OSI model and is used to transfer files using TCP / IP.
The second compound (data flow) can be opened as a server from port 20 to the respective client (active mode) or from any port to the appropriate server port (passive mode).
Flow control is used to work with the session – for example , the exchange between the client and server commands and passwords using telnet- like protocol.