Sto cercando di capire un protocollo di accordo su un canale inaffidabile. Fondamentalmente due parti (A e B) devono accettare di fare qualcosa, quindi è il problema di due generali .
Poiché non esiste una soluzione a prova di proiettile, sto cercando di farlo.
- A invia continuamente un messaggio con la sequenza 1
- Quando B riceve seq 1 risponde continuamente con la sequenza 2
- A questo punto A riceve seq 2 quindi inizia a inviare seq 3
- ...
La mia domanda. Quando possono le due parti concludere che possono intraprendere l'azione? Ovviamente non posso impostare una condizione: " esegui dopo aver ricevuto 10 messaggi " poiché l'ultimo mittente non avrà alcuna certezza che il messaggio 10 sia arrivato - torna al punto di partenza.
Che ne dici di un'altra idea:
- Continua a comunicare in questo modo per un periodo di tempo predefinito. Alla fine di quel periodo entrambe le parti hanno un'idea dell'affidabilità del canale. Sarebbe accettabile?
Inizialmente l'ho pubblicato in StackOverflow ma qualcuno ha suggerito che la sicurezza potrebbe essere un posto migliore.