IP Multicast: architettura, protocolli e applicazioni                                                Introduzione 
 
____________________  
2
L’utilizzo dell’Internet Protocol Suite ha consentito di collegare un gran numero 
di reti dando luogo, nel corso degli anni, alla più grande interconnessione di reti 
presente sul pianeta: Internet. 
L’utilità di un sistema di comunicazione è direttamente legata al numero di 
interlocutori presenti nel sistema stesso. Ad esempio la rete telefonica è 
divenuta uno strumento di lavoro e di comunicazione indispensabile perché la 
tecnologia ha consentito a tutti i telefoni di essere connessi da una unica rete 
diffusa su tutto il mondo. I sistemi di comunicazione fra computer, invece, sono 
spesso frammentati e separati. Internet, la "rete delle reti", rappresenta la 
soluzione a questo problema. Centinaia di milioni di utenti dislocati in tutto il 
mondo utilizzano oggi l’infrastruttura Internet per scambiare o reperire 
informazione con il calcolatore. Il crescente successo di Internet è dimostrato 
anche dal fatto che molte aziende stanno riorganizzando le lor r ti aziendali 
sul modello Internet, creando così le Intranet. 
Il numero sempre crescente delle richieste di connessione da parte di nuovi 
utenti, che ha determinato una diffusione delle reti oltre ogni previsione, e la 
possibilità di impiegare calcolatri sempre più sofisticati, che ha permesso lo 
sviluppo di sistemi in grado di trattare dati multimediali, si traducono in un 
aumento del traffico che ha un impatto molto pesante sulla rete. 
La grande maggioranza delle applicazioni più usate su Internet utilizza la 
tradizionale modalità di comunicazione uno-a-uno tra sorgente e destinatario 
(unicast). 
Recentemente, tuttavia, grazie al miglioramento tecnologico, alla maturazione 
degli utenti e alla nascita di nuove esigenze di comunicazione, sono state 
create delle applicazioni che adottano modalità di comunicazione diverse da 
quella uno-a-uno. Queste modalità sono da uno-a-molti e da molti-a-molti e 
consistono, rispettivamente, nella trasmissione, da parte di una o più sorgenti, 
della stessa informazione a molteplici destinatari, questa situazione è chiamata 
multicast. 
Un’alternativa possibile al problema dell’invio delle medesime informazioni a più 
utenti può essere l’utilizzo della modalità broadcast. Il broadcasting consiste 
nel trasmettere a tutti le medesim  informazioni (un esempio significativo sono 
le comuni trasmissioni televisive). Tuttavia, questo tipi di trasmissione non è 
accettabile per tre motivi correlati:  
 
1. lo spreco di banda; 
2. la ricezione di informazioni da parte di macchine non interessate;  
3. preclude la possibilità di inviare dati riservati senza l’ usilio della 
crittografia.  
 
A tutto ciò il multicast pone rimedio offrendo il meglio dei due mondi: efficienza 
per gli effettivi richiedenti, quiete per gli altri. 
 
IP Multicast: architettura, protocolli e applicazioni                                                Introduzione 
 
____________________  
3
Essendo il multicast IP una tecnologia d'avanguardia in continua evoluzione, 
non è stato possibile affidarsi esclusivamente alla letteratura esistente, spesso 
non sufficientemente aggiornata. Di conseguenza si è resa necessaria una 
ricerca elettronica su Internet, che ha portato alla individuazione di una notevole 
quantità di documenti. Tra questi ne sono stati selezionati alcuni per il loro 
carattere di innovatività o di particolare pertinenza ai fini della sperimentazione.  
 
Il presente lavoro di tesi si è posto come obiettivo quello di: 
 
1) collegare il dipartimento di informatica alla rete mondiale MBone
(Multicast Backbone) attraverso la configurazione dei router di Mestre, 
quello centrale di Venezia e quello del CNAF/INFN di Bologna; 
 
2) creare una base di riferimento per l’IP Multicast, descrivendone il 
passato, presente e futuro, in modo da poter essere utilizzato nel 
dipartimento per future sperimentazioni in ambito multicast; 
 
