The requirement keywords: MUST, SHOULD, MAY
Every IETF spec runs on these words. Reading them wrong is the #1 way implementations diverge.
- MUST / REQUIRED / SHALL — absolute
- SHOULD — deviate deliberately, not accidentally
- MAY — and the interop obligation people forget
- How RFC 9110 itself states the rule (all-caps only)
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OP
- "Length requirements" — a case study in reading SHOULD/MUST precisely
A recipient SHOULD parse a received protocol element defensively, with only marginal expectations that the element will conform to its ABNF