Networks · 1974 · Vinton G. Cerf & Robert E. Kahn
A Protocol for Packet Network Intercommunication
Interconnect heterogeneous packet networks through gateways while end hosts provide process communication, sequencing, retransmission, and flow control.
How to read the original
- Start with the heterogeneous-network problem and the role of a gateway.
- Trace addressing, packet sizing, sequencing, acknowledgements, and flow control as distinct responsibilities.
- Treat this as an early internetwork transport design, not the final specification of today’s separated TCP and IP protocols.
A network of networks cannot assume one local design
Cerf and Kahn address communication across packet networks with different packet sizes, delays, and internal procedures. Gateways connect those environments while host mechanisms support process communication and recovery. The 1974 design precedes the mature split between TCP and IP. Teaching it as the final modern protocol obscures both its actual proposal and the later evolution of responsibilities.
Consider an original simplified transfer of twelve bytes, ABCDEFGHIJKL. Network A permits eight payload bytes per local packet, while network B permits four. A boundary cannot assume that an eight-byte unit will traverse B unchanged. Some layer must fragment, repackage, or otherwise adapt the representation while preserving enough information to reconstruct the intended data. The exact location of that work is a design decision, not something dictated by the word packet.
Sequence numbers identify data, not attempts
For a teaching transport, label segments by the offset of their first byte. Send offsets zero carrying ABCD, four carrying EFGH, and eight carrying IJKL. Suppose the network delivers offset eight first, offset zero next, and loses offset four. A receiver buffering out-of-order data can hold IJKL, then deliver ABCD, while still identifying four as the next missing contiguous offset.
If an acknowledgement means the next byte expected contiguously, it can report four despite already possessing bytes eight through eleven. When the sender retransmits offset four, the receiver can deliver EFGHIJKL and acknowledge twelve. A delayed duplicate of offset zero must not cause ABCD to appear twice in the application stream. The sequence identifier names the same data across retransmission attempts.
Separate uncertainty from failure knowledge
A timeout does not prove that the receiver lacks the data. The data may have arrived while its acknowledgement was lost. Retransmission therefore needs duplicate handling. If sequence numbers simply increased on every send attempt, the receiver could mistake a retry for new content. Correctness depends on stable data identity and explicit acknowledgement semantics.
Flow control addresses receiver capacity. If a receiver advertises space for four additional bytes, sending an unbounded amount can overflow its buffers even when the network is otherwise healthy. Congestion control concerns load on the network itself and is a different problem. A protocol that respects receiver capacity can still overload an intermediate path. The historical design should not be credited with every later congestion-control mechanism.
Trace boundaries all the way to the application
End-to-end delivery of a byte sequence does not automatically mean an application processed a request exactly once. A server might commit an operation and crash before returning a response. Retrying the application message can repeat the operation unless the application supplies its own identity and deduplication contract. Transport sequence numbers generally belong to one connection’s data transfer, not a permanent business transaction.
Checksums, addressing, connection setup, and lifetime rules also matter. A packet carrying old data from a previous connection should not be accepted as fresh merely because its offset matches. A simplified simulator must either model this issue or state that it assumes a single isolated transfer without delayed packets from earlier sessions.
The paper’s design lesson is to preserve local network independence while defining enough shared behavior for communication across boundaries. To evaluate a proposed protocol, write an event trace including loss, duplication, reordering, and delayed acknowledgements. Then identify exactly which state prevents each failure. A successful clean-network demonstration does not establish that those mechanisms are correct.
Reconstruction exercise
Trace a transfer of bytes abcdefgh using four-byte segments. The first data segment arrives, but its acknowledgement is lost. The sender times out and retransmits it before sending the second segment. Show receiver buffer state, delivered application bytes, and acknowledgements after each event under next-contiguous-byte acknowledgement semantics. Then explain how a receiver capacity of four bytes constrains sending and why that limit alone does not solve network congestion. State one assumption your trace makes about connection identity.
Worked solution
Initially the next expected offset is zero. Receiving offset zero with abcd delivers those bytes and advances the acknowledgement to four. Losing that acknowledgement changes no receiver state. The retransmitted offset-zero segment is recognized as already delivered, so the receiver does not append abcd again and returns acknowledgement four. The sender can then send offset four with efgh; delivery yields abcdefgh exactly once and acknowledgement eight. A four-byte receive window limits unconsumed or otherwise permitted outstanding data according to the protocol’s exact buffer policy. It protects the receiver’s storage, not the capacity of every router or link, so congestion requires separate reasoning. The trace assumes one connection incarnation and no old packets whose offsets could be confused with its data. A more complete protocol needs connection identifiers and lifetime rules to justify that assumption.
Test the limits and transfer the idea
1. Protocol trace · allow 40 minutes
Reassemble retransmissions with different boundaries
The paper explicitly considers a packet fragmented differently on a retransmission route. Use an original 12-byte stream ABCDEFGHIJKL with absolute byte offsets 0 through 11. A first route splits it into [0,6) and [6,12); a retry route splits it into [0,4),[4,8),[8,12). Assume identical payload bytes on retries, one connection incarnation, a receiver that buffers out-of-order bytes, and acknowledgements equal to the next undelivered contiguous offset.
Deliver [6,12), then [0,4), then [4,8), then delayed [0,6), and finally [8,12). After each event give newly delivered bytes, buffered undelivered ranges, and acknowledgement. Explain why packet IDs or packet counts cannot replace byte-range identity in this trace. State how conflicting overlapping bytes would require an additional policy.
Get a starting hint
Treat each fragment as a half-open interval. Duplicate bytes and new bytes can occur in the same arriving fragment.
Compare your reasoning with the worked solution
Initially the next offset is zero. Arrival [6,12) supplies GHIJKL, but the prefix is missing: deliver nothing, buffer [6,12), acknowledge 0. Arrival [0,4) supplies ABCD: deliver ABCD, retain [6,12), acknowledge 4. Arrival [4,8) supplies EFGH. Its bytes at 6 and 7 overlap buffered G,H; combine them without duplication. The entire suffix [4,12) is now contiguous, so deliver EFGHIJKL, empty the buffer, and acknowledge 12.
The delayed [0,6) contains only previously delivered bytes, so deliver nothing and acknowledge 12. The final [8,12) is likewise redundant. The application sees exactly ABCDEFGHIJKL. Two original packets and three retry packets describe the same twelve bytes; counting packets or assigning new identities to retry fragments would obscure which content has already arrived. The shared byte coordinate system survives a changed fragmentation boundary.
This model assumes every overlapping representation agrees. If a fragment instead gives a different value for byte 6, silently mixing first-arrival and last-arrival rules across middleboxes and hosts can produce inconsistent streams. A complete protocol needs integrity checks and a defined overlap policy. The exercise does not claim modern TCP and IP use the same fragmentation responsibilities as the 1974 combined design. It reconstructs the paper's explicit reasoning about stable byte positions across gateways and retransmissions.
Check your reasoning
- Traces all five events without duplicating overlapping bytes.
- Explains why byte identity survives changed packet boundaries.
- States consistency and historical-layering assumptions.
2. Counterexample and bounds · allow 45 minutes
Construct ambiguity in a finite sequence space
Use an original selective-buffering teaching protocol with sequence numbers modulo 8. Each data item occupies one number. The receiver accepts items in a window of width w and advances after contiguous delivery. Start at left edge 0 with w=5. The sender transmits items numbered 0,1,2,3,4; the receiver delivers all five, but every acknowledgement is lost. The sender retransmits those old items.
List the receiver's new acceptance window and show an old item that can be mistaken for new data. Repeat the window comparison with w=4 and explain the half-space condition. Then show why even a half-sized window is insufficient if an old duplicate can survive a complete sequence-number cycle. Relate the example to the paper's finite-number and lifetime concerns without claiming it specifies this exact simulator.
Get a starting hint
After five delivered items, the width-five window wraps through zero. The receiver cannot see an untransmitted absolute counter.
Compare your reasoning with the worked solution
After delivering 0 through 4, the receiver's left edge is 5. A width-five window contains residues {5,6,7,0,1}. Old retransmissions numbered 0 and 1 now fall inside it. A receiver that keeps out-of-order data can store them as if they were future absolute items 8 and 9. Once genuine items 5,6,7 arrive, stale content can be delivered in those future positions. The lost acknowledgements leave the sender unaware of the receiver's progress.
For w=4, the original window {0,1,2,3} and the immediately following window {4,5,6,7} are disjoint. More generally, two consecutive windows of width w in a space of N numbers need 2w<=N to avoid this particular overlap. This establishes a necessary separation for the stated scheme, not a complete proof of protocol correctness. The historical discussion uses a half-space restriction in its window reasoning; exact endpoints and inclusive conventions must be read with the definitions rather than inferred from a slogan.
After a full cycle, the left edge can again have residue 0. A sufficiently old copy of original item 0 then looks like a new item with absolute index 8. Limiting window width alone cannot distinguish their ages. One needs a justified packet-lifetime/reuse policy or an incarnation mechanism with appropriate assumptions. Loss, duplication, wraparound, and connection reuse are separate dimensions; a test covering only the first wrap does not establish safety against indefinitely delayed packets.
Check your reasoning
- Identifies stale residues 0 and 1 inside the new width-five window.
- Derives the half-space separation with stated endpoint conventions.
- Gives the full-cycle duplicate counterexample and a necessary lifetime assumption.
Check your understanding
An acknowledgement is lost after data arrives. What must a retransmission preserve?
- The identity of the same byte range so the receiver can suppress duplicates.
- A new application payload every time.
- Proof that the receiver crashed.
Explanation
A timeout creates uncertainty; stable sequence identity makes retries safe for stream delivery.
What is the difference between flow control and congestion control?
- They are identical names for checksums.
- Flow control protects receiver capacity; congestion control addresses load in the network.
- Flow control proves application requests execute once.
Explanation
The two mechanisms protect different resources and guarantees.
Original paper and sources
Vinton G. Cerf and Robert E. Kahn. A Protocol for Packet Network Intercommunication. IEEE Transactions on Communications COM-22(5), May 1974. Linked resource is a university-hosted primary-paper reprint.
Read the original paper →Read the primary paper: University of California, Santa Barbara
- A Protocol for Packet Network Intercommunication: University of California, Santa Barbara