3) consentire di acquisire esperienza diretta sul funzionamento del 
multicast, mediante il monitoraggio della rete tramite il tool tcpdump e 
l’implementazione di un’applicazione per la distribuzione di fileche 
confronta i tempi di distribuzione utilizzando: 
o un algoritmo multicast affidabile; 
o un algoritmo multicast inaffidabile; 
o un algoritmo unicast inaffidabile; 
 
L’analisi in dettaglio della documentazione selezionata ha evidenziato una 
mancanza di omogeneità: spesso, infatti, sono state presentate soluzioni 
differenti e incompatibili per il medesimo problema. Ciò tuttavia, non dipende 
tanto da particolari difficoltà teoriche, quanto piuttosto dalla mancanza di 
maturità della tecnologia, derivante dalla carenza di sperimentazione, che 
permetta la verifica diretta sul campo delle scelte teoriche. Nel caso in cui, del 
medesimo prodotto fossero disponibili più versioni successive (caso questo 
molto frequente) si è fatto un raffronto cercando di determinare le motivazioni 
che ne hanno causato l’evoluzione. 
 
Il lavoro è strutturato in 10 capitoli: 
 
1) Nel primo capitolo viene fornita un’introduzione al lavoro di tesi. 
2) Il secondo capitolo è dedicato all'introduzione delle architetture di rete e 
dei protocolli. Dopo aver illustrato il significato e l'importanza dei 
protocolli di comunicazione nell'ambito dell'utilizzo delle reti di calcolatori, 
vengono presentate le due architettur  più note, il modello OSI e 
l'architettura TCP/IP. Del modello OSI sono descritte le principali funzioni 
IP Multicast: architettura, protocolli e applicazioni                                                Introduzione 
 
____________________  
4
relative ad ognuno dei sette strati secondo i quali viene rappresentato. 
Dell'architettura TCP/IP, oltre allo stesso tipo di descrizione per i vari 
livelli, viene anche fornito uno schema con la collocazione in tali livelli dei 
moduli di software più comuni e una loro breve presentazione. 
3) Nel terzo capitolo partendo dalla definizione di multicast vengono 
descritte tutte le modifiche apportate al livello network e data-link per 
poter supportare sia la trasmissione che la ricezione di traffico multicast. 
4) Il quarto capitolo è interamente dedicato al funzionamento del multicast. 
Dopo aver illustrato come il multicast gestisce gli indirizzi, vengono 
presentati la gestione degli indirizzi a livello data link, un’architettura per 
evitare i conflitti di indirizzi,  e il protocollo IGMP nelle sue tre versioni.
5) Il quinto capitolo è dedicato alla spiegazione della rete mondiale MBone. 
Si spiegherà come funziona e quali sono le applicazioni più utilizzate 
all’interno di essa, inoltre verrà descritto come è stato effettuato il 
collegamento alla rete MBone. 
6) Nel sesto capitolo dopo aver distinto la differenza tra inoltro ed 
instradamento,  si procederà con la descrizione degli algoritmi di routing 
utilizzati per il multicast, e dei protocolli che li utilizzano. 
7) nel settimo capitolo verrà descritto il problema dell’allocazione della 
banda attraverso la spiegazione del protocollo RSVP. Inoltre si 
presenterà il problema del controllo delle congestione e un protocollo per 
risolverlo il RLC. 
8) Il capitolo otto presenta il problema delle connessioni affidabili in 
multicast. Dopo aver descritto i problemi che scaturiscono da una 
connessione affidabile, vengono presentati e classific ti una serie di 
protocolli affidabili utilizzati per effettuare trasmissioni di dati sicuri. 
9) Il capitolo nove è dedicato alla programmazione in multicast e 
all’attivazione del supporto per il multicast su una macchina con sistema 
operativo Linux. 
10) Nel capitolo dieci dopo avere esposto il funzionamento del protocollo 
RMDP (un protocollo di trasporto affidabile) si presenterà l’applicazione 
realizzata e i risultati ottenuti. 
 
Essendo il contenuto della tesi altamente tecnico, si assume che il lettore abbia 
una certa familiarità con i concetti del TCP/IP e con le API standard necessarie 
per la programmazione in rete. 
 
 
 
 
 
 
IP Multicast: architettura, protocolli e applicazioni                                          Reti di Computer 
 
