Advertise receive space, not packet size
01TCP carries an ordered stream of bytes between two endpoints. Maximum Segment Size (MSS) is an option one endpoint sends to describe how much TCP data it can receive in an ordinary segment.
After establishment, a chosen no-options packet from left to right can contain 1460 data bytes plus 40 fixed-header bytes. Smaller packets are allowed; the reverse data direction has a separate limit.
Key idea: The endpoint advertising MSS is the receiver of the data it limits.
Rules & examples
The endpoint advertising MSS is the receiver of the data it limits.
- RFC 6691 is an Informational clarification, obsoleted by the current TCP specification RFC 9293. Its distinction between advertising MSS and sizing individual packets is retained in RFC 9293 section 3.7.1.
- RFC 6691 section 2 says the advertised MSS SHOULD subtract only fixed IP and TCP headers from the chosen effective MTU, and SHOULD NOT subtract possible options. A Maximum Transmission Unit (MTU) is a byte budget for a complete IP packet, including its headers.
- The fixed TCP header is 20 bytes. The fixed IPv4 header is 20; the fixed IPv6 header is 40. With a chosen 1500-byte effective MTU, the ordinary examples advertise 1460 for IPv4 or 1440 for IPv6. These are worked values, not universal defaults.
- The MSS option has Kind 2, Length 4 and a 16-bit value. It MUST NOT be sent in segments without SYN, TCP’s connection-start flag (RFC 9293 section 3.2). A SYN-ACK can advertise the other endpoint’s independent receive limit.
- The example’s right endpoint advertises 1460 to the left sender. After connection establishment, left-to-right data uses that receive bound. MSS is neither a receive-window advertisement nor a promise that the whole network path can carry that packet.
Only ordinary, non-jumbogram TCP is illustrated. The chosen MTU and receive capability are assumed suitable; RFC 6691 does not select an MTU for a multi-homed host. Header drawings are schematic, not to byte scale. Modern absence-of-option defaults are 536 for IPv4 and 1220 for IPv6 (RFC 9293 section 3.7.1).
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 ↗