Czytałem o implementacjach niezawodnego UDP (tj. Wysyłanie pakietów ACK i ponowne wysyłanie pakietów nie-ACKed).Niezawodne pytanie metody UDP i ACK
Spośród dwóch głównych wzorców wydaje mi się znaleźć arround netto:
Klient wysyła ACK dla każdego odebranego pakietu z sekwencją tego pakietu. Serwer zakłada, że pakiet jest niedoręczony, chyba że otrzyma potwierdzenie ACK.
Klient wysyła pakiet ACK z sekwencjami pakietów, które ich zdaniem nie istnieją. Serwer zakłada, że pakiet jest dostarczany, dopóki nie otrzyma potwierdzenia od klienta mówiąc, że brakuje sekwencji, a następnie ponownie wysyła żądane (brakujące) pakiety.
W skrócie, w 1. klienci wysyłają sekwencję odebranych pakietów, natomiast w 2. klient wysyła sekwencję brakujących pakietów.
Zastanawiasz się, jakie są plusy i minusy każdej metody i która z nich jest bardziej popularna (zakładam 1, ale 2 wydaje się być bardzo sprytną metodą, ponieważ prawdopodobnie większość pakietów przybywa, a tylko kilka z nich jest zwykle traconych).
EDIT: Krótki przykład na obu metod:
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
A co jeśli w metodzie drugiej pakiet AC klientów, który twierdzi, że czegoś brakuje, nigdy nie jest dostarczany? – villintehaspam
Z tego co rozumiem, w metodzie 2 znajduje się ACK z informacją "brak brakujących pakietów tutaj (i najwyższy otrzymany seq to 532)" ... więc jeśli serwer wyśle 1 pakiet i nie zostanie odebrany żaden ACK, to pakiet ten jest ponownie wysyłany. pakiety ACK w metodzie 2 są zwykle wysyłane okresowo. Działając bardzo podobnie do pingów. Przypuszczam, że – Radu094
. Czy mógłbyś wyjaśnić nieco więcej różnic? Tak więc metoda 1 zgłasza jawnie pakiety, za każdym razem, gdy osiąga nowe seq no (może to być potwierdzenie dla więcej niż jednego pakietu), a metoda 2 pakietuje okresowo zamiast tego i nigdy jawnie? – villintehaspam