____________________  
5
2 Reti di Computer 
 
 
 
 
 
 
2.1 Introduzione 
 
Le prime reti di calcolatori furono progettate pensando all’hardware, mentre il 
software era considerato un problema secondario. Questa strategia non vale 
più. Ora il software è altamente strutturato, tanto che, per ridurre la complessità 
di progettazione, la maggior parte delle reti è organizzata come una serie di 
strati o livelli, ognuno costruito su quello inferiore. Il numero di livelli, il loro 
contenuto e le loro funzionalità variano da una rete all’altra. Tuttavia in ogni rete 
lo scopo di ogni livello è quello di rendere disponibili certi servizi al livello 
superiore.  
 
Il livello n su una macchina permette di conversare con il livello n di un’altra 
macchina, e le regole e convenzioni utilizzate per questo tipo di conversazioni 
sono conosciute con il nome di protocollo del livello n.  
Nessun tipo di dato viene trasferito dal livello n su una macchina al livello n su 
un’altra, in realtà, ogni livello passa le informazioni al livello immediatamente 
sotto di sé fino a quando non viene raggiunto il livello più basso. Sotto il livello 1 
c’è il mezzo fisico attraverso il quale avviene la comunicazione.  
Fra ogni coppia di livello adiacenti c’è un’interfaccia. L’interfaccia definisce 
quali operazioni primitive e quali servizi offre il livello sottostante al livello 
superiore. 
 
Figura 2.1  livelli, protocolli e interfacce. 
IP Multicast: architettura, protocolli e applicazioni                                          Reti di Computer 
 
____________________  
6
Vediamo un esempio e consideriamo una rete a 5 livelli come in figura 2.2: 
 
 
Figura 2.2:  esempio di flusso di informazioni per supportare la comunicazione di un protocollo 
al livello 5. 
 
Un messaggio M viene prodotto da un’applicazione al livello 5 e passato al 
livello 4 per essere trasmesso. Il livello 4 inserisce un’intestazione davanti al 
messaggio per identificare il messaggio e passa il risultato al livello 3. 
L’intestazione contiene informazioni di controllo per permettere al livello 4 sulla 
macchina di destinazione di ricostruire i messaggi nel giusto ordine.  In molte 
reti, non c’è il limite alla dimensione di un messaggio trasmesso con il protocollo 
al livello , ma c’è quasi sempre un limite imposto dal protocollo di livello 3. Di 
conseguenza il livello 3 deve spezzare i messaggi in arrivo in pacchetti, unità 
più piccole, aggiungendo una intestazione di livello 3 a ogni pacchetto. In 
questo esempio M è diviso in due parti M1 e M2. Il livello 3 passa i pacchetti al 
livello 2 che non solo aggiunge un’intestazione ma anche un cammino e passa i 
pacchetti al livello 1 per la trasmissione fisica.  Alla macchina destinataria il 
messaggio giunge salendo, livello per livello, con le intestazioni che vengono 
eliminate di volta in volta. Nessuna delle intestazioni per i livelli inferiori a n 
raggiungono il livello n. 
 
Un servizio è un insieme di primitive (operazioni) che un livello fornisce al 
livello superiore. I livelli possono offrire due diversi tipi di servizi ai livelli 
superiori: i servizi orientati alla connessione e quelli privi di connessione.  
I servizi orientati alla connessione sono modellati sul sistema telefonico. Per 
parlare qualcuno si alza il telefono, si compone il numero, si parla, e infine si 
riaggancia il telefono. In modo similare, per usare un servizio di rete orientato
alla connessione, l’utente del servizio prima stabilisce una connessione, la 
utilizza e infine la rilascia.  
IP Multicast: architettura, protocolli e applicazioni                                          Reti di Computer 
 
____________________  
7
I servizi privi di connessione sono modellati sul sistema postale. Ogni 
messaggio porta con sé l’indirizzo completo di destinazione, e ognuno è 
condotto lungo il sistema indipendentemente da ogni altro messaggio. 
 
 
2.2 Modelli di riferimento 
 
