JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
Back to the library
Computer Networks 1974

A Protocol for Packet Network Intercommunication

Vinton G. Cerf & Robert E. Kahn

One common protocol to weave separate networks into a single internet.

Choose your version
In depth · the introduction

Before this paper there were networks; after it there was the internet — one set of rules that lets every separate network behave as one.

The idea, unpacked

By the early 1970s several packet-switched networks existed — the ARPANET, packet radio, satellite links — but each was an island with its own rules; a computer on one could not talk to a computer on another. Cerf and Kahn's idea was not to merge them but to leave each alone and lay a common language on top.

Break every message into small numbered packets, let any network carry them however it likes, and have the two end computers take responsibility for putting the pieces back in order and asking again for anything lost. The networks in the middle can stay simple and even unreliable; the cleverness lives at the ends.

Where it came from

Bob Kahn, who had helped build the ARPANET, brought the internetworking problem to Vint Cerf at Stanford in 1973; over a draft famously sketched in a San Francisco hotel lobby they worked out the design and published it in 1974. It drew on a wide community — packet switching from Paul Baran and Donald Davies, the 'datagram' from Louis Pouzin's French CYCLADES network — and was refined for years by an international working group. On 1 January 1983 the ARPANET switched over to it, and the internet as we know it began to run.

Why it mattered

The genius was where they put the smarts. Keep the networks in the middle simple and best-effort — allowed to drop or jumble packets — and make the computers at the ends do the careful work of ordering and re-requesting. That one decision is why the internet could grow without anyone's permission: any new network, any new kind of link, just had to speak the common header at its edge, and it was in. The web, email, streaming, and video calls all ride on the design laid out here.

A way to picture it

Think of mailing a long letter as a stack of numbered postcards. You drop them in the post; some take fast routes, some slow, a few get lost, and they arrive jumbled. The reader at the other end lays them out by number, sees that card 5 never came, and sends back a note: 'resend 5.' Once every number is present, the letter reads in order. The postal system never had to understand your letter — that is exactly how TCP treats the network. Try it in the widget below.

An interactive diagram of TCP reassembly. A message is split into eight numbered segments spelling INTERNET. Three sliders set how badly the network reorders packets, how many are lost, and how many have arrived so far. An arrival strip shows packets coming in out of order, with lost ones retransmitted later; a receive buffer of eight slots fills by sequence number, the unbroken in-order prefix turning green; and a delivered line shows the message assembled so far.

Where it sits

This is a third pillar of the information age, beside Shannon's bit (shannon-1948) and the stored-program computer (von-neumann-1945): Shannon showed how to measure and protect a message, von Neumann how to build the machine, and Cerf and Kahn how to make the machines talk to one another across any network. Public-key cryptography (diffie-hellman-1976) and Bitcoin (nakamoto-2008) are later layers built on top of the internet this paper made possible.

The original document
Original source text
Vinton G. Cerf & Robert E. Kahn · IEEE Transactions on Communications, vol. COM-22, no. 5 (May 1974): 637–648
Abstract
A protocol that supports the sharing of resources that exist in different packet switching networks is presented.
The protocol provides for variation in individual network packet sizes, transmission failures, sequencing, flow control, end-to-end error checking, and the creation and destruction of logical process-to-process connections.
Some implementation issues are considered, and problems such as internetwork routing, accounting, and timeouts are exposed.
Gateways between networks
The paper proposes connecting distinct packet-switching networks through gateways — nodes that belong to two networks at once, accept a packet from one and forward it into the next, route on a common internetwork address, and break a packet into smaller pieces when the next network demands it. Each underlying network is left unchanged and need not know it is part of a larger whole. (Paraphrase of the design; the full argument is at the source.)
[ … ]
The transmission control program
Reliability is made the end hosts' job, not the network's. A transmission control program (TCP) in each host opens a logical connection between two processes — addressed through their ports — and turns the network's best-effort delivery into an ordered, reliable stream of bytes. (Paraphrase.)
[ … ]
Sequencing, flow control, and retransmission
Each segment carries a sequence number, so the receiver can reassemble out-of-order arrivals, discard duplicates, and detect gaps; it returns acknowledgements, the sender retransmits anything left unacknowledged past a timeout, a window paces the sender to the receiver's capacity, and an end-to-end checksum catches corruption the lower layers miss. (Paraphrase.)
Stanford & DARPA · IEEE · May 1974