Question

Je suis en train de lire sur les implémentations de UDP fiable (ie. L'envoi de paquets ACK et les paquets non réémission-ACKed à nouveau).

Sur les deux modèles principaux me semble trouver arround le net:

  1. Le client envoie un accusé de réception pour chaque paquet reçu avec la séquence de ce paquet. Server suppose paquet est à moins qu'elle reçoit non exécutée un accusé de réception.

  2. Le client envoie un paquet ACK avec les séquences des paquets qu'il pense sont manquants. Server suppose paquet est livré à moins qu'il reçoit un accusé de réception du client en disant qu'il manque une séquence, il retransmet les paquets demandés (manquants) à nouveau.

En bref, en 1. les clients envoie la séquence des paquets reçus, alors que 2. Le client envoie la séquence des paquets manquants.

Il suffit de se demander quels sont les avantages / inconvénients de chaque méthode, et que l'on est plus mainstream (je suppose que 1, mais 2 semble être une méthode très intelligente car assumably la plupart des paquets n'arrivent et que quelques-unes sont généralement perdues).

EDIT: Un court exemple sur les deux méthodes:

Method 1: Server sends: 1,2,3,4,5 
Client received: 1,3,5,4 
Client sends back: ACK 1, ACK 3, ACK 5, ACK 4  
Server resends: 2.. maybe more if ACK packets were lost


Method 2:
Server sends 1,2,3,4,5,6,7,8
Client receives: 1,3,2,5,7
Client Sends :ACK (lowest continuous 3,highest received 7,  seem to be missing 4,6)
Server resends: 4,6,8
Était-ce utile?

La solution

# 2 est également connu sous le nom ACK négatif, alias NAK, il est un point de vue optimiste d'un transport. Cela signifie échelles mieux quand le transport fonctionne correctement.

# 1 est un point de vue pessimiste et suppose un transport s'échouent souvent.

TCP utilise ACKs parce qu'il ya une dépendance fondamentale sur le contrôle de la congestion à abandonner les paquets pour effectuer le lissage du trafic pour créer un réseau équitable. Fiables canaux UDP utilisent généralement NAK parce que vous utilisez un support à haute vitesse fiable ou d'un flux à faible taux avec exigence pour une faible latence sur l'étape de verrouillage typique d'une implémentation ACK de base.

Remarque si vous élevez une étape supérieure et regardez par exemple la gestion des abonnements au-dessus d'un canal UDP fiable il n'y a pas de gagnant pour l'utilisation ACK ou NAK. Le monde des données de marché a prouvé l'utilisation des deux technologies à grande vitesse sur les réseaux de haute capacité. ACKs ont l'avantage, avec des abonnements, que vous n'avez pas besoin d'une re-synchronisation compliquée après une panne de réseau, mais vous verrez un pic cohérente de l'utilisation du réseau et CPU lorsque tous les problèmes d'accueil d'un réabonnement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top