What is FTP?
File Transfer Protocol, or FTP, is how files are transferred between computers on the Internet. It is a safe and reliable way to send files between users with access to the FTP server. FTP is also a common method for updating files on websites.
FTP was developed in the 1970s by MIT student Abhay Bhushan. Initially, Bhushan created FTP to securely transfer files over a network called ARPANET. This program was the precursor to what we now consider the modern web.
In order for a File Transfer Protocol session to be created, a user is granted access to the FTP server with credentials. Essentially, a user signs in to the FTP server and is able to start transferring files. An exception to this practice is called anonymous FTP, where a public FTP server, which does not require credentials, is used.
How Does FTP Work?
As stated above, a user will have to provide credentials to gain access to the FTP server. Once access is granted, the user sends a request to the FTP server to create changes on that server. With access granted, the files are transferred.
The transfer process occurs on two channels of communication: the command channel and the data channel. The command channel initiates a request and response to and from the FTP server. The data channel is responsible for distributing data.
A user’s command channel contacts the server’s command channel to initiate a request. The server sends a response back to the user’s command channel. Then, the server sets up a connection between its own data channel and the user’s data channel specified in the request. Now, the user can transfer data through the data channel.
The above example illustrates what is known as an active mode FTP session. A common issue with active FTP is firewall blockage. This occurs due to the fact that the user request is not an actual connection to the server. Rather, it is a reference to the server’s port. When the server responds by making the connection to the user’s port, a firewall alert can block the connection.
A passive mode FTP was developed to address the issue of the user’s firewall. In a passive mode FTP, the user sends a request to the server on the command channel, much like in our active mode example above. Again, the server responds to the user’s command channel, but this time it sends what port it will be listening to for the data channel transfer.
The port the server listens to is a random one and not its own data port. This is the major difference between active and passive modes. From the randomly assigned port, the server connects with the user’s data port and begins the transfer.
By using a randomly assigned port on the server side, rather than its own data port, the firewall issue is bypassed. This is accomplished by having the user make both connections: command channel and data channel.
Now that we know what FTP is, how can we use it? The most common way to use FTP is through an FTP client. An FTP client is a program that transfers files to computers and servers. A reliable FTP client has the ability to securely transfer large files in a short amount of time.
Some popular FTP clients include:
- FileZilla – FileZilla is a popular free FTP client. It’s an open source project that boasts a user-friendly interface and powerful transfer sessions.
- Cyberduck – Cyberduck is a popular FTP client. It has also added other features, such as accessing Google Drive or Dropbox without syncing the files to your local computer.
- gFTP – gFTP is an FTP client for Linux operating systems. Like FileZilla, it is open source and free.
Since being developed in the 1970s, FTP has continued to evolve and grow. Some of the new features are being developed by members of open source FTP clients such as Cyberduck. Along with providing traditional FTP, they’ve developed ways to mount client drives without synchronizing the files to the client’s local disc.
FTP has come a long way and has inspired younger generations of developers to create new features. As long as computers are connecting with servers and transferring data, FTP will be around.
"Career Karma entered my life when I needed it most and quickly helped me match with a bootcamp. Two months after graduating, I found my dream job that aligned with my values and goals in life!"
Venus, Software Engineer at Rockbot