Ora che si sono presentate in modo astratto le reti stratificate, è tempo di 
parlare di qualche esempio. Nei prossimi due paragrafi verranno presentati due 
importanti architetture di reti, il modello OSI e il modello TCP/IP. 
 
 
2.2.1 Il modello OSI 
 
Questo modello è basato su una proposta sviluppata dall’International Standard 
Organization (ISO) come primo passo verso la standardizzazione internazionale 
dei protocolli utilizzati nei vari livelli.  
Il modello OSI ha sette livelli: 
 
1. livello fisico: fa riferimento alla 
trasmissione dei bit lungo un canale di 
comunicazione. 
2. livello data-link: ha lo scopo di trasformare 
una trasmissione grezza in una linea per il 
livello superiore che appaia libera da errori 
di trasmissione non segnalati. Tale livello 
realizza questo scopo facendo decomporre 
al mittente i dati da spedire in pacchetti. È 
compito di questo livello risolvere i problemi 
causati dal danneggiamento, perdita o 
duplicazione di pacchetti; deve avere 
qualche meccanismo per la regolazione del 
traffico. 
3. livello rete: ha a che fare con il controllo 
delle operazioni di sottorete. Un aspetto 
chiave è la determinazione di come i 
pacchetti percorrono la rete dalla sorgente  
Figura 2.3: Il modello ISO/OSI.  alla destinazione. Dovrà includere un                 
controllo della congestione per evitare la  
presenza di troppi pacchetti nella sottorete, inoltre    dovrà    occuparsi  
dell’eventuale numerazione dei pacchetti, della conversione di indirizzi  e 
lunghezza dei pacchetti. 
IP Multicast: architettura, protocolli e applicazioni                                          Reti di Computer 
 
____________________  
8
4. livello trasporto: la funzione base di questo livello è di accettare dati dal 
livello superiore, spezzarli in piccole unità se è necessario, passare il 
tutto al livello rete, e assicurarsi che tutti i frammenti giungano 
correttamente a destinazione. Il livello di trasporto crea una connessione 
di rete per ogni connessione di trasporto richiesta dal livello superiore. Il 
livello di trasporto deve fare attenzione a stabilire ed eliminare 
connessioni lungo la rete. Questo richiede un meccanismo di 
denominazione, in modo tale che, i processi su una macchina abbiano 
un modo per descrivere con chi desiderano conversare; questo 
meccanismo è chiamato controllo di flusso. 
5. livello sessione: permette agli utenti su macchine diverse di stabilire 
sessioni. Una sessione permette il trasporto ordinario di dati, realizzato 
dal livello trasporto. Tra i servizi che il livello sessione è in grado di 
gestire troviamo il controllo del dialogo, la gestione dei token, e la 
sincronizazione. 
6. livello presentazione: fa riferimento alla sintassi e alla semantica delle 
informazioni trasmesse. Un esempio tipico di un servizio di questo livello 
è la codifica dei dati in un modo standard riconosciuto.  
7. livello applicazione: contiene una varietà di protocolli che sono 
normalmente necessari come telnet.  
 
 
2.2.2 Il modello TCP/IP 
 
Si passa ora al modello di riferimento usato nella progenitrice di tutte le reti di 
computer: la rete ARPANET e nella sua erede, la rete mondiale Internet. 
ARPANET era una rete di ricerca sponsorizzata dal Dipartimento della Difesa 
Statunitense (DARPA) che collegava centinaia di università e strutture 
governative utilizzando linee telefoniche.  
Il modello TCP/IP ha 4 livelli: 
 
 
Figura 2.4: il modello ISO/OSI a confronto con il modello TCP/IP. 
 
IP Multicast: architettura, protocolli e applicazioni                                          Reti di Computer 
 
