5. Verbindungsversuche (Connection Attempts)
Sobald die Liste der bis zu diesem Zeitpunkt empfangenen Adressen erstellt wurde, wird der Client versuchen, Verbindungen herzustellen. Um eine unangemessene Netzwerklast zu vermeiden, SHOULD NOT Verbindungsversuche gleichzeitig durchgeführt werden. Stattdessen wird zuerst ein Verbindungsversuch zu einer einzelnen Adresse gestartet, gefolgt von den anderen in der Liste, nacheinander. Das Starten eines neuen Verbindungsversuchs beeinflusst frühere Versuche nicht, da mehrere Verbindungsversuche parallel auftreten können. Sobald einer der Verbindungsversuche erfolgreich ist (in der Regel wenn der TCP-Handshake abgeschlossen ist), SHOULD alle anderen Verbindungsversuche, die noch nicht erfolgreich waren, abgebrochen werden. Jede Adresse, die noch nicht als Verbindung versucht wurde, SHOULD ignoriert werden. Zu diesem Zeitpunkt MAY die asynchrone DNS-Abfrage abgebrochen werden, da neue Adressen für diese Verbindung nicht verwendet werden. Der DNS-Client-Resolver SHOULD jedoch weiterhin für eine kurze Zeit (empfohlen 1 Sekunde) DNS-Antworten aus dem Netzwerk verarbeiten, da sie den DNS-Cache füllen und für nachfolgende Verbindungen verwendet werden können.
Eine einfache Implementierung kann eine feste Verzögerung dafür haben, wie lange gewartet werden soll, bevor der nächste Verbindungsversuch gestartet wird. Diese Verzögerung wird als "Connection Attempt Delay" (Verbindungsversuchsverzögerung) bezeichnet. Ein empfohlener Wert für eine Standardverzögerung beträgt 250 Millisekunden. Die Verzögerung einer differenzierteren Implementierung sollte der Zeit entsprechen, zu der der vorherige Versuch sein zweites TCP SYN sendet, basierend auf dem TCP-Retransmission-Timer [RFC6298]. Wenn der Client historische RTT-Daten hat, die aus anderen Verbindungen zum selben Host oder Präfix gesammelt wurden, kann er diese Informationen verwenden, um seine Verzögerung zu beeinflussen. Beachten Sie, dass dieser Algorithmus nur versuchen sollte, die Zeit der ersten SYN-Retransmission zu approximieren, und nicht weitere Retransmissionen, die durch exponentielles Timer-Backoff beeinflusst werden können.
Die Verbindungsversuchsverzögerung MUST eine Untergrenze haben, insbesondere wenn sie unter Verwendung historischer Daten berechnet wird. Genauer gesagt darf MUST NOT eine nachfolgende Verbindung innerhalb von 10 Millisekunden nach dem vorherigen Versuch gestartet werden. Der empfohlene Mindestwert beträgt 100 Millisekunden, was als "Minimum Connection Attempt Delay" (Minimale Verbindungsversuchsverzögerung) bezeichnet wird. Dieser Mindestwert ist erforderlich, um einen Staukollaps bei hohen Paketverlust-Raten zu vermeiden. Die Verbindungsversuchsverzögerung SHOULD eine Obergrenze haben, die als "Maximum Connection Attempt Delay" (Maximale Verbindungsversuchsverzögerung) bezeichnet wird. Der derzeit empfohlene Wert beträgt 2 Sekunden.