RFC 1122 · · Internet Standard
Ten years of TCP/IP bug reports, written down.
The official title is "Requirements for Internet Hosts, Communication Layers." What it actually is: a correction sheet for everything below the application, compiled in 1989 from a decade of TCP/IP implementations quietly disagreeing with each other.
Written by Noel Lang · IT trainer
TL;DR
RFC 1122 tells an internet host what it must do below the application layer. It defines no protocol. Instead it walks through IP, ICMP, UDP and RFC 793 and pins down, clause by clause, the behaviour that a decade of independent implementations had been quietly disagreeing about. It is half of STD 3 (the other half is RFC 1123 ), it is the home of the Robustness Principle, and it is still an Internet Standard.
The problem it solves
By the late 1980s, TCP/IP had been implemented dozens of times by people who had never met, from specifications written a decade earlier. Those specifications were clear about the wire format and vague about behaviour. What should a host do with an ICMP message it does not understand? How long may it wait before acknowledging? What counts as a valid IP option?
Everyone answered slightly differently, and the answers only collided when two stacks met on a real network. The internet did not have a protocol problem, it had an interpretation problem.
RFC 1122 is the answer. It goes through each layer and, for each open question, writes down a rule with exact force: this you must do, this you should, this you may. It needed those words so badly that it defined them itself, in section 1.3.2, eight years before RFC 2119 made that vocabulary standard for every RFC that followed.
The building code
A specification is an architect’s drawing. It tells you what the building is: the shape, the dimensions, where the load-bearing walls go. It cannot tell you everything, because it was drawn before anyone had lived in one.
RFC 1122 is the building code, and building codes are written after the collapses. Every rule in it is a scar. Somebody’s host once ignored an ICMP redirect and blackholed its own traffic, so now there is a clause. Somebody’s stack once fragmented a packet it should have dropped, so now there is a clause about that too. The document reads dry because a list of scars always does.
That is also why it is not a replacement for the drawings. You still read RFC 793 to learn what TCP is. You read RFC 1122 to learn what a TCP that survives contact with strangers must actually do. The famous line in section 1.2.2, be conservative in what you send and liberal in what you accept, is not a slogan. It is the philosophy of a document written by people picking through wreckage.
What the RFC actually says
Long, and organised as a walk down the stack. Nobody reads it end to end; people look up the clause they are arguing about:
| Section | In plain words |
|---|---|
| 1 · Introduction | Why the document exists, and the famous section 1.2.2: be conservative in what you send, be liberal in what you accept. |
| 1.3.2 · Requirement words | Defines MUST, SHOULD and MAY, eight years before RFC 2119 made that vocabulary universal. |
| 2 · Link Layer | The short one. Mostly about ARP, and about not assuming every network looks like Ethernet. |
| 3 · Internet Layer | IP and ICMP, clause by clause: fragmentation, the time-to-live, and which ICMP messages a host must answer rather than ignore. |
| 4 · Transport Layer | The heart of it. Four pages on UDP, thirty on TCP: retransmission timers, urgent data, keep-alives, and the rules for closing a connection cleanly. |
Things people get wrong
-
"RFC 1122 defines TCP."
It defines nothing.
defines TCP; RFC 1122 is the document that went back through it after ten years and said, clause by clause, what implementers had been getting wrong. Think specification versus errata. A stack that implements 793 alone will mostly work and will surprise you at the edges, which is precisely why 1122 was written. -
"STD 3 is a document."
STD 3 is a pair. RFC 1122 covers the communication layers and
covers the applications, and the standard number refers to both together. Standard numbers name a requirement, RFC numbers name a document, and one requirement can span several documents. The same is true of STD 6, which is just alone. -
"Be liberal in what you accept is timeless advice."
It was written when the danger was two university stacks failing to talk. Thirty years of experience have shown the other side of it: every implementation that quietly accepts malformed input teaches senders that the malformation is fine, until the tolerance becomes the de-facto protocol and a strict parser is the one that looks broken. The IETF has since revisited the principle. Being liberal is a kindness with a long invoice.
Where you'll meet RFC 1122
Rarely by name, often by consequence. Where it surfaces:
| You see | What it means |
|---|---|
| "Postel's Law" in a code review | Someone is quoting section 1.2.2, usually to justify accepting input that a stricter parser would have rejected. |
MUST and SHOULD in a 1990s RFC |
The vocabulary RFC 1122 defined for itself, before RFC 2119 turned it into a site-wide convention. |
| "Compliant with STD 3" in a datasheet | A claim that the device follows both RFC 1122 and RFC 1123. Whether anyone checked is another matter. |
| A TCP stack with a two-minute TIME-WAIT | One of the many operational constants that RFC 1122 pinned down where RFC 793 had left room for argument. |
Questions people actually ask
What is RFC 1122? +
RFC 1122 is a requirements document from 1989 that says what an internet host must, should and may do at the link, IP and transport layers. It does not define any protocol; it corrects and clarifies the ones that already existed, based on ten years of implementation experience. Together with RFC 1123 it forms STD 3, and both are still Internet Standards.
What is the difference between RFC 1122 and RFC 1123? +
They are two halves of one document, published the same day by the same editor. RFC 1122 covers the communication layers: link layer, IP, ICMP, UDP and TCP. RFC 1123 covers the application layer: Telnet, FTP, SMTP and DNS. Together they are STD 3, the requirements every internet host is measured against.
What is the Robustness Principle? +
"Be conservative in what you send, be liberal in what you accept." RFC 1122 states it as a design rule for hosts: emit only strictly correct output, but tolerate input that is technically malformed if its meaning is clear. It is often called Postel's Law after Jon Postel, who first phrased it. Modern practice treats it with more suspicion than 1989 did.
Is RFC 1122 still current? +
Yes. It is an Internet Standard and part of STD 3, and it has never been obsoleted. Individual clauses have been updated by later RFCs, for example the TCP rules by RFC 9293, but the document itself still stands. When a specification says a host "must follow STD 3", this is half of what it means.
Referenced by
Other explainers on this site that point back to this RFC:
How RFC 1122 connects
What came before
-
RFC 793 (1981) defined TCP. RFC 1122 does not replace it; it goes through the spec and says what implementers had been getting wrong, clause by clause.
What it works with
-
RFC 1123 · companion
The other half of STD 3
Published the same day by the same editor. RFC 1122 handles everything below the application, RFC 1123 handles everything above. Neither makes sense without the other.
-
RFC 2119 · standardised its vocabulary
The MUST and SHOULD it had to invent
RFC 1122 needed words with exact force and defined its own MUST, SHOULD and MAY in 1989. Eight years later RFC 2119 made that vocabulary official for every RFC that followed.
-
RFC 768 · specifies its use
What a host must do with UDP
RFC 768 is three pages and leaves plenty open. RFC 1122 fills in the operational rules, including when a host may skip the UDP checksum and what it must do with a bad one.
Part of a guided cluster: The networking basics, explained