Caratteristiche TCP/IP
TCP/IP ha caratteristiche che consentono al protocollo di funzionare come i requisiti di implementazione standardizzati determinano. Queste caratteristiche possono essere combinate con le scelte di sviluppo che comportano prestazioni scarse. L'impatto di queste caratteristiche TCP/IP dipende dal fatto che l'applicazione sia transazionale o streaming.
Le applicazioni transazionali sono interessate dal sovraccarico necessario per l'istituzione e la terminazione della connessione. Ad esempio, ogni volta che una connessione viene stabilita in una rete Ethernet, tre pacchetti di circa 60 byte devono essere inviati e per lo scambio è necessario un RTT circa. Quando si verifica la terminazione di una connessione, vengono scambiati quattro pacchetti. Si tratta di ogni connessione; un'applicazione che apre e chiude le connessioni spesso comporta questo sovraccarico in ogni occorrenza.
Un altro aspetto di TCP/IP è l'avvio lento, che si verifica ogni volta che viene stabilita una connessione. L'avvio lento è un limite artificiale per il numero di segmenti di dati che possono essere inviati prima che venga ricevuto il riconoscimento di tali segmenti. L'avvio lento è progettato per limitare la congestione della rete. Quando viene stabilita una connessione tramite Ethernet, indipendentemente dalle dimensioni della finestra del ricevitore, una trasmissione di 4 KB può richiedere fino a 3-4 RTT a causa di un avvio lento.
Un'ottimizzazione TCP/IP denominata Algoritmo Nagle può anche limitare la velocità di trasferimento dei dati in una connessione. L'algoritmo Nagle è progettato per ridurre il sovraccarico del protocollo per le applicazioni che inviano piccole quantità di dati, ad esempio Telnet, che invia un singolo carattere alla volta. Anziché inviare immediatamente un pacchetto con un sacco di intestazioni e pochi dati, lo stack attende più dati dall'applicazione o un riconoscimento, prima di procedere.
I riconoscimenti ritardati, comunemente definiti ACK ritardati, sono progettati anche in TCP/IP per consentire un piggybacking più efficiente dei riconoscimenti quando i dati restituiti verranno restituiti dall'applicazione lato ricezione. Sfortunatamente, se questi dati non sono imminenti e il lato di invio è in attesa di un riconoscimento, i ritardi di circa 200 millisecondi per invio possono verificarsi.
Quando una connessione TCP viene chiusa, le risorse di connessione nel nodo che ha avviato la chiusura vengono inserite in uno stato di attesa, denominato TIME-WAIT, per proteggere il danneggiamento dei dati se i pacchetti duplicati si trovano nella rete. Ciò garantisce che entrambe le estremità vengano completate con la connessione. Ciò può causare l'esaurimento delle risorse necessarie per connessione, ad esempio RAM e porte, quando le applicazioni aprono e chiudino le connessioni di frequente.
Oltre a essere interessati da schemi di prevenzione della congestione ritardati, le applicazioni di streaming possono essere interessate anche da una dimensione di ricezione predefinita troppo piccola sulla fine della ricezione.
Argomenti correlati