FTP programs

FTP stands for File Transfer Protocol. FTP programs are designed to transfer files between computers. The most common usage is transferring files from a local computer to a remote computer, or from a remote computer to a local computer. Generally, the local computer is the one you are directly connected to, whether it is a mainframe or a desktop computer. The remote computer is generally a computer used as a file server or web server, or it could be a distant mainframe or desktop computer.

Regardless of the types of computers connected, the relationship is known as a client-server operation. One computer must perform the role of a server and the other would follow the role of the client. A "server" serves up requests from the client, whether the request is to send or to receive. Basically, the server waits for connection requests from clients. Once authenticated, the client-server relationship starts. Transfer can be in either direction. The client makes requests to the server to accept a file transfer to the server, or the client makes a request to the server to transfer a file to the client.

To perform the role of the server, FTP Server software has to be implemented on the computer functioning as the server. The local ("client") computer needs to use an FTP Client program to connect to the server computer.

File transfers between two mainframe computers is so common, practically all mainframes have FTP Server software installed, and likewise, each will also have FTP Client software available to establish a connection to the other computer acting as the server.

FTP Server software can handle multiple client connections at the same time. Therefore, multiple users may be sending files back and forth, unbeknownst to the others, or of the others, meaning multiple users on the same computer running client software connected to the other, at the same time that multiple users on the other computer are doing the same. This is common between mainframes, however if you are using a personal computer, you probably are the only one on your end.

Most computers that perform server like functions, such as file servers, or web servers, must have the FTP server software installed, which is pretty much a standard part of the server operating system these days. Therefore, all you need in order to transfer files between a local computer and a remote computer is an FTP Client on your end. Of course, you will need to know the details necessary to make such a connection, such as the name of the computer as a URL (or its IP address), and the connection user id and password, plus where on the remote computer your client will connect to. Also, you will also want to specify the location on your local computer that the FTP Client connects to. In cases where the two locations are supposed to contain the same exact files, this type of connection is common when you want to sync the files of each location with the other.

Notes

Upload vs. Download

Two terms associated with file transfer that applies in the client-server file transfer relationship have become pretty common to computer users, however, they are often used incorrectly. You may have heard of "upload" and "download" before, but do you use them correctly? Often the wrong (opposite) term is used instead of the correct term. To help clarify, think of the relationship of local vs. remote, and the words "up" and "down" You may wish to think of the remote computer as being the "bigger" of the two and "higher" up either physically or more powerful as was common when connecting a desktop computer to a mainframe. If you are getting a file from a higher up computer, then you are "downloading" a file. If you are sending a file to a higher up computer, you are "uploading" a file. Generally, think of the remote computer as the one higher up. Simple, eh? *

Transfer Success

When transferring files between computers, the file data is broken down into small chunks to send individually. For each chunk of data, a checksum is calculated. The checksum data is added (appended) to the file data chunk before sending. When received, each chunk is checked to see if it matches the accompanying checksum. If it does, the data was received correctly. If not, a request is made to "re-send" the chunk. Of course, there is the distinct possibility that the portion of the chunk that accidentally got clobbered during the send was the checksum part. Regardless, since it does not match, a request is made to resend the chunk. Could the checksum data be altered and the data be altered such that it appears that the data is correct? Sorry, not the place to discuss that. But, ...

Security

It is important to know, that even though the source and target files might be sensitive files that need to be secured for normal access, that during the FTP process, the data is not secure, meaning, it is sent as the straightforward data, albeit in chunks (with the checksum). Anyone having access to the data lines could collect the chunks and reassemble to come up with a copy of the original file data that was intended to be secure. To solve this possible threat, the data would need to be encrypted before sending or all communications between the two computers be encrypted. FTP does not support encryption. There are other protocols that are for secure file transfers. One protocol is known as Secure Copy Protocol (SCP), and another is Secure FTP, or SFTP for short. When choosing a file transfer client, keep this in mind.

File Transfer Client Choices

There are many file transfer programs available, with over a hundred for Windows™ alone.  They use the common protocols such as FTP, SCP, and SFTP. The price ranges from free to several hundred dollars.  It turns out that if you compare all of them, that a couple of the free ones are only outdistanced by the few applications that you can spend the most amount of money for, and those are generally for very specialized uses; therefore, my recommendations are the two free choices that compares so favorably. One started out as an FTP program, but added secure protocols, and the other started out for secure transfers, but has added standard FTP, in addition to later designed more secure protocols. Luckily, both are Open Source programs, freely available for download and use. Of course, if the program is valuable to you, you can always make a donation.

FileZilla

It started as a school project, and specifically since there were many FTP programs that cost money, it didn't seem feasible to charge for it; therefore, the developers (led by Tim Kosse) decided to release it as an "Open Source" project.*  Since the program's introduction (2001) it has gained more success than all the other FTP clients.  FileZilla's comment on their web site: "FileZilla is a cross-platform graphical FTP, FTPS and SFTP client with a lot of features, supporting Windows, Linux, Mac OS X and more. It has been designed for ease of use and with support for as many features as possible, while still being fast and reliable."

You can download FileZilla at FileZilla on SourceForge.  You will not need to navigate to a different screen to get the latest version of the software.

WinSCP

The WinSCP program is named for the operating system it was developed for (Windows) and the original protocol it supported (SCP). SCP stands for Secure Copy Protocol. SCP allows communications between computers to be securely connected. Therefore, file transfers will be secure. Anyone having access to the data lines will not be able to make use of the small chunks of data being sent between the two computers.

The Secure Copy Protocol was an improvement in security compared to FTP, but it has limitations compared to later protocols, such as Secure FTP. Therefore, WinSCP has implemented Secure FTP. WinSCP now suggests using SFTP instead of SCP.

SCP and SFTP require a special type of connection called Secure Shell Access (SSH). Because of the possible security risks, not all server operating companies offer SSH access. Some will offer SSH access if requested, some only for a fee, and some will not allow SSH access without a security check, or not at all. As a result, having an early version of WinSCP may not allow you to connect to every server you would like to using SCP and SFTP. Therefore, in later versions the designer implemented standard FTP protocol so that you will not need another program.*

Standard FTP does not have the ability to alter any file attributes, such as the file timestamp values. When a file is transferred, the destination file will have the last modified date be when the last chunk was written to the file on the destination end. Even though the file is identical to the source file, the two files appear to be last modified at different times. Ideally, the timestamp on the destination end would be the same as the source file modification timestamp. SCP and SFTP allow this feature. WinSCP uses this feature to set the last modified timestamp be the same on both ends. Therefore, WinSCP can be used to not only transfer files between two computers but to perform a synchronization to ensure both systems have identical files with identical timestamps (only files that have been modified will be copied to the other computer, which can save a lot of time if the entire file set is huge, such as a large website).

WinSCP's comment on their web site: "WinSCP is a SFTP client and FTP client for Windows. Its main function is the secure file transfer between a local and a remote computer. It uses Secure Shell (SSH) and supports, in addition to Secure FTP, also legacy SCP protocol."

You can download WinSCP at WinSCP on SourceForge.  You will not need to navigate to a different screen to get the latest version of the software.

Conclusion

While you are at the SourceForge Website, spend some time understanding why developers are creating "open source" projects in the first place.  You are free to contribute to any SourceForge project.