Per quanto tempo vengono frammentati i frammenti TCP nel server TCP


10

Supponiamo che un determinato frammento TCP sia frammentato in due datagrammi IP e che il primo datagramma arrivi al server TCP, ma il secondo datagramma non arrivi mai.

Dopo un certo periodo di tempo il server TCP invia un keepalive e determina che il client è attivo. Cosa fa quindi il server TCP con questo primo datagramma? Aspetta che arrivi il secondo datagramma o scarta il primo datagramma?

Risposte:


8

Dopo la scadenza del timeout di riassemblaggio del frammento, il frammento viene eliminato; l'altra estremità dovrebbe essere ritrasmessa.

Questo timeout è generalmente configurabile. Su Linux, sono 30 secondi per impostazione predefinita e controllati tramite /proc/sys/net/ipv4/ipfrag_time.


Il timeout di riassemblaggio del frammento rispetto al primo frammento ricevuto o il timer viene resettato per ogni nuovo frammento in arrivo?
Randomblue,

2
Penso che dovresti leggere il codice sorgente per rispondere in modo definitivo.
Michael Hampton,

2

Non esiste una risposta definitiva a questa domanda;

Se vedi questo articolo sulla ritrasmissione adattativa, vedrai che TCP usa RTT come fattore nel calcolo dei ritardi appropriati.

Questo è un articolo più dettagliato. In sostanza, non esiste un valore di timeout speciale solo per la frammentazione.

Questo articolo di Cisco indica tuttavia che un firewall virtuale IOS XR ha un timeout predefinito di 10 secondi per i frammenti, con un proprio timer configurabile. Sto collegando questo per dire che i sistemi operativi e i dispositivi si comporteranno in modo diverso e se si sta passando una connessione anche se un dispositivo come questo, ad esempio, potrebbe interferire negativamente con la connessione.

Sarebbe meglio collegare due macchine della stessa configurazione con un crossover e iniziare i test da lì se si desidera testare gli effetti del ritardo di frammentazione.


Grazie. Ritieni che il timeout del frammento nell'articolo Cisco sia calcolato rispetto al primo frammento ricevuto o all'ultimo frammento ricevuto?
Randomblue,

L'ultimo frammento ricevuto ha più senso del primo, ma non lo so, è a discrezione di Cisco in questo esempio.
jwbensley,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.