Tutto si riduce alla distribuzione della probabilità di perdita e al modello di traffico.
Prendi ad esempio un tipico collegamento wireless, con un tasso di perdita costante del 10-30%. Se accetti ogni frame ricevuto (come 802.11abg), rileverai rapidamente quando un frame è stato perso, quindi non perderai tempo ad aspettare un timeout.
Se invece dovessi NAK, diventerai dipendente dal modello di traffico: - Se invii un singolo pacchetto di richieste e ti aspetti una risposta, e tale richiesta andrà persa, dovrai avere un timeout che scade se non ottieni un risposta. - Se si sta semplicemente inviando un flusso di pacchetto a un destinatario per lo più disattivato, è accettabile ricevere un NAK solo quando il destinatario riceve il pacchetto successivo o giù di lì. Ciò significa che il destinatario deve riordinare i pacchetti e che il mittente deve tenere traccia di un ampio arretrato di messaggi che ha inviato.
(Indovina quale soluzione scegliere 802.11n? Entrambi. Il ricevitore invia una bitmap di frame a lunghezza variabile che ha ricevuto)
Ora prendi una tipica rete Internet: hai quasi lo 0% di perdita di pacchetti, fino a quando non succede qualcosa di brutto, e hai una perdita di pacchetti vicina al 100% per un certo tempo a seguito di una legge di distribuzione esponenziale, da un'interruzione di 200ms a un minuto e un metà.
Accettare ciascun pacchetto sembrerebbe inutile in una rete senza perdite, fino a quando non si considera il caso in cui il collegamento viene interrotto: non si riceverà ACK o NACK per un periodo di tempo eventualmente prolungato e il destinatario in genere non invierà nulla fino al collegamento viene ripristinato.
Se si utilizza ACK, il mittente interromperà l'invio e manterrà il proprio backlog fino al ripristino del collegamento. Se invece usi NACK, il destinatario potrebbe alla fine dirti che non ha ricevuto il pacchetto che è caduto dal backlog del mittente da molto tempo e che la connessione è sostanzialmente irrecuperabile.