Il diagramma seguente illustra questo fallimento. Semplificheremo il diagramma, concentrandosi sugli aspetti cruciali del riordino dei messaggi e sulla rottura del protocollo.
`` `
+--------+rete (riordinamento)+--------+
| Sender | --------------------------------> | Ricevitore |
+--------+<----------------------------+--------+
| |
| Pacchetto 2 (seqnum =1) |
V ^
+--------+-------> [rete] <-------+--------+
| | | Pacchetto 1 (seqnum =0)
| Pacchetto 1 (seqnum =0) |
+--------+-------> [rete] <-------+--------+
+-----------------++-----------------+
| Azioni del mittente | | Azioni del ricevitore |
+-----------------++-----------------+
| Invia il pacchetto 1 | | Riceve il pacchetto 2 (seqnum =1) - inaspettato! |
| Invia il pacchetto 2 | | (Il pacchetto 2 è fuori servizio, RDT3.0 non gestisce questo) |
| | | Il ricevitore sta aspettando il numero di sequenza 0. |
+-----------------++-----------------+
^ |
| (Il timeout alla fine si verifica al mittente se non viene ricevuta ACK) |
| V
| Il mittente ritrasmitte pacchetto 1 | Il ricevitore alla fine riceve il pacchetto 1 (seqnum =0) - ma ancora potenzialmente problematico a causa di duplicazioni se ACK è stato perso.
`` `
Spiegazione:
1. mittente: Invia il pacchetto 1 (seqnum =0) e il pacchetto 2 (seqnum =1).
2. Network: La rete riordina i pacchetti, consegnando il pacchetto 2 prima del pacchetto 1 al ricevitore.
3. Ricevitore: Il ricevitore prevede il pacchetto 1 (seqnum =0) ma riceve il pacchetto 2 (seqnum =1). Il design di RDT3.0 impone che scarti Packet 2 perché non è il numero di sequenza previsto. Non invierà un ACK per il pacchetto 2 perché è fuori servizio.
4. Fallimento: Il mittente è in attesa di un ACK per il pacchetto 1 (o possibilmente il pacchetto 2 a seconda dell'implementazione del timeout). Ritrasmette, portando a potenziali duplicazioni sul ricevitore. Il ricevitore potrebbe avere problemi di elaborazione dei pacchetti duplicati e eventi correttamente sequenziati se un meccanismo per gestire questo non è stato implementato.
punto cruciale: RDT3.0 si basa sulla rete sottostante per consegnare i pacchetti nell'ordine in cui sono stati inviati. Se la rete riordina i pacchetti, il semplice meccanismo di riconoscimento del protocollo si rompe, risultando in una consegna inaffidabile dei dati. Per gestire la consegna fuori ordine, sarebbe necessario un protocollo più sofisticato (come il meccanismo di finestra scorrevole di TCP o un protocollo progettato esplicitamente per gestire il riordinamento).
networking © www.354353.com