Evolution of the TCP/IP stack

There were many experiments with computer networks in the 1960s, but the first large scale network to begin operation was the ARPANet, contracted for by the Advanced Research Projects Agency of the Department of Defense. It started with only four nodes in 1969. Note that each computer was a different model with a different operating system -- UCLA used an SDS Sigma 7, UCSB an IBM 360, SRI an SDS 940, and Utah a DEC PDP 10. But, the same communication protocol was used by all of them. Data packets were the same size and format, transmission error checking was the same, the protocol for transmission and acknowledgement was the same, etc.
The ARPANet was put into operation but continued to grow and evolve. It is shown here in 1977. Note that there are different physical links, notably the wireless links to Europe and Hawaii, but the same communication protocol was used throughout the network. In a sense, it was a large local area network (LAN). The ARPANet protocols were the forerunners of protocols like Ethernet, which we use to network dissimilar hosts like Macintoshes and Windows PCs on our LANs.

These maps show the growth of the ARPANet.

ARPA had several experimental networks at this time, and they wished to tie them together. They wanted to create an inter-network connecting the ARPANet with a satellite network and a terrestrial packet-radio network. Each of these networks used different protocols, had different physical links, different packet sizes, etc. Bob Kahn and Vint Cerf collaborated on this problem.

In 1974, they published a paper defining a Transmission Control Protocol (TCP) for connecting dissimilar networks. Today we would call the gateways shown in this diagram routers. They routed packets between networks.

The finial TCP protocol both routed packets between computers and took care of reliable connections. Since the researchers working on voice applications did not need reliable connections -- they did not want to re-transmit data when errors occurred -- TCP was broken into two layers, the network layer and the transport layer.

The job of the network layer was simple -- to route packets between networks. The Internet Protocol (IP) is used to route packets between networks today. It is unreliable. It does not do error checking and does not guarantee packet delivery. It only makes a best effort to get a packet to the intended destination.

For applications that required reliable, error free communication, a transport layer, also called TCP, was invented. Applications that do not require error checking use a faster transport layer protocol called the User Datagram Protocol (UDP).

The data link layer protocol reliably moves data within the LAN as did the ARPANet protocol.

LayerExamples
ApplicationHTTP, SMTP, POP, Ping
TransportTCP, UDP
Network IP
Data linkEthernet, ATM, PPP
Physical radio, twisted pair, fiber

You do not have to take my word for this; you can listen to this interview of Bob Kahn himself.


Disclaimer: The views and opinions expressed on unofficial pages of California State University, Dominguez Hills faculty, staff or students are strictly those of the page authors. The content of these pages has not been reviewed or approved by California State University, Dominguez Hills.