01/02/03

Hiltzik, Chapter 20

Pages 289-299

The use of Altos at Xerox PARC led to many Local Area Networks (LANs), each limited in size by how far you could string coaxial cable for the Ethenet. As LANs spread around the country, people with computers on one LAN wanted to work with people on other LANS, perhaps too far away to string coax to extend the Ethernet LAN. ARPANET, the network Taylor had established when he was at ARPA, faced similar problems, but the problem was more pressing for Xerox because Xerox had more networks.

Metcalf and Boggs, who had developed the Ethernet, and others at PARC came up with the idea of enclosing a packet of data in a sort of electronic envelope that described both the source and the intended destination of the packet, as well as which particular piece of the overall data stream that the packet contained. The LAN understood the information on the envelope, but did not need to understand the data. If the packet needed to leave the LAN that had originated the packet and travel on a LAN with different conventions, or protocols, the envelope could be changed (or stuffed inside another electronic envelope) to suit the LAN on which the packet needed to travel.

By about 1974, Xerox had developed and demonstrated this approach to connecting LANs with about 500 computers. Patent concerns at Xerox, however, limited the ability of PARC workers to share all they knew with their ARPANET colleagues, even though Xerox PARC was connected to the ARPA and thereby had some responsibility to share relevant information. To deal with this dilema, the people at Xerox PARC chose to provide useful veiled hints to the ARPANET workers as they developed the TCP/IP network. ARPANET became the foundation of today's Internet, which uses the TCP/IP protocol.

For his doctoral research at Stanford, John Schoch was investigating how much the collisions between transmitted messages on an Ethernet LAN, and the subsequent retransmissions, limited the effective capacity of the LAN. Schoch began by writing a program that would spew bits onto the Ethernet for 10 minutes, beginning at midnight, without interruption. He planned to load the program onto 100 idle Altos and then collect data on how many of the packets from each machine got through to their destination in comparison to how many got tied up in the system by gridlock. Schoch soon figured out that loading the program onto 100 machines was a huge job, so Schoch and Boggs wrote software that would cause the Altos to send a message to Schoch's machine when they were free and then reboot from Schoch's software. Next, Schoch figured out that he could speed up the process if the program running on each Alto, not just the copy running on his own control machine, had the capability of looking for idle Altos and adding them to the group until the number totaled 100.

For a while, things went fine. Then one night, a copy of the program on one machine became corrupted, for some reason they never understood, and eventually caused the machine on which it was running to crash. Before the machine crashed, however, it passed along the corrupted program to other machines, which in turn passed along the corrupted program and then crashed. Eventually, all the machines on the network crashed. When people came in the next morning, they rebooted their machines when they saw they had crashed, and the machines worked fine -- until they became idle. Then, the corrupted program would take over and crash the machine again. Schoch had created the first network "worm," named from a science fiction novel that described a "tapeworm" program that destroyed a global computer network used by evil forces.

Schoch thought he had been careful to make the worm harmless by not letting it access the disk drives of the machines on which it ran, but additional precautions proved necessary in practice. With appropriate precautions, Schoch's basic idea can be used successfully to let one computer call other computers on a network for help with its work when other computers on the network become idle.