____________________  
9
1. livello host-rete: Il modello TCP/IP non dice molto a proposito di quello 
che avviene a questo livello, eccetto che l’host deve connettersi alla rete 
utilizzando un protocollo in modo da inviare pacchetti IP lungo di essa. 
Questo protocollo non viene definito e varia da host a host e da rete a 
rete. 
2. livello internet: questo livello è il perno che mantiene assieme l’intera 
architettura. Il suo compito è di permettere ad un host di inserire 
pacchetti in una qualsiasi rete in modo tale che questi viaggino 
indipendentemente verso la destinazione. Essi possono arrivare anche in 
un ordine diverso rispetto a quello con cui erano stati inviati, in questo 
caso sarà compito di un qualche livello superiore riordinarli. Il livello 
internet definisce un formato di pacchetto ufficiale e un protocollo 
chiamato IP (Internet Protocol). Lo scopo del livello internet è di 
consegnare i pacchetti IP, scegliendo un cammino ed evitando la 
congestione. 
3. livello trasporto: serve per permettere alle entità di pari livello sugli host 
sorgente e destinazione di portare avanti una conversazione, come nel 
livello trasporto del modello OSI. Due protocolli di collegamento sono 
definiti in questo livello. Il primo, TCP (Transmission Control Protocol), è 
un protocollo orientato alla connessione affidabile, che permette a 
sequenze di byte originate su una macchina di essere consegnate senza 
errori su una qualsiasi altra macchina della rete. Il protocollo TCP 
gestisce anche il flusso del controllo per essere sicuro che un mitte te 
veloce non possa sovraccaricare un ricevente lento. Il secondo 
protocollo in questo livello è l’UDP (User Datagram Protocol) è un 
protocollo inaffidabile, che fornisce un metodo per spedire datagram IP 
senza dover stabilire una connessione, per applic zioni che non 
desiderano la sequenzializzazione o il controllo del flusso del protocollo 
TCP e che desiderano gestire tutto questo in modo autonomo. È spesso 
utilizzato per comunicazioni veloci, per richieste e risposte fra un client e 
un server, o applicazioni in cui la prontezza nella consegna è più 
importante che la sua accuratezza, come nel caso di trasmissioni 
audiovisive.  
4. livello applicazioni: Il modello TCP/IP non ha i livelli presentazione e 
sessione. Non sono necessari, quindi subito sopra al livello trasporto si 
trova il livello applicazione. Esso contiene tutti i protocolli ad alto livello, 
come per esempio telnet, ftp, smtp. 
 
 
 
 
 
 
IP Multicast: architettura, protocolli e applicazioni                                          Reti di Computer 
 
____________________  
10
2.3 Il livello Rete 
 
La funzione principale del livello di rete è quella di instradare pacchetti 
dall’elaboratore sorgente all’elaboratore destinazione. In gran parte delle reti, 
saranno necessari  più salti (hop) affinché i pacchetti completino il percorso. Un 
algoritmo di routing è quella parte del software del livello rete, che ha la 
responsabilità di decidere su quale lin a di output trasmettere un pacchetto in 
arrivo. Se la rete utilizza internamente i datagram, questa decisione deve 
essere eseguita nuovamente per ogni pacchetto di dati, in quanto il percorso 
migliore può essere cambiato dall’ultima volta. Un algoritmo di routing dovrebbe 
essere in grado di affrontare cambiamenti nella topologia e nel traffico senza 
richiedere di abortire tutti i processi in tutti gli host e di far ripartire la rete tutte le 
volte che qualche router si guasta.  
Gli algoritmi di routing possono essere raggruppati in due classi principali: non 
adattivi e adattivi. Gli algoritmi non adattivi non basano le loro decisioni di 
routing su misurazioni o stime del traffico corrente e della topologia. Al contrario 
la scelta del percorso da usare è calcolata in anticipo, off-line. Questa 
procedura viene chiamata routing statico. Possono essere suddivisi in:
 
• routing lungo il cammino minimo 
• flooding 
• flow-based routing 
 
Gli algoritmi adattivi, invece, modificano le loro decisioni di routing a seconda 
dei cambiamenti della topologia e normalmente anche del traffico. Sono del 
tipo: 
 
• distance vector routing 
• link state routing 
 
Come abbiamo già menzionato, Internet è costituita da un gran numero di 
sistemi autonomi. Ogni sistema viene gestito da organizzazioni differenti e può 
utilizzare al suo interno i propri algoritmi di routing. Ciò nonostante la presenza 
di standard anche per il routing interno semplifica l’implementazione dei confini 
tra sistemi autonomi. Un algoritmo di routing interno è detto interior gateway 
protocol mentre un algoritmo di routing tra sistemi autonomi è detto ext rior 
gateway protocol.  
 
 
 
 
 
 
IP Multicast: architettura, protocolli e applicazioni                                          Reti di Computer 
 
