L'Internet Protocol Suite

torna all'indice

 

Internet è il nome con cui si designa comunemente la più grande rete di calcolatori esistente al mondo, in cui i calcolatori sono collegati (anche indirettamente) attraverso vari tipi di canali di trasmissione. Il linguaggio utilizzato nella comunicazione si chiama Internet Protocol Suite, o più comunemente TCP/IP (si parla anche di architettura TCP/IP, ovvero TCP/IP reference model), e possiamo pertanto definire Internet come la rete di tutti i calcolatori sparsi per il mondo che comunicano attraverso il linguaggio TCP/IP. 

La rete Internet è il frutto di una serie continua di evoluzioni che ha radicalmente modificato l'originaria architettura della rete Arpanet, il primo nucleo creato negli anni '60 dal Dipartimento della Difesa degli USA per scopi militari. In seguito il progetto fu preso in gestione dal mondo accademico americano il cui obiettivo, una volta capite le potenzialità delle reti di calcolatori, era quello di favorire la comunicazione, la collaborazione e la condivisione di dati, programmi e risorse in genere fra le Università e gli enti di ricerca. Per questa ragione, dunque, uno degli scopi perseguiti è sempre stato quello di integrare via via diversi tipi di reti, cercando di favorire l'interconnessione fra reti anche molto diverse fra loro. È solo dagli inizi degli anni '90 che Internet è stato aperto a tutti, ed in particolare, ad enti non universitari o governativi (associazioni, aziende, venditori di accessi, eccetera). L'architettura nel suo complesso include una serie di protocolli specificati attraverso i documenti RFC (Request For Comments). La funzione di questi protocolli è di far viaggiare i datagram attraverso un insieme interconnesso di reti, passando da un modulo Internet ad un altro, fino a raggiungere la destinazione finale.

Su Internet il dialogo avviene normalmente tra coppie di computer (struttura Client/Server): sebbene un calcolatore possa dialogare contemporaneamente con più suoi simili, ciascun messaggio ha uno e un solo destinatario alla volta. Tale dialogo è piuttosto complesso e può avvenire a vari livelli: semplificando, un livello "basso" che consiste nello scambio di informazioni binarie (spedizione di 1 e 0 lungo i canali della rete), un livello "alto" relativo allo scambio di oggetti informatici (ipertesti, immagini, programmi, messaggi, ecc.). 

Osservazione.  Con il termine Intranet si intende una rete aziendale (non necessariamente locale) che comunica attraverso il protocollo TCP/IP, costituita da una serie di client e server (information server) che permettono lo scambio di informazioni solo all'interno della rete. Con il termine Extranet si intende, invece, una rete Intranet alla quale possono accedere anche utenti che non fanno parte della rete aziendale (generalmente ad un numero limitato di servizi). Reti di questo tipo, che per loro natura sono immerse nel "mare" di Internet, necessitano, tra l'altro, di particolare attenzione nella gestione della sicurezza. 

Internet è una rete a commutazione di pacchetto. I motivi fondamentali di questa scelta sono i seguenti:

  1. possibilità di trasmissioni di dati simultanee fra varie sequenze appartenenti ad utenti o applicazioni diverse, ovviamente con tecniche di multiplexing; 
  2. possibilità di scegliere in maniera più efficiente il percorso migliore ed evitare la congestione della rete o di suoi pezzi;
  3. controllo più efficace di eventuali errori di trasmissione;
  4. possibilità di implementare il Priority Tasking, ovvero assegnare priorità differenziate ai dati trasmessi.

   

L'architettura TCP/IP

L'architettura TCP/IP può essere concettualmente pensata come un insieme di tre classi di servizio, più una quarta classe che fa uso di servizi "locali" non definita nell'architettura, ma su cui la stessa poggia:

I livelli TCP/IP hanno la seguente relazione con i livelli OSI:

Applicazione

Applicazione

Presentazione

 

Sessione
Trasporto Trasporto
Network Internet
Data link Host to Network
Fisico

Il livello Host to Network non è espressamente specificato nell'architettura in quanto prevede l'utilizzo dei protocolli già disponibili per le varie piattaforme hardware. In ogni caso è il livello riguardante la capacità dell'host di inviare pacchetti sulla rete.

