5. Tentativi di Connessione (Connection Attempts)
Una volta costruito l'elenco degli indirizzi ricevuti fino a questo punto, il client tenterà di effettuare connessioni. Per evitare un carico di rete irragionevole, i tentativi di connessione SHOULD NOT essere effettuati simultaneamente. Invece, viene avviato prima un tentativo di connessione a un singolo indirizzo, seguito dagli altri nell'elenco, uno alla volta. L'avvio di un nuovo tentativo di connessione non influisce sui tentativi precedenti, poiché più tentativi di connessione possono verificarsi in parallelo. Una volta che uno dei tentativi di connessione ha successo (generalmente quando l'handshake TCP viene completato), tutti gli altri tentativi di connessione che non hanno ancora avuto successo SHOULD essere annullati. Qualsiasi indirizzo che non è stato ancora tentato come connessione SHOULD essere ignorato. In quel momento, la query DNS asincrona MAY essere annullata poiché i nuovi indirizzi non verranno utilizzati per questa connessione. Tuttavia, il resolver del client DNS SHOULD ancora elaborare le risposte DNS dalla rete per un breve periodo di tempo (consigliato 1 secondo), poiché popoleranno la cache DNS e potranno essere utilizzate per connessioni successive.
Un'implementazione semplice può avere un ritardo fisso per quanto tempo attendere prima di avviare il tentativo di connessione successivo. Questo ritardo è denominato "Connection Attempt Delay" (Ritardo di Tentativo di Connessione). Un valore raccomandato per un ritardo predefinito è di 250 millisecondi. Il ritardo di un'implementazione più sfumata dovrebbe corrispondere al momento in cui il tentativo precedente sta inviando il suo secondo TCP SYN, basato sul timer di ritrasmissione TCP [RFC6298]. Se il client ha dati RTT storici raccolti da altre connessioni allo stesso host o prefisso, può utilizzare queste informazioni per influenzare il suo ritardo. Si noti che questo algoritmo dovrebbe solo cercare di approssimare il tempo della prima ritrasmissione SYN, e non ulteriori ritrasmissioni che possono essere influenzate dal backoff esponenziale del timer.
Il ritardo di tentativo di connessione MUST avere un limite inferiore, specialmente se viene calcolato utilizzando dati storici. Più specificamente, una connessione successiva MUST NOT essere avviata entro 10 millisecondi dal tentativo precedente. Il valore minimo raccomandato è di 100 millisecondi, denominato "Minimum Connection Attempt Delay" (Ritardo Minimo di Tentativo di Connessione). Questo valore minimo è richiesto per evitare il collasso della congestione in presenza di alti tassi di perdita di pacchetti. Il ritardo di tentativo di connessione SHOULD avere un limite superiore, denominato "Maximum Connection Attempt Delay" (Ritardo Massimo di Tentativo di Connessione). Il valore attualmente raccomandato è di 2 secondi.