____________________  
11
2.3.1 Distance Vector Routing 
 
Gli algoritmi di routing basati su vettori di distanza (distance vector routing) 
funzionano facendo in modo che ogni router mantenga una tabella (cioè un 
vettore) contenente la migliore distanza conosciuta per ogni destinazione e 
quale canale utilizzare per raggiungerla. Queste tabelle sono aggiornate 
scambiando informazioni con i vicini, e la metrica usata può essere il num ro di 
salti, il ritardo in millisecondi, il numero totale di pacchetti in coda lungo un 
cammino o altro ancora. L’algoritmo di distance vector routing viene chiamato 
anche con altri nomi, come algoritmo di Bellman-Ford o algoritmo di Ford-
Fulkerson; era l’algoritmo di routing originale di ARPANET ed è stato usato 
anche in Internet con il nome di RIP.  Il distance vector routing funzione in 
teoria, ma in pratica ha seri inconvenienti come il problema del conteggio 
all’infinito, cioè, il distance vector r uting sebbene converge alla risposta 
corretta, lo può fare molto lentamente. 
 
 
2.3.2 Link State Routing 
 
Il distance vector routing è stato usato in ARPANET fino al 1979, quando fu 
sostituito dal routing basato sullo stato dei canali (link state routing). Due furono 
i problemi principali che causarono il suo decesso. Primo, poiché la metrica di 
ritardo era la lunghezza delle code, non teneva in considerazione la capacità 
delle linee al momento di scegliere i percorsi.  Secondo il problema del 
conteggio all’infiito. Per queste ragioni, fu rimpiazzato da un algoritmo 
completamente nuovo chiamato routing basato sullo stato dei canali. L’idea 
dietro al link state routing è semplice e può essere enunciata in cinque parti.  
Ogni router deve: 
 
1. Scoprire i propri vicini e il loro indirizzo di rete. 
2. Misurare il ritardo o il costo per ognuno dei suoi vicini.
3. Costruire un pacchetto contenente tutto quello che ha appena scoperto. 
4. Spedire questo pacchetto a tutti router. 
5. Calcolare il cammino minimo per ogni altro router. 
 
In effetti, la topologia completa e tutti i ritardi vengono misurati 
sperimentalmente e distribuiti a ogni router. Quindi l’algoritmo di Dijkstra può 
essere utilizzato per trovare il cammino minimo verso ogni altro router.  
 
 
 
 
 
IP Multicast: architettura, protocolli e applicazioni                                          Reti di Computer 
 
____________________  
12
2.3.3 Routing gerarchico 
 
Con la crescita delle dimensioni delle reti, le tabelle di routing crescono 
proporzionalmente. Non solo viene consumata dalle tabelle una quantità di 
memoria crescente, ma sono anche necessarie una quantità maggiore di tempo 
di CPU per esaminarle e una maggiore larghezza di banda per spedire le 
informazioni di routing. A un certo punto la rete può crescere oltre il punto in cui 
non è possibile che ogni router abbia una registrazione per ogni altro router e 
quindi il routing deve essere gestito gerarchicamente, come nelle reti 
telefoniche. 
Quando si utilizza il routing gerarchico, i router vengono suddivisi in quelle che 
chiamiamo regioni. Ogni router conosce tutti dettagli su come instradare i 
pacchetti verso destinazioni all’interno della propria regione, ma non sa nulla 
sulla struttura interna di altre regioni. Quando reti differenti sono connesse 
insieme, è naturale considerarle ognuna come una regione separata, al fine di 
evitare che i router di una rete debbano conoscere la struttura topologica delle 
altre.  Per le reti gigantesche, una gerarchia a due livelli può non essere 
sufficiente; può essere necessario raggruppare le regioni in cluster, i cluster in 
zone, le zone in gruppi e così via fino a quando terminano i nomi per le 
aggregazioni.  
 
 
2.3.4 Controllo della congestione 
 
