Aller au contenu principal

5. Tentatives de Connexion (Connection Attempts)

Une fois que la liste des adresses reçues jusqu'à ce point a été construite, le client tentera d'établir des connexions. Afin d'éviter une charge réseau déraisonnable, les tentatives de connexion SHOULD NOT être effectuées simultanément. Au lieu de cela, une tentative de connexion à une seule adresse est démarrée en premier, suivie des autres dans la liste, une à la fois. Le démarrage d'une nouvelle tentative de connexion n'affecte pas les tentatives précédentes, car plusieurs tentatives de connexion peuvent se produire en parallèle. Une fois que l'une des tentatives de connexion réussit (généralement lorsque la poignée de main TCP se termine), toutes les autres tentatives de connexion qui n'ont pas encore réussi SHOULD être annulées. Toute adresse qui n'a pas encore été tentée en tant que connexion SHOULD être ignorée. À ce moment-là, la requête DNS asynchrone MAY être annulée car les nouvelles adresses ne seront pas utilisées pour cette connexion. Cependant, le résolveur DNS du client SHOULD toujours traiter les réponses DNS du réseau pendant une courte période de temps (recommandé à 1 seconde), car elles rempliront le cache DNS et pourront être utilisées pour les connexions ultérieures.

Une implémentation simple peut avoir un délai fixe pour le temps d'attente avant de démarrer la tentative de connexion suivante. Ce délai est appelé "Connection Attempt Delay" (Délai de Tentative de Connexion). Une valeur recommandée pour un délai par défaut est de 250 millisecondes. Le délai d'une implémentation plus nuancée devrait correspondre au moment où la tentative précédente envoie son deuxième SYN TCP, en fonction du temporisateur de retransmission TCP [RFC6298]. Si le client dispose de données RTT historiques recueillies à partir d'autres connexions au même hôte ou préfixe, il peut utiliser ces informations pour influencer son délai. Notez que cet algorithme ne devrait essayer d'approximer que le temps de la première retransmission SYN, et non les retransmissions ultérieures qui peuvent être influencées par le recul exponentiel du temporisateur.

Le délai de tentative de connexion MUST avoir une limite inférieure, en particulier s'il est calculé à l'aide de données historiques. Plus précisément, une connexion ultérieure MUST NOT être démarrée dans les 10 millisecondes de la tentative précédente. La valeur minimale recommandée est de 100 millisecondes, appelée "Minimum Connection Attempt Delay" (Délai Minimum de Tentative de Connexion). Cette valeur minimale est requise pour éviter l'effondrement de la congestion en présence de taux élevés de perte de paquets. Le délai de tentative de connexion SHOULD avoir une limite supérieure, appelée "Maximum Connection Attempt Delay" (Délai Maximum de Tentative de Connexion). La valeur actuellement recommandée est de 2 secondes.