Stagger attempts and stop after the first success
03New attempts can start while earlier attempts remain pending, without launching the whole list at once.
The race is finished and starts no new connection. The resolver still processes this reply during the chosen recommended one-second cache window.
Source for this drawing: RFC 8305 · Read RFC section 5 ↗
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.
Terms in this drawing
Related RFCs and changes
“Updates” changes part of an earlier RFC. “Obsoletes” replaces it. This list shows selected related documents.
Overlapping lifetimes do not imply simultaneous starts.
- Connection attempts SHOULD NOT start simultaneously. Start one destination, then later ones individually after a Connection Attempt Delay. Starting another attempt does not cancel an earlier one. A fixed250ms is one recommended default, distinct from the50ms DNS Resolution Delay (§5).
- A subsequent attempt MUST NOT start within10ms of the previous attempt. The recommended minimum is100ms; the delay SHOULD have an upper bound, currently recommended2s. RTT/history-based pacing can approximate the time of the previous attempt’s first SYN retransmission; it should not imitate later exponential backoff. A fixed250ms illustration is not a requirement to modify TCP retransmission timers (§§5,8).
- The example starts V6-A at0ms and V4-A at250ms. V6-A remains pending when V4-A starts; V4-A’s TCP handshake finishes at320ms. After one attempt succeeds, other not-yet-successful attempts SHOULD be cancelled and unattempted candidates SHOULD be ignored. The selected model follows those recommendations and deterministically breaks equal-time successes by list order as a local convention (§5).
- The asynchronous DNS query MAY be cancelled once a connection succeeds because new addresses will not be used for this connection. Nevertheless the DNS client resolver SHOULD process arriving network replies briefly, recommended1s, to populate its cache for later connections. Cancelling this race is not a requirement to discard every DNS reply (§5).
- A completed TCP connection is only the winner of this establishment process. Later TLS, HTTP, large-packet/MTU issues or service failures can still occur; RFC8305 does not guarantee application success or select a trust identity (§§9–10). The model uses supplied completion times, not real SYN/ACK packets.
Fictional offline examples. The default policy here prefers IPv6. V6-A/B/C and V4-A/B name distinct candidate destinations, not protocol fields. Helpers model selected decisions from already ranked addresses; they are not full DNS, RFC6724/source selection, TCP, TLS, NAT64 discovery or a network implementation. Times and equality ordering are stated example choices.
Read the RFC section ↗