How do I move data between systems?

Moving data between computer systems requires a transfer protocol on each side of the connection. Basically, a transfer protocol is a program which divides data being sent into manageable "chunks" or packets and sends it to another system where it is received and reassembled. Usually, the protocol performs some type of error-check on the data. Error-checking runs an algorithm on the packet and includes the results of the calculation in the packet. When the remote side receives the packet, it performs the same calculation and compares the results with those sent by the local computer. If the results match, the packet is considered correct. If the results don't match, the packet is considered incorrect. Each computer must run the same protocol in order to communicate clearly. A protocol is like a language. If you speak English, the person you are speaking to must understand English in order for you to successfully communicate. If the person you're speaking to only understands French, your attempt to communicate will fail.

Some common transfer protocols include XModem, YModem, ZModem and Kermit. These protocols are considered public-domain and are readily available for many systems including PCs, UNIX and Macintosh. Kermit supports a wider base of systems including UNIX systems and mainframes. UNIX-to-UNIX connections can use UUCP (UNIX-to-UNIX copy) for transferring files. UUCP is part of every UNIX operating system. In addition to these public-domain protocols, some commercial software vendors have developed transfer protocols with added features like compression, faster throughput, restart and automation. Most commercial software packages support public-domain protocols in addition to their own protocols.

Here is an example of how a transfer occurs:

  1. First, a physical connection between two system is established.

  2. Next, the transfer protocol program runs on the remote computer.

  3. Finally, the transfer is initiated.

Here is how a transfer might sound if it could be overheard.

Local: Excuse me but I would like to send you some data. Would that be okay?

Remote: Sure, go ahead.

Local: First, let me give you some background information. The file I am sending is named budget96.xls and its size is 5,284 bytes.

Remote: Okay, as I understand it you will be sending a file named budget96.xls and its size is 5,284 bytes.

Local: Here is the first 1K of data including my error-check calculation.

Remote: Thank you for the data. I have performed my own calculations and our results match. Please send another packet.

Local: Here is the second 1K of data including my error-check calculation.

Remote: Thank you for the data. I have performed my own calculations and our results match. Please send another packet.

This continues until the file is completely transferred, the results of the error-checking calculations do not match, or the remote system stops responding. Let's assume an error has occurred:

Local: Here is the third 1K of data including my error-check calculation.

Remote: Thank you for the data, but it would appear that our calculations do not match. Would you please re-send the data?

Local: Sure. Here is the third 1K of data including my error-check calculation.

Remote: <No response>

Local: Here is the third 1K of data including my error-check calculation.

Remote: <No response>

Local: It would appear that I have been disconnected from the remote system. I will need to let my user know. "Transfer aborted."

This example simply demonstrates how a transfer occurs. The actual communication is more complex.