Give options room in each packet
02Optional header fields take bytes inside a packet. They do not create extra space just because the MSS advertisement was calculated without them.
For the same 1500-byte budget,40 IPv6 base-header bytes plus 20 TCP base-header bytes leave MSS 1440. Subtracting 12 additional-header bytes leaves 1428 data bytes.
Key idea: The data sender MUST reduce data length for the IP and TCP options it actually includes.
Rules & examples
The data sender MUST reduce data length for the IP and TCP options it actually includes.
- The sender, not the advertising receiver, knows which optional headers it puts in each outgoing packet. Option lengths can vary between packets; MSS does not renegotiate for every such change.
- With a 1460-byte IPv4 MSS and a 1500-byte packet budget, adding 12 bytes of TCP options to 1460 data bytes would make 1512 bytes. Reducing data to 1448 makes 20 +20 +12 +1448 =1500.
- The 12-byte option-and-padding allowance is illustrative; it is not the size of the MSS option, which is 4 bytes. TCP options and padding occupy the TCP header, not application data.
- IPv6 uses a 40-byte base header instead of 20. With the same chosen 1500-byte budget, MSS 1440 and 12 bytes of additional headers leave 1428 data bytes. IPv6 extension headers also consume the per-packet budget; current terminology is clarified by RFC 9293 section 3.7.1.
- These calculations assume a suitable receive MSS and a path budget no smaller than 1500. A peer MSS alone never overrides a smaller IP-layer transmission limit.
The example packs one segment up to the chosen limit; TCP need not fill every segment. Additional bytes denote the headers actually present, including relevant padding, rather than guessed future options. No Timestamp negotiation or option wire parser is simulated.
Sources
New to this? Start hereA quick picture + helpful background
A message needs an address.
Think of a packet as a small addressed envelope. Devices pass it onward; transport protocols decide what delivery promises an application gets.
Helpful first, if these ideas are unfamiliar
These pictures are analogies to help you learn. The linked RFC explains the actual rules.
This guide explains the 2012 publication. Superseded by RFC 9293.
Related RFCs and changes
“Updates” changes part of an earlier RFC. “Obsoletes” replaces it. This list shows selected related documents.
RFC 9293 obsoletes RFC 6691 and incorporates this sizing distinction. This historical guide does not replace the current TCP specification.
Read the updated RFC section ↗