1.2.6 UUCP— Unix-to-Unix Copy
UUCP is the generic name used to describe a set of programs that can be used to copy files between different systems and to execute commands on other systems. An early version was made available with Version 7 Unix in 1978 and was intended for communication between systems using dial-up telephone lines. Today there are two major flavors of UUCP in use, the version distributed with 4.3BSD, which is derived from the Version 7 software, and a version known as Honey DanBer UUCP. (This name is derived from the login names of its three authors, Peter Honeyman, David A. Nowitz, and Brian E. Redman.) The Honey DanBer version is distributed with System V Release 3 where it is officially called BNU—Basic Networking Utilities. All versions of UUCP communicate with each other, so for our purposes it doesn't matter which specific version is described.
UUCP is a collection of programs. The four that we're interested in are as follows:
uucp This program can be invoked by users to copy a file from one system to another. The term uucp is used to refer to this specific program, and the term UUCP to refer to the collection of programs, uucp is patterned after the Unix cp command, which copies one or more files. A typical use of uucp is
uucp main.c apple\!~uucp
This command says to copy the file main. c in the current directory to the login directory of uucp on the system named apple.
uux This program spools a command for execution on another system. Although a user can execute this command, frequently this command is generated automatically by the mail software or the news software. (For additional details on the Usenet news system, refer to Tanenbaum [19891.)
uucico This program is usually run as a daemon process to perform the actions that have been requested by previous uucp or uux commands. Most Unix systems invoke the uucico program automatically at various times of the day from the /usr/lib/crontab file. This is one fundamental feature of the UUCP system—it is a batch mode system. The uucp and uux commands just queue work, and the work is executed at some later time by the uucico process.
uuxqt Executes files that were generated by uux. Normally uuxqt is invoked by uux or it is spawned by uucico to process execution files that have been received from another system.
Other programs exist in a typical UUCP software package—a program to display the jobs queued for transmission, one to remove a job that's been queued, and so on.
Figure 29 shows the typical operation of UUCP. Note that it is the uucico processes that communicate with each other across the network. There is no capability for a user process to use the UUCP protocols to communicate with some other user process.
The original uucico process supported a single data-link protocol known as the 'g' protocol. This was developed for dial-up or hardwired terminal lines and typically uses 64-byte packets. Its throughput is limited to around 9000 baud, even with higher line speeds. The 4.3BSD version supports two additional protocols. The 't' protocol assumes that the communication channel is error-free and no checksums are used. This protocol is typically used with TCP links. The 'f protocol is used for X.25 links and relies on the flow control provided by the data stream. The T protocol also applies a checksum only to the entire file (not to each packet) and uses a 7-bit data path, instead of the usual 8-bit data path.
Our overview of UUCP is to show where it belongs in relation to the other protocols described in this chapter. There is no ability for user processes to communicate across the network using UUCP. However, UUCP is an important piece of the networking tools used by most Unix sites.
Figure 29. Overview of UUCP processes