Sto leggendo su implementazioni di UDP affidabile (cioè invio di pacchetti ACK e invio di pacchetti non ACK nuovamente).Affidabile metodo UDP e ACK domanda
Dei due modelli principali che sembrano trovare arround rete:
client invia un ACK per ogni pacchetto ricevuto con la sequenza di quel pacchetto. Il server presuppone che il pacchetto non viene recapitato a meno che non riceva un ACK.
Il client invia un pacchetto ACK con le sequenze dei pacchetti che si ritiene manchino. Il server assume che il pacchetto sia consegnato a meno che non riceva un ACK dal client dicendo che manca una sequenza, quindi invia nuovamente i pacchetti richiesti (mancanti).
In breve, in 1. i client inviano la sequenza dei pacchetti ricevuti, mentre in 2. il client invia la sequenza dei pacchetti mancanti.
Basta chiedersi quali sono i pro/contro di ciascun metodo e quale è più mainstream (presumo 1, ma 2 sembra un metodo molto intelligente poiché presumibilmente la maggior parte dei pacchetti arriva e solo alcuni di solito vengono persi).
EDIT: Un breve esempio su entrambi i metodi:
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
Quindi cosa succede se nel metodo due, il pacchetto ack dei client che dice che manca qualcosa non viene mai consegnato? – villintehaspam
Da quello che ho capito, nel metodo 2 c'è un ACK che dice "nessun pacchetto mancante qui (e il seq ricevuto più alto è 532)" ... quindi se il server invia 1 pacchetto e nessun ACK è recevitato allora quel pacchetto viene nuovamente inviato. i pacchetti ACK nel metodo 2 di solito vengono inviati periodicamente .. agendo in modo molto simile a un ping, credo che – Radu094
Allora potresti forse chiarire un po 'di più sulle differenze? Quindi, il metodo 1 esegue l'accesso in modo esplicito ai pacchetti, ogni volta che viene raggiunto un nuovo seq no (quindi potrebbe essere un ack per più di un pacchetto) e il metodo 2 esegue l'accesso periodico dei pacchetti anziché mai esplicitamente? – villintehaspam