Visual RFC.
ALL RFCs / RFC 6691
Read the RFC ↗
RFC 6691 / MECHANISMS

Advertise receive space, not packet size

01

TCP 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.

RFC 6691 · § 2EXAMPLE
4 / 4
04
Apply the advertised bound to later data.

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.

Advertise receive space, not packet sizeAfter 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.Later data flows toward that receiverData senderData receiverafter connection establishmentIP + TCP base40 bytesTCP data1460 bytesIP packet total 1500 / budget 1500Header fields are schematic, not to byte scaleMSS ≠ receive window ≠ guaranteed path capacity

Key idea: The endpoint advertising MSS is the receiver of the data it limits.

Terms

Look up a term in the glossary ↗

Rules & examples
  • 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
Protocol participantThreat or exceptionProtocol controlSimplified drawings · precise section references
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.

What changed
RFC 6691 · July 2012 Informational clarificationRFC 9293 · current TCP specification

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 ↗

All chapters in RFC 6691

Drawing view

Scroll the drawing to see every part. Playback controls stay above it.

RFC 9700 / CHAPTERS

Chapters

For full details, tables, algorithms, and exceptions, read the original RFC.

RFC status and corrections ↗