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:
- First, a physical connection between two system is established.
- Next, the transfer protocol program runs on the remote computer.
- 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.