Il livello Internet ha il compito di permettere all'host di inviare pacchetti in rete e di farli viaggiare in maniera indipendente gli uni dagli altri, fino alla destinazione finale (il servizio si chiama best-effort datagram). Il protocollo principale utilizzato si chiama IP (Internet Protocol). Alcune funzioni connesse al suo ruolo sono la definizione del formato dei dati inviati sulla rete, la definizione del routing ed una serie di controlli sui pacchetti che convogliano le informazioni. Questo protocollo è senza connessione e senza riscontro, e perciò inaffidabile.

Il livello Trasporto fornisce un trasporto sicuro dell'informazione ed è progettato per consentire la conversazione delle peer entity sugli host in comunicazione. I protocolli di questo livello sono: TCP (Transmission Control Protocol), connesso ed affidabile, e UDP (User Datagram Protocol), non connesso e non affidabile. In particolare il TCP, oltre ad assicurare un trasporto sicuro e la correttezza dei dati spediti/ricevuti si preoccupa anche di controllare il flusso delle informazioni in rete, nonché di dividere in pacchetti i dati provenienti dalle applicazioni.

Il livello Applicazione contiene tutti i protocolli di alto livello usati nei programmi applicativi. I primi protocolli sono stati:
- Telnet, terminale virtuale,
- FTP (File Transfer Protocol), per il trasferimento dei files
- SMTP (Simple Mail Transfer Protocol) e POP (Post Office Protocol), per la posta elettronica.

Successivamente ne sono stati aggiunti altri, fra cui:
- DNS (Domain Name Service), per la mappatura tra i nomi degli host e gli indirizzi IP numerici
- NNTP (Network News Transfer Protocol), per il trasferimento di articoli dei newsgroups
- HTTP (Hypertext Transfer Protocol), per il trasferimento delle pagine Web.

Riassumendo, i protocolli principali dell'architettura TCP/IP si collocano come riportato in tabella:

Applicazione

Telnet   FTP   SMTP   HTTP   NNTP   DNS   ecc...

Trasporto TCP          UDP
Internet IP
Host to Network vari standard per LAN, WAN e MAN

Un aspetto fondamentale di questo tipo di architettura, che viaggia parallelamente alla stessa filosofia di Internet, è dato dal fatto che le tre classi di servizio sono realizzate separatamente e quindi ciascun protocollo software può essere sostituito senza per questo modificare gli altri servizi o protocolli.

La struttura dei dati nei vari livelli viene divisa e incapsulata come in figura, tenendo conto che le informazioni dei livelli inferiori vengono strutturate secondo la rete che di fatto effettua il trasporto.

Da notare che, rispetto al modello OSI, l'architettura TCP/IP presenta molteplici differenze: i livelli sessione, presentazione e applicazione sono condivisi (l'esperienza dell'OSI, come modello di riferimento generale, aveva fatto comprendere possibili migliorie), alcune problematiche sono risolte in maniera diversa (più efficiente), sono affrontate alcune questioni (internetworking) che non erano tenute in considerazione dall'OSI. Inoltre l'architettura TCP/IP è realizzata in modo tale che non c'è, di fatto, una chiara distinzione delle funzioni fra protocolli, servizi e interfacce, e non ha utilità come reference model (serve solo a descrivere se stesso). Anche per quest'ultima ragione un'eventuale evoluzione dell'architettura è abbastanza complessa ed alcune scelte di progetto cominciano a pesare (si pensi, ad esempio, agli indirizzi IP in via di esaurimento) ma la loro evoluzione/sostituzione è di là da venire (i nuovi indirizzi IP sono in fase di sperimentazione).

I protocolli TCP/IP sono, tra l'altro, gratuiti.

   

Il protocollo IP (livello di Rete)

Internet è composta (o, di converso, la si può pensare suddivisa) da una serie di AS connessi tra di loro. La struttura complessiva la si può facilmente schematizzare individuando alcuni componenti principali, che sono: le reti regionali statunitensi, le reti nazionali nel resto del mondo, le reti locali e i backbone di collegamento, ovvero le linee di connessione ad alta velocità dislocate nel mondo. Tutti queste entità sono tenute insieme attraverso il protocollo del livello di rete: l'Internet Protocol.

Il protocollo IP (specificato in RFC 791) è di tipo datagram, quindi non connesso e non affidabile. Pertanto esso tratta ogni pacchetto come entità indipendente, non correlata ad alcun altro pacchetto.