Quando nella rete (o in una sua parte) sono presenti troppi pacchetti, le 
prestazioni degradano. Questa situazione viene chiamata congestione. La 
figura ne illustra i sintomi.  
 
 
Figura 2.5: il controllo della congestione. 
  
IP Multicast: architettura, protocolli e applicazioni                                          Reti di Computer 
 
____________________  
13
Quando il numero di pacchetti immagazzinati dagli host nella rete è minore 
della sua capacità di trasporto, tutti pacchetti vengono consegnati (a parte i 
pochi affetti da errori di trasmissione) e il numero dei pacchetti consegnati è 
proporzionale al numero di quelli spediti. Ciò nonostante, quando il traffico 
cresce troppo, i router non sono più in grado di sopportare il carico, e iniziano a 
perdere pacchetti. Questo tende a peggiorare la situazione. In caso di traffico 
veramente elevato, le prestazioni collassato completamente e on viene 
consegnato quasi nessun pacchetto.  
Una congestione può essere causata da molteplici fattori: 
• se tre o quattro flussi di pacchetti in input arrivano contemporaneamente 
e richiedono la stessa linea di output, verrà creata una coda, e se non 
esiste memoria sufficiente per contenerli tutti, alcuni pacchetti verranno 
persi; 
• i processori lenti dei router possono causare congestione, in quanto 
potrebbero far aumentare le code di attesa; 
• anche linee a bassa banda sono causa di congestione poiché possono 
creare dei veri e propri colli di bottiglia; 
La congestione tende a nutrirsi di se stessa e a peggiorare. Se un router non ha 
un buffer liberi, deve ignorare i pacchetti in arrivo. Quando un pacchetto viene 
scartato, il router mittente può andare in timeout e ritrasmetterlo, forse 
addirittura molte volte. Poiché non si può scartare il pacchetto fino a quando 
non sia giunta conferma della ricezione, la congestione dalla parte del ricevente 
forza il mittente a evitare di rilasciare buffer che diversamente vr bb  liberato. 
In questo modo, la congestione risale all’indietro. 
Esistono molti algoritmi per il controllo della congestione, e vengono organizzati 
nel modo seguente: 
• ciclo aperto: cioè cercano di risolvere i problema con una buona 
progettazione, per vitare che si presenti; 
o quelli che agiscono dal lato sorgente 
o quelli che agiscono dal lato destinazione 
• ciclo chiuso: sono basati sul concetto di ciclo di feedback:monitorare, 
elaborare, modificare; 
o feedback implicito 
o feedback esplicito  
 
 
2.4 La risoluzione degli indirizzi 
 
Sebbene ogni macchina in Internet abbia uno o più indirizzi IP, questi non 
possono essere utilizzati effettivamente per spedire pacchetti, in quanto 
l’hardware del livello data-link non è in grado di comprenderli. Attualmente, gran 
parte degli host è collegata ad una LAN attraverso una scheda di interfaccia 
che capisce unicamente gli indirizzi LAN.  Ad esempio, tutte le schede Ethernet 
IP Multicast: architettura, protocolli e applicazioni                                          Reti di Computer 
 
____________________  
14
sono equipaggiate con un indirizzo Ethernet di 48 bit. I costruttori di schede 
Ethernet richiedono un blocc  di indirizzi da un’autorità centrale per assicurarsi 
che nessuna coppia di schede abbia lo stesso indirizzo (per evitare conflitti nel 
caso le due schede dovessero apparire sulla stessa LAN). Le schede 
spediscono e ricevono frame basati su indirizzi Ethernet a 48 bit, non capiscono 
nulla degli indirizzi IP a 32 bit.  Si ha, quindi, la necessità di mappare gli indirizzi 
IP sugli indirizzi del livello data-link, e ciò viene effettuato attraverso il protocollo 
ARP  (Address Resolution Protocol). 
In questo lavoro di tesi, si darà per scontato l’utilizzo delle schede Ethernet per 
la comunicazione con altri computer. 
 
 
2.5 Il protocollo TCP 
 
Internet possiede due protocolli principali al livello trasporto, uno orientato alla 
connessione e uno senza connessione. Il protocollo orientato alla connessione 
si chiama TCP, mentre quello senza connessione è detto UDP. 
 
