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.