Visual RFC.
ALL RFCs / RFC 5482
Read the RFC ↗
RFC 5482 / TCP USER TIMEOUT

Keep application choices in control

03

The option has local control variables. Enabling it permits sending and receiving suggestions; a separate flag decides whether received advice may change the local timeout.

RFC 5482 · § 3EXAMPLE
4 / 4
04
Receive advice without overriding the application

A peer suggests 900 seconds, but CHANGEABLE is false. Keep USER_TIMEOUT = 500 seconds; notifying the application is SHOULD, not automatic adoption.

Keep application choices in controlA peer suggests 900 seconds, but CHANGEABLE is false. Keep USER_TIMEOUT = 500 seconds; notifying the application is SHOULD, not automatic adoption.Receive advice without overriding the applicationPeer TCPLocal TCPUTO 900 sLOCKEDKeep USER_TIMEOUT = 500 sSHOULD notify application; do not adoptCHANGEABLE = false

Key idea: Explicitly setting USER_TIMEOUT MUST make CHANGEABLE false.

Terms
ENABLED
Whether sending and receiving this option is enabled for the connection.
CHANGEABLE
Whether received advice may change the local USER_TIMEOUT.
ADV_UTO
The value this endpoint advertises to its peer.

Look up a term in the glossary ↗

Rules & examples
  • ENABLED defaults to false and controls both sending and receiving UTO options. CHANGEABLE defaults to true; ADV_UTO is the value advertised to the peer and defaults to the system-wide USER_TIMEOUT if unspecified.
  • An application enables the option before active or passive open if it wants initial SYN/SYN-ACK advertisements. Implementations MAY provide system-wide defaults for ENABLED, ADV_UTO and CHANGEABLE.
  • When an application explicitly sets USER_TIMEOUT, CHANGEABLE MUST become false. This prevents peer advice from overriding the application’s requested local timeout. The application may explicitly set or clear CHANGEABLE through an API.
  • When CHANGEABLE is false, USER_TIMEOUT MUST NOT change because of a received UTO. TCP SHOULD notify the application of the peer’s suggested value (§3.1); that notification is not adoption.
  • Adaptation to received advice requires both ENABLED and CHANGEABLE to be true. Even then the option is not a binding negotiation and local policy/limits still apply. Setting ADV_UTO is distinct from explicitly setting USER_TIMEOUT.
  • The API in RFC 5482 is abstract (§5). A similarly named operating-system socket option is not proof that its implementation transmits this wire option.

The fixture starts from a chosen local timeout of 300 seconds; it does not assert a universal operating-system default. The 500-second application choice and 900-second peer advice are separate values, not a handshake agreement.

Sources
Protocol participantThreat or exceptionProtocol controlSimplified drawings · precise section references
New to this? Start hereA quick picture + helpful background

Suggest how long to keep waiting

Imagine two people holding a shared call open during a brief outage. Telling the other person your waiting limit can help, but they still choose their own limit. This analogy is not a promise that the network or either endpoint will stay available.

Helpful first, if these ideas are unfamiliar

These pictures are analogies to help you learn. The linked RFC explains the actual rules.

Related RFCs and changes

“Updates” changes part of an earlier RFC. “Obsoletes” replaces it. This list shows selected related documents.

All chapters in RFC 5482

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 ↗