Oggi si utilizza la versione 4 del protocollo IP, comunemente indicata con IPv4, ma nei prossimi anni verrà introdotta una nuova versione denominata IPv6 con nuove ed interessanti funzionalità (in alcuni casi migliorative rispetto all'IPv4).

Questo protocollo, come già accennato, implementa due funzioni di base: l'indirizzamento (nel senso di trasmissione) e la frammentazione. Il suo schema di funzionamento può essere così riassunto:

Lo header di un pacchetto IPv4, ovvero il formato del datagram, è costituito da 20 byte fissi e da una parte opzionale di lunghezza variabile:

I datagram, inoltre, possono trovarsi con il problema che i frame accessibili in una rete debbano avere dimensioni limitate superiormente o inferiormente. In tal caso si procede all'incapsulamento del datagram (se il datagram ha lunghezza inferiore del massimo  frame consentito) oppure alla frammentazione del datagram (se il datagram ha lunghezza maggiore del frame; da notare che in caso di perdita di un frammento deve essere rispedito tutto il datagram). Ogni tipologia di rete ha una propria lunghezza massima di dati trasportabili da un frame, quantità denominata MTU (Maximum Transmission Unit) che indica, appunto, la massima unità che la rete può trasmettere.

Incapsulamento di un datagram IP.

Frammentazione di un datagram IP.

I campi del formato datagram hanno le seguenti funzioni:

Indirizzi IP. Ogni computer connesso ad Internet ha un indirizzo, detto Indirizzo IP, che lo identifica in modo univoco. Questo indirizzo è composto da 32 bit, ovvero 4 byte (per cui gli indirizzi possibili sono 232), ma generalmente sono espressi attraverso i 4 numeri decimali equivalenti, ciascuno dei quali con valore da 0 a 255, e separati da punti (dotted decimal notation).

Per facilitare l'uso degli indirizzi si ricorre, comunque, agli indirizzi simbolici.

I 32 bit che formano un indirizzo IP possono essere divisi in due campi:

Gli indirizzi IP possono essere divisi in 5 classi, denominate A, B, C, D e E, aventi le seguenti caratteristiche

Classe Nr. bit nel netid Nr. bit nell'hostid Nr. max reti Nr. max computer per rete
A 7 24 128 16´777´216
B 14 16 16´384 65´536
C 21 8 2´097´152 256
D riservata ad applicazioni di multicast
E riservata ad applicazioni future

i cui indirizzi si compongono come riportato in figura:

Alcune convenzioni sono le seguenti:
- per identificare una rete si pongono tutti i bit dell'hostid uguali a zero,
- per identificare un host sulla stessa rete si pongono i bit del netid uguali a zero
- il broadcast sulla stessa rete di invio si ottiene ponendo tutti i bit uguali ad uno
- il broadcast su una rete diversa si ottiene ponendo tutti i bit dell'hostid uguali ad uno.

Per evitare lo spreco di indirizzi IP (che oggi sono già diventati pochi nell'IPv4), dovuto al fatto che la più piccola rete - quella di classe C - porta con sé 256 indirizzi, si ricorre alla tecnica del subnet addressing o subnetting, obbligatoria in ogni implementazione del protocollo. La cosa è facilmente spiegabile con un esempio (ved. figura seguente). Il router R utilizza lo stesso indirizzo per le due reti fisiche ad esso collegate, ovvero 201.45.0.0, e tutti i router di Internet vedono le due reti come un'unica rete; quando un pacchetto va inviato su una delle due reti, è il router R che provvede ad individuare qual è la rete fisica di destinazione. In pratica la suddivisione della rete 201.45.0.0 è un fatto "privato" e non ha bisogno di essere comunicato all'esterno.

Nel caso di subnetting, pertanto, il campo hostid dell'indirizzo IP viene reinterpretato in maniera diversa, cioè diviso in due parti: subnet hostid, che identificano, nell'ordine, sottorete e unità della sottorete.

L'ampiezza dei campi subnet e hostid può essere definita in maniera flessibile attraverso un parametro detto subnet mask, unico per la rete, composto di tutti 1 in corrispondenza dei campi di netid e subnet e tutti 0 in corrispondenza del campo hostid. L'operazione da eseguire è l'AND logico fra le sequenze dell'indirizzo IP e della maschera di subnet. 

Esempio. Consideriamo l'indirizzo IP 201.45.1.2 e la subnet mask 255.255.255.0; Passando alle rappresentazioni binarie si ottiene la sottorete di appartenenza:

Routing IP. L'instradamento dei pacchetti può sostanzialmente avvenire in maniera diretta, da una macchina direttamente ad un'altra su una stessa rete fisica, o indiretta, se le macchine comunicanti non si trovano sulla stessa rete fisica. In quest'ultimo caso il mittente deve individuare il router cui consegnare il datagram, il quale individuerà il prossimo router in direzione della destinazione finale.

L'instradamento del traffico si basa sulle tabelle di routing (routing table) in cui sono memorizzate informazioni per raggiungere qualsiasi destinazione, non relativamente ad ogni indirizzo IP, ma solo le informazioni minime per far proseguire il viaggio (approccio permesso dal fatto che tutti i calcolatori della stessa rete fisica hanno lo stesso netid). Tipicamente una tabella è costituita da una sequenza di coppie (indirizzo IP destinazione, prossimo router) per cui anche se i datagram possono viaggiare su più percorsi, in realtà spesso prendono la stessa strada; naturalmente il traffico nel senso opposto, con il mittente che diviene destinatario, può seguire un percorso completamente diverso. 

   

Altri protocolli del livello di Rete

Oltre al protocollo IP, nel livello di rete sono logicamente compresi una serie di protocolli che permettono di svolgere alcune importanti funzioni legate al routing. Tali protocolli sono qui raggruppati per tipologia di funzione svolta.

I protocolli EGP. Internet può utilizzare diversi tipi di protocolli EGP per far comunicare fra loro gli AS. In questa classe rientrano:

I protocolli IGP. I protocolli IGP servono a facilitare lo scambio negli AS, ossia fra i router che operano al loro interno. I principali algoritmi IGP sono:

I protocolli ARP e RARP. I protocolli ARP (Address Resolution Protocol) e RARP (Reverse Address Resolution Protocol) permettono di rilevare in modo automatico la corrispondenza fra gli indirizzi IP e gli indirizzi fisici e viceversa. Questi protocolli, che non si appoggiano sul protocollo IP, ma direttamente sul livello data link, sono utilizzati quando:

Il protocollo ICMP. Il protocollo ICMP (Internet Control Message Protocol) permette ad un router l'invio di messaggi d'errore o di controllo ad altri router e host. Oltre a fornire un metodo di comunicazione fra i protocolli IP di due macchine, è considerato parte fondamentale per l'implementazione del protocollo IP. Ogni messaggio ICMP è inserito nella parte dati del datagram IP, che poi è trasportato da un frame. Alcuni tipici messaggi ICMP sono:
- echo request ed echo reply, una macchina invia un echo request ad un'altra macchina che risponde con un echo reply per confermare la sua raggiungibilità. L'utilizzo più diffuso è legato all'applicazione Ping;
- destination unreachable, per avvertire il mittente di un pacchetto che la destinazione non è raggiungibile;
- redirect, utilizzato tra router e host della stessa rete per ottimizzare l'instradamento dei messaggi;
- time exceed, inviato al mittente di un datagram quando questo viene scartato perché il suo "tempo di vita" TTL è terminato.

Il protocollo IPv6. L'enorme crescita che Internet ha fatto registrare fin dai primi anni '90 ha posto da subito il problema di superare le limitazioni dell'IPv4, attualmente utilizzato (ad esempio gli indirizzi IP raggiungeranno molto presto uno stato di saturazione, si parla di 2005-2010). Il nuovo protocollo IPv6 (descritto nel 1994 in RCF 1752) è stato elaborato, pertanto, con numerose modifiche allo scopo di migliorare le procedure dell'instradamento (efficacia, efficienza, sicurezza) e risolvere il problema degli indirizzi per un certo numero di anni. Le principali differenze sono:
- indirizzi con lunghezza di 128 bit (l'aumento avviene tramite un fattore di 296, che implica la disponibilità di 1500 indirizzi per metro quadro terrestre)
- header semplificato, passando da 13 a 7 campi
- funzioni di autocertificazione (convalida dell'origine dei dati) e privacy (segretezza del contenuto ad estranei) basate su metodi crittografici
- gestione della qualità del servizio attraverso un campo negoziato in anticipo. Questo permette una migliore gestione delle applicazioni multimediali e in tempo reale (videoconferenza, audio conferenza) che, avendo una priorità più alta, anche in caso di cattiva qualità della rete arrivano a destinazione. 

Il passaggio da IPv4 a IPv6, seppur necessario e condiviso, non sarà immediato, ma avverrà attraverso un periodo (anche lungo) di coesistenza dei due protocolli.  

Il protocollo IGMP. Il protocollo IGMP (Internet Group Management Protocol) è utilizzato dai Multicast router per la gestione dei gruppi multicast di host sulle LAN. Infatti, per conoscere quali host sono interessati alla ricezione di un determinato flusso, gli Mrouter inviano periodicamente un pacchetto (query) a cui ogni host interessato risponde con in broadcast con l'elenco dei gruppi a cui ha aderito o vuole aderire. In pratica ogni host risponde generando dei report, uno per ciascun host group (insieme di hosts interessati a ricevere un determinato flusso di informazioni) cui sono iscritti, da segnalare allo Mrouter il quale, una volta accertata l'adesione di un nodo ad un gruppo, invia un messaggio di join verso il nodo di centro che, in tal modo, crea un percorso ad albero fino a raggiungere il centro del multicast o un router che fa già parte del gruppo. 

Questo protocollo, che oggi è diffuso nella versione "2", è parte integrante del protocollo IP, ovvero i messaggi IGMP sono incapsulati nei datagram IP. La fornitura del servizio multicasting su Internet avviene attraverso una rete virtuale chiamata Multicast backbone (Mbone) che interconnette tutti i router multicast.

Ulteriori protocolli legati alla fornitura del servizio multicast sono quelli relativi al routing ed utilizzati all'interno della rete Mbone. Tra i protocolli IGP multicast vi sono: DVMRP (Distance Vector Multicast Routing Protocol), PIM-DM (Protocol Indipendent Multicast Dense Mode), MOSPF (Multicast OSPF), CBT (Core Based Tree); mentre tra i protocolli EGP multicast figurano: MBGP (Multiprocol Extension for BGP4), MSDP (Multicast Source Discovery Protocol). Nessuno di questi protocolli risulta migliore in tutte le situazioni.

   

Il protocollo TCP (livello di Trasporto)

Il protocollo TCP si occupa di fornire un flusso di dati affidabile per le applicazioni, da sorgente a destinazione, su una rete non affidabile. Mentre il protocollo IP si occupa della comunicazione fra computers, e dunque gli indirizzi di sorgente e destinazione del messaggio da inviare sono computers, il protocollo TCP si occupa della comunicazione fra applicazioni, e quindi ha bisogno di un'estensione del meccanismo di indirizzamento per identificare le applicazioni.

Il servizio che offre, di tipo affidabile e connesso, implementa le seguenti attività:

Inoltre è un servizio full-duplex con servizio di acknowledgment e controllo di flusso. In pratica il protocollo TCP residente su un computer utilizza il protocollo IP per comunicare con il protocollo TCP dell'altro computer (ved. figura).

I servizi di questo protocollo si espletano attraverso la creazione di una connessione a livello di Trasporto, che costituisce la fondamentale astrazione del funzionamento TCP, tra una coppia di punti detti endpoints. Ciascun endpoint ha una porta logica chiamata socket, rappresentata da una propria coppia di numeri (socket number), che costituisce il punto d'accesso del servizio (ovvero il TSAP). La coppia numerica che identifica tale punto è così composta

Indirizzo IP, numero di porta

(ad esempio: la coppia 162.14.5.3,25 specifica la porta numero 25 sulla macchina di indirizzo 162.14.5.3) 

Come già accennato, l'astrazione fondamentale su cui si basa il TCP organizza il suo lavoro è la connessione, e dunque non la particolare porta utilizzata. La conseguenza di ciò è che un numero di porta TCP su una macchina può essere condiviso da più connessioni (ad esempio: la coppia 162.14.5.3,25 può comunicare simultaneamente con le macchine identificate dalle coppie 162.5.238.121,1084 e 162.11.8.46,1084)

In tal modo si possono creare servizi concorrenti con connessioni multiple in simultanea senza dover riservare una porta locale ad ogni connessione. Ad esempio alcuni sistemi forniscono la possibilità di accedere al loro servizio di posta elettronica permettendo a più utenti, anche contemporaneamente, di spedire i loro messaggi e-mail.

I numeri di porta sono numeri di 16 bit (in decimale da 0 a 65535) che identificano i vari tipi di servizio e sono prefissati. In particolare i numeri minori di 1024, le cosiddette porte well-known, sono riservate ai servizi standard; ad esempio:

Numero di porta Servizio
7 Echo
20 FTP (controllo)
21 FTP (dati)
23 Telnet
25 SMTP
53 DNS
80 HTTP
110 POP versione 3
119 NNTP
... ... ...

La richiesta di un servizio ad un server deve dunque avvenire attraverso la porta standard d'accesso, ad esempio la richiesta del servizio web deve aprire una connessione sulla porta 80 della macchina server. Per evitare che la risposta del server (nella fase di handshake) possa avvenire su una porta occupata da un servizio di client, il socket del client viene aperto con numero maggiore di 1024.

Le connessioni TCP ricevono e forniscono flussi di byte dal livello superiore, così se il livello applicazione vuole trasmettere alcuni messaggi ad un altro host, l'insieme di questi messaggi formano un flusso di dati che il TCP, in maniera del tutto autonoma (quindi ridefinendo anche i confini dei messaggi), dapprima suddivide in pacchetti, quindi li trasmette, e a destinazione li ricombina per il livello Applicazione.

Le caratteristiche più importanti del protocollo TCP sono:

Il formato di un segmento TCP è costituito da due campi: l'header TCP, costituito da una parte fissa di 20 byte più una parte opzionale di lunghezza variabile, e il campo dati. La struttura di un segmento TCP  è la seguente:

I segmenti TCP sono scambiati per stabilire la connessione, per trasferire dati, per inviare ack, per inviare le dimensioni della finestra disponibile o per chiudere la connessione. In particolare, il protocollo TCP garantisce l'affidabilità dei dati ricevuti mediante l'utilizzo della tecnica sliding window per regolare le trasmissioni, tecnica che permette anche il controllo di flusso in quanto indica al TCP sorgente la quantità di dati accettata (campo window size). L'attivazione della connessione avviene, infine, attraverso il three-way handshaking.

Osservazione. Un pacchetto in transito su Internet, che sia passato attraverso i protocolli TCP e IP, ha dunque una struttura di questo tipo:  

Intestazione IP 
(20 bytes circa)
Intestazione TCP 
(20 bytes circa)
Dati 
(200-1500 bytes)

   

Altri protocolli del livello trasporto (UDP)

Il protocollo UDP è un protocollo alternativo al TCP. Le sue caratteristiche principali sono di non garantire l'affidabilità dei dati inviati ai livelli superiori, in altre parole è non connesso e non affidabile, ma è molto più semplice da implementare. Con questo protocollo non occorre stabilire una connessione (per cui ci sono meno ritardi) e quindi non occorre gestirla (per cui la trasmissione è più semplice). 

Il formato dell'header di un segmento UDP è composto da pochi campi: l'indicazione delle porte sorgente e destinazione, l'indicazione della lunghezza dell'header e il controllo di parità, che può anche essere disattivato, ad esempio in una trasmissione in tempo reale dove è più importante mantenere un alto tasso di dati in arrivo piuttosto che scartare segmenti con qualche errore occasionale. Tra le principali applicazioni di questo protocollo vi è, infatti, lo streaming multimedia vista la poca importanza data ad eventuali piccole perdite ed il bisogno di un alto rate trasmissivo.

Quando il controllo di parità (checksum) UDP viene utilizzato, il calcolo che ne deriva rappresenta una violazione del modello OSI, che si basa sulla separazione delle funzioni di ciascun livello. Il calcolo, infatti, prevede l'utilizzo degli indirizzi IP di sorgente e destinazione, noti solo al livello IP, nelle somme di verifica. 

   

N.B.: Il livello Applicazione dell'architettura TCP/IP è trattato nel prossimo paragrafo.

   


Host: Computer collegato direttamente alla rete, che mette i propri servizi a disposizione. Generalmente uno qualsiasi dei computer raggiungibili in rete.

Streaming: Lettura e contemporaneo scaricamento di un file. Questa tecnica permette, ad esempio, la visualizzazione di un filmato o l'ascolto di un brano prima che questo sia stato completamente scaricato.