(PC Week, Nov. 1987 pp C/16)
In the late 1960s, a new technique for data communication was developed for use by the Army Advanced Research Projects Agency (AARPA). The technique, called packet switching, allowed for the rapid transfer of data from many sources to many destinations simultaneously over a single network, the first of which was called the AARPA-net.
A packet-switching network starts by dividing data into fixed-length chunks, called packets. Using packet switching, two devices (usually a terminal and host computer or two hosts) can communicate over a network without a fixed data path being established between them.
Instead, the data packets are routed over one of many pathways, the network choosing which links to use according to the state of the network, much as a driver in a car can listen to a traffic report on the car's radio and avoid the more congested routes. Because data can be routed around a downed connection, the loss of a transmission line will not cripple the network.
In addition to providing network breakdown recovery through detour capability, the breaking up of data into discrete, separately routed chunks allows the network to establish far more virtual connections than discrete physical connections. Just as numerous cars use a main street, with each eventually turning into its own driveway, so can many packets use a single interstate connection, each then being routed to the proper host-network connection. Because packets from many transmissions are mixed within the line, it is extremely difficult to decipher the transmitted data stream; thus, an added measure of security is provided.
While packets in one data stream may mix with several other stream's packets during their journey, it is unlikely that two stream's packets will travel together during the entire length of their trips. Like cars in a city, packets in a network usually take more than one street to go from one place to another.
Most nationwide networks have large-capacity trunk lines connecting contiguous major cities, and smaller lines to smaller cities. The communicating devices do not need to know which intermediate nodes to route the data to the network itself takes care of routing the packets.
There are two general methods by which this can be done. The first involves adding a destination and sequence number to each packet, in addition to information about the stream to which the packet belongs. In this case, a route would be chosen for each individual packet as it is accepted into the network, and the packets would be reassembled at the other end of their journey back into a continuous data stream using the sequence number, which tells the network where in the stream the packet belongs. The sequence number is necessary because different routes may deliver packets at different speeds, with the result that data packets may arrive out of order.
The second routing method involves creating a virtual circuit. In this case, once a device informs the network of its desire to communicate with another device, the network determines an end-to-end route that all the packets will take, in essence creating a temporary direct connection between each end. Thus, the packet need only contain information about which stream it belongs to, not information about its destination or position in the sequence.
Code Interpretation
To actually interpret the stream of ones and zeros that makes up data communication, computers use one of a few different codes. For example, in an 8-bit code (where each bit is either a 1 or a 0), “00000001” might mean “A,” “00000010” might mean “B” and so on.
In addition to the translation of the code, the communicating devices must be told how to find the beginning and end of each character representation. This is done through a communications protocol.
The simplest communications protocol is rudimentary asynchronous communication in which a "start bit" and "stop bit" (a single 1 or 0) is added to each charactor.
Several other forms of protocol fall under the synchronous-communications category. Under those protocols, characters are transmitted in blocks (which may or may not correspond to the packets transmitted by the network). Each block contains many characters, as well as information allowing the communicating devices to synchronize their data interpretation, and information used in error checking. Each type of synchronous protocol uses a different way of encoding that information.
Protocol conversion allows devices that use different protocols to communicate, by translating between different ways of encoding information.