L'ordine dei messaggi TCP è ancora garantito quando si utilizza l'IO asincrono

1

Ecco lo scenario che sto immaginando. Due messaggi vengono trasferiti, entrambi richiedono 2 pacchetti ciascuno (so che non si tratta di pacchetti direttamente con TCP, ma a livello IP ogni messaggio sarà composto da 2 pacchetti [o segmenti come vengono chiamati in TCP])

Il problema che sto immaginando è il buffering del primo pacchetto del primo messaggio, ma un router scarica il secondo pacchetto per qualche motivo. Essendo TCP, il secondo pacchetto è garantito per essere reinviato, e so che TCP passerà questi due pacchetti fino al livello dell'applicazione in ordine. Ma mentre viene gestito in modo asincrono, questo primo pacchetto sarà ancora consegnato all'applicazione che non bloccherà durante il periodo in cui il livello TCP sottostante gestisce la ritrasmissione del secondo pacchetto. Cosa succederà se il primo pacchetto della seconda trasmissione arriva prima dell'ultimo pacchetto della prima trasmissione? Il TCP non consegnerà questi pacchetti fino a quando la prima trasmissione non sarà completamente gestita? Un client asincrono non invierà il secondo messaggio prima che il primo sia stato gestito completamente?

So che TCP garantirà l'ordine dei pacchetti per ciascun messaggio. La mia confusione è se completerà completamente una trasmissione prima di elaborare la seconda trasmissione quando viene gestita in modo asincrono.

    
posta Jason 09.02.2014 - 04:09
fonte

1 risposta

4

TCP è un protocollo di flusso (non i pacchetti come hai detto chiaramente). Il livello di stack TCP fornirà solo i dati nell'ordine stream. Asincrona o meno, i dati non saranno consegnati al cliente fuori servizio.

TCP non sarebbe un ottimo protocollo di streaming se fornisse dati fuori servizio. Questo è il punto del protocollo. : -)

    
risposta data 09.02.2014 - 05:06
fonte

Leggi altre domande sui tag