Frage

Ich lese über Implementierungen von zuverlässigem UDP (dh. ACK-Paketen zum Senden und Zurücksenden nicht-ACKed Pakete wieder).

Von den beiden Hauptstrukturen scheinen ich das Netz zu finden arround:

  1. Client sendet eine ACK für jedes empfangene Paket mit der Sequenz dieses Pakets. Server übernimmt Paket unzustellbar ist, wenn es einen ACK empfängt.

  2. Client sendet ein ACK-Paket mit den Sequenzen der Pakete es fehlen denkt. Server übernimmt Paket geliefert wird, es sei denn, es ein ACK vom Client empfängt sagen, dass es eine Sequenz fehlt, dann sendet er die angeforderten (fehlt) Pakete erneut.

Kurz gesagt, in 1. den Kunden sendet die Reihenfolge der empfangenen Pakete, während in 2. Client die Reihenfolge der fehlenden Pakete sendet.

Nur frage mich, was sind die Vor / Nachteile der einzelnen Methoden, und welches mehr Mainstream ist (ich nehme 1, aber 2 scheint wie eine sehr clevere Methode, da assumably die meisten Pakete tun ankommen und nur wenige sind in der Regel verloren).

EDIT: Ein kurzes Beispiel auf beiden Methoden:

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
War es hilfreich?

Lösung

# 2 auch als Negativ ACK bekannt ist, auch bekannt als NAK, es ist eine optimistische Sicht eines Transports. Das Mittel ist, Skalen besser, wenn der Transport korrekt funktioniert.

# 1 ist eine pessimistische Sicht und nimmt ein Transport wird häufig fehlschlagen.

TCP verwendet ACKs, weil es grundlegende Abhängigkeit von Staus Kontrolle Pakete fallen zu lassen Traffic-Shaping durchführen ein faires Netzwerk zu schaffen. Zuverlässige UDP-Kanäle typischerweise NAKs verwenden, da Sie ein zuverlässiges High-Speed ??mittlere oder niedrige Geschwindigkeit Strom mit Anforderung für niedrige Latenz über den Gleichschritt typisch für eine grundlegende ACK Implementierung verwenden.

Hinweis: Wenn Sie eine Stufe höher und Blick auf Mitspracheabonnementverwaltung über einen zuverlässigen UDP-Kanal erheben sich kein klarer Sieger für ACK oder NAK-Nutzung. Die Marktdaten Welt hat sich mit hoher Geschwindigkeit auf hohe Kapazität Netzwerke Nutzung beider Technologien unter Beweis gestellt. ACKs hat den Vorteil, mit Abonnements, dass Sie keine komplizierte Resynchronisation nach einem Netzwerkfehler benötigen, aber Sie werden eine konsistenten Spitzen von Netzwerk- und CPU-Auslastung, wenn alle Host-Fragen ein erneutes Abonnement sehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top