Per maggiore chiarezza, di seguito verrà brevemente illustrata la tecnica 
impiegata dal TCP. A tal proposito, supponiamo che l’host A intenda collegarsi 
con l’host B tramite il TCP. In via preliminare, il TCP provvederà allora a 
realizzare un three-way handshake tra i due host. Dall’host A parte una 
richiesta di connessione verso l’host B. Quest'ultimo, ricevuta la richiesta di 
connessione, invia all’host A un datagram di conferma. 
Ricevuto il datagram di conferma, l’host A invia all'host B un nuovo datagram 
che informa lo stesso host B che la conferma di connessione è arrivata all’host 
A. Solo dopo che quest'ultimo datagram è pervenuto all’host B ha inizio la 
sessione TCP. Conseguentemente, può avvenire lo scambio dei dati tra i due 
host. Come al solito, l'integrità dei datagram ricevuti è verificata da una 
checksum apposta agli stessi datagram. Il three-way handshake assicura con 
assoluta certezza che la connessione tra i due host è stata stabilita con 
successo. 
All'interno della stessa sessione TCP, i datagram contenenti i dati, oltre a 
possedere la consueta checksum, sono marcati da un numero progressivo. Con 
questo accorgimento, l’host ricevente può riordinare  datagram ricevuti e 
richiedere la ritrasmissione dei datagram che non sono pervenuti ad esso. Se, 
per esempio, viene ricevuto il datagram numero 1233 e poi il datagram numero 
1235, l’host ricevente si rende conto che manca il datagram numero 1234. Se 
questo datagram non arriva entro un certo lasso di tempo, l’host ricevente ne 
richiede la ritrasmissione. Ovviamente, l’host ricevente richiederà pure la 
ritrasmissione dei datagram corrotti (quelli, cioè, che sono arrivati con 
checksum errata). Per ogni datagram arrivato correttamente, l’host ricevente 
invia all'host trasmittente un datagram di acknowledgement (ACK). In questo 
IP Multicast: architettura, protocolli e applicazioni                                          Reti di Computer 
 
____________________  
15
modo, i datagram ACK di ritorno dall’host ricevente mantengono l’host 
trasmittente informato dei datagram che sono arrivati integri a destinazione. Ciò 
è importante per assicurare un efficiente controllo di flusso ed evitare la 
congestione sia in trasmissione che, conseguentemente, in ricezione. Infatti, 
quando cessa la ricezione dei datagram di ACK provenienti dall’host ricevente, 
l’host trasmittente cessa a sua volta la trasmissione dei datagram di dati. La 
trasmissione dei datagram di dati ricomincia non appena ricominciano ad 
arrivare i datagram di ACK.  
Questo meccanismo è efficace al fine di evitare la saturazione dei buffer di rete. 
A tale scopo, l’host trasmittente può pure scaricare dai buffer di rete quei 
datagram di dati per i quali è già arrivato il corrispondente datagram di ACK. Da 
notare che, come già accennato, la congestione in trasmissione può provocare 
congestione pure in ricezione. Infatti, l’host ricevente non può passare i dati agli 
strati superiori se manca qualche datagram. Se la trasmissione non cessa entro 
breve tempo, l’host ricevente è costretto a immagazzinare nei buffer di rete i 
nuovi datagram che continuano ad arrivare, senza peraltro poter svuotare gli 
stessi buffer dai vecchi datagram. Di conseguenza, si rischia la congestione 
dell’host ricevente unitamente a quella dell’host trasmittente. 
 
Una sessione TCP ha termine quando uno degli host trasmette l'apposito 
segnale di fine connessione (FIN), oppure quando trascorre un certo lasso di 
tempo prestabilito (di solito alcuni minuti) senza che vi sia alcuna risposta da 
parte di uno dei due host. 
 
 
2.6 Bibliografia 
 
Computer Networks, Third Edition, Andrew S. Tanenbaum, Prentice-Hall 
International. 
 
TCP/IP Illustrated, Volume 1 - The Protocols, W. Richard Stevens, Addison-
Wesley 1994 
 
Reti di Calcolatori –  un approccio sistematico, Larry L. Peterson,  Bruce S. 
Davie, Zanichelli 1999.