Che materia stai cercando?

Reti di Elaboratori e Architettura di Internet

Appunti per l'esame di Reti di Elaboratori del corso di laurea in Informatica all'università "La Sapienza" di Roma. Gli appunti sono derivanti da sunti delle lezioni della professoressa Chiara Petrioli e complementati con le informazioni contenute nelle slide della docente, oltre che con le informazioni acquisite dallo studio del libro di testo consigliato: "Computer Networking, a Top Down Approach"... Vedi di più

Esame di Reti di elaboratori docente Prof. C. Petrioli

Anteprima

ESTRATTO DOCUMENTO

Generalmente si utilizza una tecnica mista tra conteggio e delimitatori con

stuffing bit.

Un protocollo data-link può offire diversi servizi:

• Link Access:

Nel caso di un canale broadcast, il servizio di link access è di aiuto per

evitare collisioni tra i frame.

• Indirizzamento:

Il servizio di indirizzamento viene utilizzato per identificare sorgente e

destinazione di un frame.

• Error Detection ed Error Correction:

Il servizio di error detection permette di identificare la presenza di errori

all’interno di un frame. Il servizio di error correction permette anche di

trovare e correggere i singoli errori.

• Half-Duplex:

Il servizio di half-duplex permette ad entrambi i nodi di comunicare sullo

stesso link, ma non allo stesso tempo.

• Affidabilità:

In questo livello viene generalmente implementata fisicamente, utilizzando

delle tecnologie a più basso rischio di errori.

• Controllo di Flusso.

Il livello data-link trova la sua implementazione nelle Network Interface

Cards (NIC), o anche Schede di Rete. Viene implementato a livello hardware,

per ragioni di efficienza. In effetti, i protocolli data-link svolgono azioni com-

plesse, la maggior parte delle quali troppo lente da svolgere a livello software.

5.1 Servizi Data-Link: Error Detection ed Error

Correction

Il problema dell’error detection può essere presentato in maniera formale, per

rendere idea della difficoltà della sua risoluzione.

Si ha una certa sequenza di dati, detta D, cui si allegano delle informazioni di

error detection and correction EDC. La coppia (D, EDC) viene poi inviata. Il

0 0

destinatario riceve una seconda coppia (D , EDC ). Risolvere un problema di

0

error detection significa determinare se D = D . Risolvere un problema di error

0

6

correction significa determinare quali siano i bit che rendono D = D .

Purtroppo non esiste un modo che renda certo scovare errori quando presenti,

tantomeno esiste un modo che ne renda certa la correzione. Più formalmente,

39

se p è la probabilità di identificare la presenza di errori in un messaggio per un

certo protocollo, allora p < 1.

Ovviamente, maggiore è la lunghezza del campo EDC per uno stesso protocol-

lo, maggiore sarà p. Tuttavia, da un punto di vista puramente implementativo,

un campo EDC più lungo significa un overhead sui dati maggiore, cosa che è

preferibile evitare.

5.1.1 Error Detection and Correction: Bit di Parità

Il metodo dei bit di parità è molto semplice, ma anche molto inaffidabile.

La versione più semplice prevede una sequenza EDC lunga un solo bit. Il

metodo consiste nel contare il numero di 1 presenti nei dati e di impostare il bit

della sequenza EDC in modo che nella coppia (D, EDC) il numero totale di 1

sia dispari.

Per comprendere in che modo questo metodo possa sbagliare, basti pensare a

cosa succede se è il bit di parità ad essere sbagliato. In tal caso il messaggio

sarebbe scartato senza motivo. Oppure se ci fossero un numero pari di errori

nel messaggio. In tal caso, il numero di 1 presenti resterebbe pari, se era pari, o

dispari, se era dispari, e l’errore non verrebbe notato, permettendo di inoltrare

il messaggio nonostante gli errori.

Esiste una seconda versione del metodo del bit di parità. Vengono scelti due

valori n, m tali che, definita con l la lunghezza del campo dati D, allora vale

l = nm.

A questo punto viene creata una matrice M in cui, per ogni riga

(n+1)×(m+1)

(e per ogni colonna) i primi n bit (risp. m bit) appartengono a D, mentre

l’(n + 1)-esimo (risp. (m + 1)-esimo) appartiene ad EDC ed è il bit di parità

della singola riga (risp. colonna).

Questo secondo metodo permette anche la correzione degli errori. Infatti, se il

bit m presenta un errore, allora si riscontreranno errati i bit di parità m

i,j i,(m+1)

e m . L’errore, pertanto, viene trovato e corretto.

(n+1),j

Notare che anche questo metodo non è infallibile. Se, infatti, fossero i bit

m e m ad essere errati, il bit m verrebbe corretto senza motivo,

i,j

i,(m+1) (n+1),j

poiché non sarebbe errato.

5.1.2 Error Detection and Correction: Distanza di Ham-

ming

Date due sequenze di bit S , S , si definisce distanza di hamming il numero di

1 2

1 presenti nella sequenza d = S . In pratica, la distanza di hamming è il

XORS

1 2

numero di bit differenti tra le due sequenze.

Il codice di hamming è un particolare tipo di codifica del messaggio che può

essere utilizzata per identificare la presenza di errori e, talvolta, per correggerli.

n −

Sia D un messaggio di lunghezza 2 1. Ogni bit in una posizione che sia una

i

potenza di 2, sia essa 2 , viene collocato un bit di parità con il compito di con-

trollare alcuni bit del messaggio seguendo la seguente regola: il bit in posizione

40

i

2 è un bit di parità per il messaggio formato utilizzando i bit di D di tutti i

i i −

range [k2 , (k + 1)2 1] dove k sia dispari.

Ad esempio, se si ha un messaggio lungo 7 bit, i bit di parità saranno quelli

in posizione 1, 2 e 4. Se m è un bit del messaggio e c è un bit di controllo,

allora il messaggio sarà formato dalla sequenza (c , c , m , c , m , m , m ). Il

1 2 3 4 5 6 7

bit c si occuperà di tutti i bit dispari, quindi m , m , m , c si occuperà di

1 3 5 7 2

m , m , m , mentre c si occuperà di m , m , m .

3 6 7 4 5 6 7

Per poter identificare con certezza la presenza di errori bisogna tenere pre-

sente che, se sono presenti d errori e il messaggio contiene n bit di parità, è

necessario che d < n.

Inoltre, se si vuole anche correggere tali errori, è necessario che 2d < n.

5.1.3 Error Detection and Correction: Cyclic Redundan-

cy Check (CRC)

Il metodo CRC è il metodo di error detection and correction più utilizzato nella

pratica ed è implementato, tra gli altri, nei protocolli Ethernet, Wi-Fi 802.11 e

nelle reti ATM.

L’idea è quella di accordare i due nodi su una certa sequenza G, lunga r + 1

bit, detta generatore.

Dato il messaggio D, esso viene interpretato come un numero binario e la se-

quenza EDC viene scelta lunga r bit e in modo che, se interpretata come un

numero binario R, valga: DR mod G = 0

0 0 0 0 6

Il destinatario riceve la coppia (D , R ). Se D R mod G = 0, allora il destina-

tario saprà che il messaggio contiene errori e lo scarterà.

Nonostante questo metodo sia molto utilizzato e sia estremamente efficiente,

va tenuto conto che si tratta solamente di un metodo di error detection, in

quanto non permette di identificare i singoli errori presenti nel messaggio.

Inoltre, come già anticipato, non si può avere la certezza di identificare gli errori.

Il vantaggio di questo metodo è che identifica con probabilità 1 tutti i messaggi in

cui siano presenti d r errori e, per d > r, mantiene comunque una probabilità

considerevole.

5.2 Multiple Access

Esistono due principali categorie di collegamento tra nodi:

• Point-to-Point;

• Canali Broadcast. 41

Il primo tipo di collegamento non è di particolare interesse per il problema

del multiple access. Infatti, il collegamento point-to-point prevede una connes-

sione diretta tra due nodi che coinvolga esclusivamente questi.

Un canale broadcast è un tipo particolare di collegamento che mette in co-

municazione più nodi allo stesso tempo. Quando un nodo invia un frame, questo

viene ricevuto da tutti, ma scartato da chiunque non sia il destinatario.

I canali broadcast, tuttavia, presentano il problema delle collisioni. Per com-

prendere cosa sia in particolare questo problema, immaginiamo due nodi A, B

in un canale broadcast. Il nodo A, ad un certo tempo t invia un frame, che

0

impiegherà un certo tempo ∆t per propagarsi in tutto il canale. Il nodo B invia

un secondo frame, ad un tempo t . Se t < t < t + ∆t, allora i due frame nel

1 0 1 0

canale broadcast entreranno in collisione, compromettendo i dati che i nodi nel

canale riceveranno.

Il problema del multiple access si pone come obiettivo quello di evitare, ge-

stire o, quantomeno, ridurre le collisioni.

I requisiti richiesti da un protocollo multiple access per un canale con velocità

di trasmissione R sono:

• Se è un solo nodo a trasmettere, deve farlo con velocità di trasmissione R;

• Se sono N nodi a trasmettere, La velocità media di trasmissione per ogni

nodo (n.b. non deve essere tale in ogni momento, ma solo la velocità

R ;

media) deve essere N

• Deve essere completamente centralizzato (e.g. niente nodi coordinatori,

sincronizzazioni, bande dedicate, ecc.);

• Deve essere semplice.

Esistono tre tipologie di protocolli che gestiscono il multiple access:

• Channel Partitioning:

Il canale viene partizionato in slot, che possono essere frequenze, slot

temporali o altro. Ogni nodo ha uno slot riservato che utilizzerà per

comunicare.

• Random Access:

Il protocollo non cercca di evitare le collisioni, ma le gestisce e le risolve.

• Taking Turns:

I nodi trasmettono a turno. Se un nodo trasmette un’informazione più

lunga di un altro, il suo turno durerà di più.

42

5.2.1 Protocolli Channel Partitioning: TDMA/FDMA

Il protocollo Time Division Multiple Access divide il canale in frazioni tempo-

rali, dette rounds. Ogni round ha la medesima lunghezza e a sua volta è diviso

in un certo numero di slot, tanti quanti sono i nodi del canale. In un canale

con N nodi, ogni round sarà diviso in N slot, ognuno della medesima durata.

L’i-esimo nodo potrà trasmettere solo all’i-esimo slot di ogni round. Se l’i-esimo

nodo non deve trasmettere, allora lo slot rimane ”idle”, cioè non viene utilizza-

to, ma nessun altro nodo potrà trasmettere durante quello slot.

Il protocollo Frequency Division Multiple Access divide, invece, il canale in

bande di frequenza. Ad ogni nodo è associata una certa frequenza e potrà tra-

smettere solo su quella. Anche qui, se il nodo i non ha dati da trasmettere,

allora l’i-esima banda di frequenza rimarrà idle, vale a dire che attraverso quella

frequenza non sarà trasmesso nulla.

Questo tipo di protocollo non rispetta molto del protocollo ideale. In effetti,

nessun nodo potrà mai trasmettere con l’intera velocità del canale e il rapporto

tra velocità del canale e nodi in trasmissione viene rispettato solo nel caso in

cui tutti i nodi stiano trasmettendo. Inoltre, il protocollo TDMA richiede una

sincronizzazione tra i vari nodi, mentre quello FDMA richiede una divisione in

slot del canale.

5.2.2 Protocolli Random Access: Slotted ALOHA

Nel protocollo Slotted ALOHA è necessario fare alcune assunzioni:

• I frames trasmessi dai nodi hanno tutti la stessa dimensione.

• Il tempo è diviso in slot uguali di tempo, tutti grandi esattamente quanto

il tempo necessario per trasmettere un frame.

• I nodi cominciano la trasmissione solo all’inizio dello slot temporale. Se

lo slot è già cominciato, attendono l’inizio dello slot successivo.

• I nodi devono essere tutti sincronizzati.

• Quando due nodi trasmettono nello stesso slot, tutti i nodi del canale

vengono avvisati della collisione.

Se queste premesse sono rispettate, il protocollo è di semplicissima imple-

mentazione.

Se, durante la trasmissione, non avvengono collisioni, allora la trasmissione è

andata a buon fine. In caso contrario, con una certa probabilità p, il nodo ri-

prova a trasmettere nello slot temporale successivo.

Anche questo protocollo ha pochi pro. Infatti, oltre alla semplicità, rispetta

solamente la richiesta di una trasmissione a velocità piena nel caso di un solo

nodo in trasmissione. 43

Se si calcola l’efficienza del protocollo, cioè la quantità di tempo in cui nel canale

vengono trasmessi dati che non andranno in collisione, si ottiene un valore vera-

mente basso. Infatti, se N nodi vanno in collisione, allora, per ogni slot di tem-

−1

N

po successivo, la probabilità che un determinato nodo trasmetta è p(1 p) ,

−1

N

mentre la probabilità che qualcuno dei nodi trasmetta è N p(1 p) . Questa

1

→ = 0.37, cioè solamente il

probabilità, quando è massima e N +∞, vale e

37% del tempo il canale è veramente in uso.

5.2.3 Protocolli Taking Turns: CSMA e CSMA/CD

Il protocollo Carrier Sense Multiple Access è basato su una semplice idea: se

nel canale si stanno trasmettendo informazioni, allora nessun altro nodo deve

cominciare una trasmissione. Quando un nodo deve trasmettere, si mette in

ascolto nel canale. Se e solo se non recepisce trasmmissioni in corso, allora co-

mincia a trasmettere egli stesso.

Il protocollo CSMA soffre di un problema, tuttavia. Se due nodi A, B devono

trasmettere, si mettono in ascolto sul canale. Nessuno dei due sente trasmissio-

ni in corso, quindi cominciano a trasmettere e le trasmissioni vanno in collisione.

Il protocollo CSMA with Collision Detection risolve questo problema. Il suo

funzionamento è analogo a quello del semplice CSMA, ma in caso di una colli-

sione, entrambi i nodi smettono immediatamente di trasmettere e si rimettono

in ascolto sul canale.

5.2.4 Protocolli Taking Turns: Polling

Il protocollo di polling prevede la presenza di un nodo speciale, detto master,

che ha il compito di coordinare gli altri nodi nel canale, che prendono il nome

di slaves.

Il nodo master contatta singolarmente e a turno i vari slaves, domandandogli

se hanno dati da trasmettere. Quando incontra uno slave con dei dati, allora il

canale viene interamente dedicato a tale nodo, fino alla fine della trasmissione.

Questo protocollo presenta diversi problemi, come l’overhead di dover effettuare

il polling da parte del master, la latenza che soffrirebbe un nodo se tutti quelli

prima di lui dovessero trasmettere e, soprattutto, è soggetto a single point of

failure, vale a dire che se il nodo master dovesse disattivarsi o scollegarsi per

qualsiasi motivo, l’intero canale non potrebbe trasmettere nulla.

5.2.5 Protocolli taking Turns: Token Passing

Nel protocollo di token passing i nodi si scambiano un messaggio speciale, detto

token, che gli permette di ottenere la parola. Un solo nodo per volta può avere

il token. Se ha dei dati da inviare, allora li trasmette nel canale, altrimenti

salta direttamente al passaggio del token. Il nodo con il token invia un frame

speciale al nodo successivo. Questo frame informa il secondo nodo che ora è lui

44

il possessore del token, mentre il primo nodo (come tutti gli altri) non potrà più

prendere la parola fino al momento in cui riceverà di nuovo il token.

Anche qui, la trasmissione del token implica un overhead e la latenza dell’ultimo

nodo nella sequenza. Il token, inoltre, è anch’esso un single point of failure.

Se il token viene perduto (e.g. il messaggio è corrotto), nessun nodo potrà

trasmettere.

5.3 Indirizzamento

Ogni scheda di rete ha un univoco indirizzo MAC, una sequenza di 48 bit che la

identifica all’interno di una rete. A differenza dell’indirizzo IP, l’indirizzo MAC

è indipendente dalla rete, ma è definito dal produttore della scheda di rete.

L’utilità dell’indirizzo MAC è quella di identificare la singola scheda di rete al-

l’interno di una rete. Un frame inviato ad un certo nodo, avrà nel suo header

l’indirizzo MAC di quel nodo, in modo da poter identificare il destinatario (ad

esempio nel caso di un canale broadcast).

5.3.1 Protocolli di Indirizzamento: ARP

Quando un nodo riceve un datagramma dal livello superiore, la sua conoscenza si

limita all’indirizzo IP del destinatario. Il nodo ignora quale sia l’indirizzo MAC.

Per poter spedire il frame, quindi, si ricorre al protocollo ARP, un protocollo

che permette di risalire all’indirizzo MAC a partire dall’indirizzo IP.

Ogni nodo ha in memoria una tabella, la ARP Table, che contiene una serie

di triple (IP, M AC, T T L). Il TTL di una ARP table è, generalmente, di 20

minuti. Per ottenere l’indirizzo MAC, la procedura eseguita dal protocollo ARP

è semplice. Siano A, B due nodi in una rete. A vuole spedire un frame a B, ma

conosce solamente il suo indirizzo IP.

1. A crea un frame con il suo indirizzo MAC nel campo mittente e l’indirizzo

broadcast nel campo destinatario. Dopodiché lo spedisce a tutti i nodi

della rete.

2. I nodi con un indirizzo IP diverso dal proprio, scartano il frame. B,

invece, risponde ad A, inviando un frame con il suo indirizzo MAC nel

campo mittente.

3. A questo punto, A salva nella sua ARP table la tripla conl’indirizzo IP e

l’indirizzo MAC di B.

Il protocollo ARP ha il vantaggio di essere soft state, cioè mantiene uno stato

degli altri nodi, ma se quello stato non viene aggiornato, l’informazione viene

cancellata. Inoltre, il protocollo ARP è plug-and-play, in quanto la tabella vie-

ne creata dinamicamente e autonomamente, senza la necessità di informazioni

aggiuntive. 45

Per un indirizzamento verso una rete esterna, è il router che si occupa della

gestione delle traduzioni. Esso, infatti, contiene due ARP table, una per ciascu-

na rete, in cui salva le traduzioni degli indirizzi che comunicherà agli altri nodi

nelle rispettive reti.

5.4 Ethernet

La tecnologia Ethernet è la più diffusa tecnologia per il collegamento delle reti a

livello Data-Link. Ha il vantaggio di essere economica, veloce, molto affidabile

e, soprattutto, evita facilmente le collisioni (nel caso si usino degli switches).

Cominciamo definendo l’header di un frame Ethernet.

• Preambolo (8 byte):

Il preambolo è una sequenza utilizzata per sincronizzare i due nodi. Co-

mincia con 7 byte che seguono il pattern per finire con l’ultimo

10101010,

byte con il pattern 10101011.

• Indirizzi Sorgente e Destinazione (12 byets totali):

Questi campi contengono gli indirizzi MAC del mittente e del destinatario.

Se un destinatario riceve un frame Ethernet con un indirizzo MAC diver-

so dal proprio o dall’indirizzo di broadcast, allora scarta direttamente il

frame.

• Tipo (1 byte):

Questo campo indica il protocollo utilizzato nel livello network.

• CRC (dipende dalla versione, generalmente 4 byte):

Questo campo contiene i dati aggiuntivi per il controllo degli errori con il

metodo CRC. Se vengono riscontrati errori, il frame viene scartato.

Il protocollo Ethernet è connectionless, in quanto non compie nessun hand-

shaking per stabilire una connessione prima di inviare dei dati. Inoltre è un

protocollo no affidabile, in quanto possono occorrere perdite di pacchetti. Tut-

tavia, la tecnologia Ethernet è sufficientemente affidabile, a livello fisico, da

rendere questi eventi abbastanza rari.

Ethernet fa uso di una variante del protocollo CSMA/CD per la gestione del

multiple access. Dopo aver ascoltato nel canale, il nodo comincia ad inviare il

frame. Se durante la trasmissione del frame viene percepita una collisione, la

trasmissione viene interrotta e il nodo invia un particolare segnale, detto jam

signal, una sequenza di 48 bit che serve ad informare tutti i nodi della rete che è

avvenuta una collisione. A questo punto, prima di ritrasmettere, il nodo aspetta

512k bit times, dove il bit time è il tempo necessario per inviare un signolo bit,

n −

k è un intero scelto casualmente nell’intervallo [0, 2 1] e n è il numero di

tentativi falliti per inviare quel frame. 46

5.4.1 Switches

Uno switch è un dispositivo che agisce a livello data-link ed ha il compito di

connettere più nodi, ricevendo ed inoltrando dei frame Ethernet.

Quando riceve un frame, ne esamina l’indirizzo MAC e lo inoltra su una o più

delle sue uscite, utilizzando il protocollo CSMA/CD di Ethernet. I suoi vantaggi

sono quelli di essere completamente trasparente, in quanto agisce in modo da

rendere i nodi ignare della sua presenza (e, quindi, possono comportarsi come se

si trovassero direttamente collegati tra loro), oltre al fatto di essere plug-an-play,

evitando, perciò, il compito della configurazione.

Ogni nodo ha una connessione diretta e dedicata verso lo switch, che immagaz-

zina i pacchetti e li ridistribuisce ai giusti destinatari a turno, evitando comple-

tamente le collisioni.

All’interno di uno switch si trova una speciale tabella, la switch table, che contie-

ne le traduzioni in indirizzi MAC del numero di interfaccia a cui sono collegati

i nodi.

La tabella viene autogenerata con il tempo. Quando un nodo invia un frame, lo

switch salva nella tabella l’indirizzo MAC e lo associa al numero di interfaccia

da cui ha ricevuto il frame. Se deve inoltrare un frame con un indirizzo MAc

che non è presente nella tabella, allora lo switch invia a tutti i nodi, eccetto

quello da cui ha ricevuto il frame, un frame ARP per ottenere l’interfaccia di

tutti i nodi che risponderanno.

Notare che gli switch possono essere interconnessi tra loro o essere connessi in

modo da formare una struttura gerarchica (uno switch che gestisce altri switch)

senza alterarne minimamente il funzionamento.

5.4.2 VLAN

Alcuni switch permettono di raggruppare le porte in reti virtualmente separa-

te. Benché il dispositivo fisico sia solamente uno, le porte vengono configurate

manualmente dall’amministratore di rete per appartenere a due o più sottoreti

indipendenti. Questo permette non solo di utlizzare un singolo di spositivo per

più di una rete locale, ma anche di rendere tali reti più facilmente amministra-

bili. Ad esempio, se si desidera spostare un dispositivo da una rete ad un’altra,

invece di dover intervenire manualmente sui collegamenti, è sufficiente eseguire

il software di gestione delle reti virtuali ed impostare lo switch affinché la porta

a cui tale dispositivo è collegato faccia parte di una rete differente. Le reti vir-

tuali sono isolate l’una dall’altra, proprio come se fossero delle vere reti locali.

Un router integrato nello switch permette di scambiare dati da una rete all’altra

in maniera personalizzabile dall’amministratore.

Una (o più) porta dello switch può essere impostata per essere una trunk port,

cioè una porta che collega lo switch ad una rete esterna. La trunk port può

essere impostata per permettere diverse tipologie di accesso all’esterno alle di-

verse reti virtuali, oppure possono essere impostate più trunk port per collegare

le reti virtuali a reti diverse. 47

5.5 Point-to-Point

Le connessioni point-to-point sono connessioni molto più semplici dei canali

broadcast. In questo tipo di connessioni vi sono solo due nodi ed un collega-

mento diretto tra essi. Il vantaggio di questo tipo di connessioni è l’assenza dei

controlli Multiple Access e l’assenza di indirizzi MAC, che non sono più neces-

sari per identificare mittente e destinatario.

5.5.1 Protocolli Point-to-Point: PPP

Il protocollo PPP prevede alcuni requisiti nella sua implementazione:

• packet Framing:

I datagrammi provenienti dal livello network devono essere incapsulati in

dei frames. Tali frames devono poter gestire datagrammi provenienti da

qualsiasi tipo di protocollo di networking.

• Bit Transparency:

Qualsiasi tipo di bit pattern deve essere permesso all’interno del campo

dati del frame.

• Error Detection:

Il protocollo deve implementare un qualche metodo di error detection, ma

non di error correction.

• Connection Liveness:

Il protocollo deve identificare un cedimento o una rottura del collegamento

e notificarlo al livello network.

• Address Negotiation:

I due nodi devono poter conoscere ed impostare l’indirizzo del livello net-

work dell’altro.

L’header del protocollo PPP non prevede molti campi e la sua lunghezza,

benché variabile, è generalmente limitata.

• Flag (1 byte):

Il campo flag è un delimitatore che segnala l’inizio dell’header del frame.

Tale delimitatore ha valore 01111110.

• Indirizzo (1 byte):

Allo stato attuale delle cose è un campo non necessario e non viene

utilizzato.

• Control (1 byte):

Come il campo indirizzo. 48

• Protocol (1 o 2 byte):

Questo campo identifica il protocollo di networking utilizzato dal data-

gramma nel campo dati.

• Info (variabile):

Il campo dati. Qui si trova il datagramma.

• Check (2 o 4 byets):

Questo campo contiene i bit aggiuntivi per il CRC.

• Flag (1 byte):

Delimitatore che indica la fine del frame. Segue lo stesso pattern del Flag

di inizio.

Poiché il frame è delimitato dal pattern è necessario distinguere

01111110,

questo tipo di pattern nel campo dati dal delimitatore, altrimenti non si rispet-

terebbe la specifica di bit transparency.

Per fare ciò, il protocollo prevede la procedura di bit stuffing. Durante la crea-

zione del frame, ogni volta che il pattern occorre nel campo dati, viene

01111110

fatto seguire dallo stesso pattern, di modo che, quando il destinatario troverà

il pattern saprà di doverlo interpretare come al-

0111111001111110, 01111110

l’interno del campo dati.

Un collegamento PPP necessita di essere configurato per l’autenticazione e la

lunghezza massima del frame. Inoltre, ogni nodo deve apprendere o configurare

le informazioni del livello network dell’altro.

49

Capitolo 6

Wireless e Reti Mobili

Una rete wireless (o una rete mobile) è un tipo di rete in cui i collegamenti tra

i vari dispositivi sono realizzati senza l’utilizzo di cavi.

Gli elementi costituenti di una rete wireless sono i seguenti:

• Host Wireless:

Un host wireless è un dispositivo in cui vengono eseguite le applicazioni.

Questo tipo di dispositivo può essere fisso o mobile, in quanto l’assenza di

fili non implica la mobilità.

• Base Station:

Una base station, tipicamente, è collegata ad una rete wired, cioè una rete

il cui collegamento è realizzato mediante cavi.

La base station è responsabile del collegamento tra la rete wired a cui è

collegata e i dispositivi wireless nella sua area.

• Collegamento Wireless:

Il collegamento wireless è ciò che mette in comunicazione gli host wireless

alla base station (o anche tra di loro). Una stessa base station, in genere,

coordina collegamenti wireless con diversi tipi di protocolli differenti, oltre

che differenti velocità e distanze di trasmissione.

Una rete wireless può essere di tipo ad infrastruttura o di tipo ad hoc. Le

reti wireless ad infrastruttura connettono, tramite le base station, gli host wire-

less alla rete wired. Inoltre, questo tipo di reti, permette agli host di cambiare

base station tramite cui effettuare l’accesso alla rete wired.

Le reti ad hoc, invece, sono prive di base station e comprendono solo un certo

umero di nodi che comunicano tra loro in maniera diretta. I nodi sono organiz-

zati una rete ed eseguono protocolli ed algoritmi di routing all’interno di questa

rete. I nodi possono comunicare solamente con gli altri nodi all’interno della

rete ad hoc.

A differenza delle reti wired, le reti wireless devono fronteggiare problemi

di natura complessa. Tra questi, la caratteristica dei segnali radio di perde-

50

re potenza man mano che avanzano nello spazio, le interferenze da sorgenti

esterne (non necessariamente altre comunicazioni, ma microonde ed altro), gli

ostacoli fisici, che riflettono o rallentano le onde radio e, quindi, le fanno arriva-

re a destinazione con tempi differenti o, addirittura, le bloccano completamente.

Poiché sono molti i dispositivi che emettono onde, la trasmissione dovrà ave-

re sempre a che fare con dei rumori, vale a dire le interferenze provocate dalle

altre onde presenti nell’ambiente.

Il signal-to-noise ratio (SNR) è il rapporto tra la potenza del segnale e quella

dei rumori. Maggiore è l’SNR, mire è il bit error rate (BER), vale a dire la

quantità di errori presenti nella comunicazione.

Per aumentare l’SNR è sufficiente aumentare la potenza del segnale, ma laddo-

ve non sia possibile aumentare l’SNR, è necessario utilizzare una tecnologia che

permetta di diminuire il BER mantenendo il throughput più alto possibile.

Un ostacolo fisico presenta non solo un problema di impossibilità nella comu-

nicazione, ma anche un problema di interferenza. Poiché una rete wireless è un

canale broadcast, se due terminalisono impossibilitati a comunicare a causa di

un ostacolo fisico, devono utilizzare un terzo terminale raggiungibile da entrambi

come tramite. Poiché nessuno dei due è in grado di percepire la comunicazione

dell’altro, entrambi sono inconsapevoli del fatto che la loro comunicazione crea

un’interferenza sul terzo terminale, che dovrà riuscire a distinguere ciascuna

delle due comunicazioni, mentre l’altra fa da rumore.

Per risolvere il problema delle interferenze create da due o più trasmissioni

che avvengono in contemporanea, è stato introdotto il protocollo di Code Divi-

sion Multiple Access (CMA).

Ogni dispositivo è fornito di un codice univoco. Questo codice viene utilizzato

dai dispositivi per codificare i dati da inviare, che saranno decodificati a rice-

zione, poiché ogni dispositivo della rete è a conoscenza del codice degli altri.

Se i codici vengono scelti in maniera ”ortogonale” tra loro, allora le trasmissioni

possono coesistere senza creare interferenza o, comunque, minimizzandola.

6.1 IEEE 802.11 Wireless LAN (Wi-Fi)

Nelle reti wireless 802.11, gli host comunicano con la base station (che qui prende

il nome di Access Point o AP ), la quali permette loro di trasmettere e ricevere

dalla rete wired cui è collegata.

Un access point costituisce un Basic Service Set (BSS). Oltre all’access point

che permette la comunicazione con la rete wired, un BSS permette agli host al

suo interno di comunicare tra loro come se fosse una rete ad hoc. In sostan-

za, un BSS è sia una rete wirless ad insfrastruttura, sia una rete wireless ad hoc.

51

Ad un AP viene associato, arbitrariamente, un certo spettro di frequenza.

Ovviamente, se un AP con lo stesso spettro è sufficientemente vicino, si crea

un’interferenza, ma ciò è permesso dal protocollo IEEE 802.11.

Un host, per connettersi alla rete wireless, deve associarsi con un access point.

Per poterlo fare deve inviare una richiesta di associazione, cui l’AP risponden-

derà, generalmente, richiedendo l’autenticazione.

Per recepire la presenza di AP, esistono due metodi:

• Passive Scanning:

L’AP invia, periodicamente un beacon frame, contenente il proprio SSID

e indirizzo MAC, nella rete. Un host che voglia rintracciare la presenza

di un AP, dovrà semplicemente mettersi in ascolto per ricevere un beacon

frame.

• Active Scanning:

L’host invia una sonda, una richiesta contenente i propri dati, per tutta

la gittata del suo segnale. Se un AP si trova all’interno della portata del

segnale, risponderà all’host fornendo i propri dati.

Se un host si sposta entro la portata del segnale di un secondo AP, ma

senza uscire dalla portata del primo, allora il suo AP di riferimento potrebbe

rimanere il medesimo o cambiare. Lo switch che gestisce gli AP, essendo capace

di autoapprendere, riuscirà a gestire comunque le richieste inviate dall’host.

6.1.1 IEEE 802.11: Collision Avoidance

Poiché, come dicevamo, non sempre due host in un canale wireless sono in grado

di percepirsi, il semplice protocollo CSMA/CD non può essere messo in pratica,

in quanto le collisioni non sarebbero percepite.

Il protocollo utilizzato da IEEE 802.11 è il Carrier Sense Multiple Access

with Collision Avoidance (CSMA/CA).

Se non viene percepita una trasmissione nel canale, allora l’intero frame vie-

ne inviato. Nel caso, invece, in cui si volgia trasmettere, ma il canale fosse

occupato, allora viene fatto partire un timer casuale, che continua a scorrere

indipendentemente dal traffico nel canale. Non appena il timer scade, la proce-

dura va ripetuta. Se non dovesse essere riceto un ACK, allora basterà aumentare

il timer e ritentare la trasmissione.

Da parte del ricevente, basta inviare un segnale di ACK se il frame viene rice-

vuto per intero e senza errori.

Per evitare le collisioni, il mittente invia un segnale di request-to-send (RTS)

all’AP. Più RTS possono essere inviati contemporaneamente e collidere, ma sono

messaggi brevi, per cui non si pone il problema di un grave overhead nel caso

in cui il messaggio vada perso.

Dopo aver ricevuto una RTS ”pulita”, l’AP invia un segnale di clear-to-send

(CTS) per quell’host. Il segnale viene inviato in broadcast, in modo da essere

52

ricevuto da tutti gli host, che, semplicemente, rinvieranno la loro RTS alla fine

della trasmissione del primo host.

6.1.2 IEEE 802.11: Header

L’header di un frame IEEE 802.11 è molto articolato e comprende un numero

molto elevato di campi.

• Indirizzo 1:

Questo è l’indirizzo MAC dell’host o dell’AP che riceverà il frame.

• Indirizzo 2:

Questo è l’indirizzo MAC dell’host o dell’AP che invia il frame.

• Indirizzo 3:

Questo è l’indirizzo MAC del router a cui l’AP è collegato.

• Indirizzo 4:

Questo campo viene utilizzato solo nelle connessioni ad hoc.

• Durata:

Questo campo contiene il tempo per cui la trasmissione rimarrà riservata.

• Sequence Number.

• Frame Control:

Questo campo contiene numerosi sottocampi che sono necessari per la ge-

stione e l’analisi del frame. Tra questi vi è il tipo del frame, che può essere

RTS, CTS, ACK o dati.

6.2 Bluetooth

Il bluetooth è una tecnologia wireless a basso costo e affidabile, ma con una

portata molto corta (tra i 10 e i 100 metri).

Una rete bluetooth è organizzata in piconets, delle piccole sottoreti con una

struttura master-slave. Ogni piconet è costituita da un dispositivo master e un

certo numero di dispositivi slave, di cui al massimo 7 attivi contemporaneamen-

te.

Ad ogni pacchetto trasferito, la frequenza della comunicazione viene cambiata,

in modo da minimizzare le interferenze e fornire garanzie di sicurezza aggiun-

tive. Inoltre, il tempo è diviso in slot temporali di 625 µs ed ogni pacchetto

ha una dimensione che gli permette di essere inviato in un tempo di 1, 3 o 5

slots. Per fare questo, la tutti i dispositivi della piconet vengono sincronizzati

con il clock del dispositivo master e viene calcolata una sequenza di cambio di

frequenze basate su ID e clock del dispositivo master.

53

per creare una rete costituita da più piconet, il metodo più efficiente è quel-

lo di rendere uno o più dispositivi slave di un master, slave di uno o più altri

master. Una rete formata da più piconets si dice scatternet e consente una tra-

smissione multihop attraverso più piconets per raggiungere la sua destinazione.

Per costituire una rete bluetooth è necessario affrontare tre problemi:

• Device Discovery:

Questo problema consiste nel rendersi conto di quali dispositivi si trovano

nella portata di un certo dispositivo.

• Piconet Formation:

Ci si rende conto di quali dei dispositivi all’interno della portata devono

far parte della piconet e con quale ruolo e viene formata la piconet.

• Piconet Interconnection:

Vengono interconnesse più piconet tra loro.

Il device discovery può essere affrontato tramite la procedura di inquiry.

I due dispositivi devono trovarsi in due stati differenti, detti inquiry mode e

inquiry scan mode. Il dispositivo in inquiry scan mode si sposta da un canale

all’altro e rimane in ascolto per un periodo di tempo abbastanza lungo e cambia

canale molto lentamente.

Il dispositivo in inquiry mode, invece, cambia canale con una frequenza maggio-

re, inviando pacchetti contenenti il proprio ID e aspettando una risposta.

La procedura di inquiry è detta asimettrica, in quanto il solo dispositivo a rac-

cogliere informazioni su indirizzo e velocità di clock dell’altro e quello in inquiry

mode.

Per rendere la scoperta simmetrica è necessario che i dispositivi si alternino

nel ruolo di inquirer e scanner per un periodo di tempo sufficientemente lungo,

in modo da scambairsi tutte le informazioni necessarie.

Nel caso in cui una piconet abbia più di 7 slaves, il master deve fare in modo

di mantenerne attivi solo 7. Per fare questo, il master può mettere alcuni slaves

in stato di park, uno stato in cui il dispositivo non accetta o comincia comuni-

cazioni, mantenendo solamente la sincronizzazione. Quando il master invia il

segnale di wake up allo slave, questo esce dallo stato di park e ritorna attivo.

Se si forma una scatternet, è necessario stabilire quali slaves dovranno fare

da gateway e per quanto tempo. Inoltre, è necessario anche eseguire protocolli

di routing per le comunicazioni multihop.

6.3 Reti Cellulari e Reti Mobili

Una rete cellulare è un tipo di rete wireless che vede dividere il mondo in celle,

aree geografice ben delimitate e costituite da una base station, dei mobile users

(analoghi agli host wirless) e protocolli fisici e data-link per la connessione tra

54

users e base station.

Nelle reti cellulari lo spettro è diviso con una tecnica mista tra TDMA e

FDMA, in cui vi sono dei canali di frequenza, a loro volta divisi in slot tempo-

rali. I canali sono gestiti utilizzando il protocollo CDMA, per la gestione delle

collisioni.

6.3.1 Mobilità e Routing

La mobilità è la capacità di un dispositivo di muoversi e agganciarsi da una base

station ad un’altra mantenendo attiva la connessione alla rete.

Per fare questo, è necessario che in ogni momento il dispositivo sia raggiungibile

e abbia un ben noto indirizzo IP. Una possibile implementazione per raggiungere

questo obiettivo è quella del routing indiretto. Questa metodologia prevede che

vi sia un determinato indirizzo, l’home address, che identifichi univocamente

e in qualsiasi momento quel dispositivo all’interno di una certa rete, la home

network. Quando un dispositivo mobile accede ad una nuova rete, comincia il

procedimento di registrazione:

1. Il dispositivo contatta il foreign agent, quell’entità che si occupa di gestire

il traffico mobile in una data rete wireless.

2. Il foreign agent assegna un indirizzo IP, detto care-of address al dispositivo

mobile.

3. Il foreign agent contatta l’home network del dispositivo, informandola

che quel dispositivo si trova all’interno della sua rete mobile e gli è stato

assegnato un certo indirizzo.

4. Un eventuale dispositivo remoto che volesse contattare l’host mobile invia

una trasmissione all’home network.

5. L’home network inoltra il pacchetto al foreign agent, che a sua volta lo

trasmette al dispositivo mobile.

6. Il dispositivo mobile risponde utilizzando direttamente l’accesso alla rete

fornito dal foreign agent.

Il routing diretto funziona pressoché allo stesso modo, eccetto che la co-

municazione avviene direttamente tra il dispositivo mobile e quello remoto. Il

dispositivo remoto ottiene il care-of address dalla home etwork e si mette in

contatto con il dispositivo mobile, direttamente attraverso il foreign agent e non

più tramite la home network. Il problema del direct routing è che, sebbene sia

molto più efficiente in termini di velocità della comunicazione, nel momento in

cui il dispositivo mobile cambia cella, il suo indirizzo non è più valido.

La soluzione a questo problema è quella di inoltrare le trasmissioni dal vec-

chio foreign agent al nuovo, fino al termine della sessione o all’aggiornamento

dell’indirizzo da parte del dispositivo remoto.

55

6.3.2 Mobile IP

Il protocollo Mobile IP ha tre componenti standard:

• Routing Indiretto;

• Agent Discovery;

• Registrazione con l’Home Agent.

Nel protocollo Mobile IP, il routing indiretto viene realizzato a livello net-

work, incapsulando il datagramma in un altro datagramma. Se x è l’indirizzo

permanente di un dispositivo mobile, cui è stato momentaneamente assegnato

un care-of address y e un certo host vuole inviargli una trasmissione, allora tale

host invierà un datagramma con destinazione x, che verrà ricevuto dall’home

agent. Quest’ultimo invierà un secondo datagramma al foreign agent, con desti-

nazione y, e inserirà il datagramma ricevuto, senza modificarlo, nel campo dati

del primo. Il foreign agent riceverà il datagramma e lo trasmetterà al mobile

user.

L’agent discovery e la registrazione con l’home agent sono realizzati tramite

messaggi ICMP (un protocollo di networking utilizzato da hosts e routers per

trasmettersi informazioni sul livello network, generalmente messaggi di errore)

in broadcast in cui vengono inviati i care-of addresses.

6.3.3 Mobilità nelle Reti Cellulari

Anche nelle reti cellulari la movilità viene gestita con il routing indiretto. In

questo caso l’home network per un dispositivo mobile è la rete della compa-

gnia telefonica che gli fornisce il servizio. Nell’home network viene mantenuto

l’Home Location Register (HLR), un database in cui sono contenute, per ogni

numero di telefono, informazioni sul profilo e sulla posizione attuale. La foreign

network prende, invece, il nome di visited network, che mantiene un database di

ogni utente attualmente collegato a quella rete, detto Visitor Location Register

(VLR).

Quando un dispositivo si muove in una nuova cella, si registra presso il suo VLR.

La visited network, a questo punto, provvederà ad informare la home network

di aggiornare i dati nell HLR con la nuova posizione.

Quando un host remoto vuole comunicare con un dispositivo cellulare, si

mette in contatto con l’home network. Questa consulta l’HLR, rintraccia la

visited network e inoltra la comunicazione a quest’ultima, dove sarà inoltrata

ancora al dispositivo cellulare. 56

Capitolo 7

Multimedia

7.1 Multimedia Networking Applications

Sempre più spesso, Internet viene utilizzato per applicazioni multimediali. Per

rendersene conto, bisogna considerare che ogni immagine, video o audio che vie-

ne visualizzato o riprodotto sul Web, lo fa tramite un’applicazione multimediale.

Si possono distinguere tre tipologie di applicazioni mutlimediali:

• Streaming/Stored:

Un’applicazione streaming è un tipo di applicazione che permette di ri-

produrre un file audio o video prima che questo venga completamente

scaricato. Più precisamente, la riproduzione avviene in contemporanea al

download. Un’applicazione stored permette di scaricare il file più velo-

cemente delle applicazioni streaming, salvando le sezioni del file scaricate

durante la riproduzione in un buffer, da cui verranno riprodotte in seguito.

• Conversational:

Un’applicazione conversational è un tipo di applicazione interattiva in cui

due utenti trasmettono in tempo reale audio e/o video l’uno all’altro.

• Live Streaming:

Le applicazioni live streaming sono applicazioni in cui audio e/o video so-

no trasmessi in diretta e vengono riprodotti in tempo reale da più utenti.

7.1.1 Audio

Il segnale audio analogico è un’onda fisica. Un computer non è in grado di

riprodurre una vera e propria onda fisica, perciò si ricorre alla tecnica del cam-

pionamento. Il campionamento consiste nel suddividere la linea temporale della

curva audio in frazioni di tempo costanti di larghezza ∆t e approssimare la cur-

va con dei rettangoli di base esattamente ∆t e alti come il punto minimo della

curva nell’intervallo, che ne riproducono l’andamento in maniera approssimata.

57

Maggiore è la frequenza del campionamento (e quindi minore è ∆t) e minore è

l’approssimazione, andando ad aumentare la precisione della riproduzione e la

fedeltà alla curva analogica.

Per codificare un’onda con n ampiezze differenti, registrate nei vari cam-

dlog

pionamenti, sono necessari ne bit. La digitalizazione di un segnale audio

telefonico con la procedura standard è compiuta seguendo i seguenti passi:

1. L’onda audio viene recepita dal dispositivo di input.

2. L’onda in ingresso viene campionata 8000 volte al secondo.

3. Ogni campione viene codificato utilizzando 12 bit.

4. Il campione codificato viene compresso in un valore di 8 bit.

5. Il campione viene inviato attraverso la linea telefonica e ricevuto dal

destinatario.

6. Il campione viene nuovamente espanso dal destinatario in 12 bit.

7. Il campione viene utilizzato per la descrizione dell’onda dal dispositivo del

destinatario.

8. L’onda cosı̀ descritta viene riprodotta dal dispositivo di output.

Ovviamente è impossibile ottenere un’onda identica a quella presa in input.

Il campionamento, per quanto possa essere frequente, prevede degli errori nel-

la descrizione dell’onda. Se, ad esempio, un picco coincide con la fine di un

campionamento e l’inizio di quello successivo, sarà impossibile ricostruire l’onda

originale esattamente con quel picco, perché esso potrà essere praticamente di

qualsiasi ampiezza. Per rendere l’onda il più simile possibile a quella originale

si utilizzano dei metodi basati su modelli di generazione della voce, che sono

estremamente complessi e sensibili a rumori di fondo ed implicano ritardi mol-

to elevati sia in trasmissione, sia in decodifica. Per questo motivo, in caso di

applicazioni sensibili al ritardo, come la telefonia, vengono utilizzati metodi più

primitivi. Bisogna prendere in considerazione anche la dimensione dei pacchetti.

Comprimere un campione con 8 bit e campionare 8000 volte al secondo, significa

che ogni secondo sarà codificato con 64000 bit, vale a dire 8 kilobyte.

7.1.2 Immagini

Le immagini sono il tipo di risorsa multimediale più semplice da codificare. Il

dispositivo di input recepisce l’immagine, che viene suddivisa, a secconda della

risoluzione, in un certo numero di pixel. Ogni pixel viene poi codificato con

un valore per il colore che assume. Nel caso delle immagini in scala di grigi, la

codifica risulta molto semplice. Un pixel può assumere al massimo 256 valori

58

differenti che vanno da 0, equivalente al nero, fino a 255, equivalente al bianco.

Se l’immagine è a colori, è necessario ricorrere alla codifica RGB. Ogni pixel

viene rappresentato, matematicamente parlando, da una tripla (r, g, b), che de-

scrive il colore utilizzando l’intensità di ciascuno dei tre canali, rispettivamente,

rosso, verde e blu. Ognuno dei valori della tripla può assumere un valore in

[0, 255].

7.1.3 Video

Un video è una sequenza di immagini, dette frames, che si susseguono una dietro

l’altra ad un ritmo costante. Ovviamente, codificare un video semplicemente

inviando ogni frame sarebbe assurdo, in quanto richiederebbe un quantitativo

di memoria esageratamente grande. Per tale motivo esistono i metodi della

codifica spaziale e temporale.

• Codifica Spaziale:

In caso di n pixel vicini in cui si ripeta lo stesso valore per il colore, invece

di inviare per n volte lo stesso valore, si invia il valore e il numero n di

pixel che dovranno assumerlo. Altre tecniche permettono di comprimere

59

ancora di più utilizzando algoritmi particolari che permettono di ampliare

questa tecnica ad altri pixel nell’immagine e/o a colori vicini, anche se non

uguali.

• Codifica Temporale:

In un video, specialmente con un alto frame rate, due frame adiacenti

saranno probabilmente molto simili. La codifica temporale permette di

inviare solamente quei pixel che sono diversi da un frame a quello succes-

sivo. Addirittura si potrebbe inviare solamente la differenza di tali pixel,

invece che il loro valore completo, permettendo una compressione ancora

maggiore.

7.2 Streaming Stored Video

L’idea dello streaming è quella di evitare all’utente l’attesa di dover scaricare un

intero file prima di cominciare la riproduzione. In un modello ideale, il dispositi-

vo dell’utente comincerebbe la riproduzione non appea avesse ricevuto la prima

frazione del file, mentre il server continuerebbe a mandarlo. Nel momento in

cui l’utente comincia a riprodurre il pacchetto i-esimo, il server starebbe invian-

do il pacchetto (i + k)-esimo. Mantenendo costante questa differenza, l’utente

potrebbe riprodurre il pacchetto, scartarlo, ricevere il successivo e cosı̀ via.

60

Nel mondo reale, però, la rete è soggetta a ritardi che sono variabili. Un

ritardo variabile impedisce che la differenza tra il pacchetto riprodotto e quello

inviato in un generico istante rimanga costante. Per permettere all’utente la

riproduzione continua senza attese, si ricorre alla tecnica del buffering. Il dispo-

sitivo dell’utente salva in un buffer i dati ricevuti. Non appena un pacchetto

viene riprodotto, il dispositivo lo scarta, preleva dal buffer il pacchetto succes-

sivo e riproduce quest’ultimo.

Aggiungendo un delay tra la ricezione e la riproduzione, si permette al pacchetto

inviato di raggiungere il dispositivo e di essere inserito nel buffer prima del suo

turno nella riproduzione.

7.2.1 Protocolli di Streaming: Dynamic Adaptive Strea-

ming over HTTP (DASH)

Nel protocollo DASH, il compito di determinare le azioni da compiere spetta al

client. Il server ha il solo compito di obbedire alle richieste del client. Ciò di

cui deve preoccuparsi il server è:

• Dividere il file in più chunk; 61

• Ogni chunk immagazzinato nel server, deve essere disponibile in qualità

differenti;

• Per ogni file deve essere disponibile un file manifest, che contiene le loca-

zioni, nel filesystem del server, dei vari chunk.

Il client, a questo punto, deve occuparsi di tutti i compiti pratici.

• Quando richiedere un chunk, in modo che il buffer non si riempia o la

riproduzione non si interrompa;

• Quale qualità richiedere per un certo chunk, in modo che la qualità sia sem-

pre la migliore possibile, ma il chunk non sia troppo pesante da rallentare

troppo il buffering e raggiungere l’interruzione della riproduzione;

• Dove richiedere il chunk, se da un server che si trovi vicino al client o da

uno con una larghezza di banda maggiore, ecc.

7.2.2 Content Distribution Network (CDN)

Per distribuire un file in streaming a decine, migliaia o anche milioni di utenti,

non è possibile utilizzare un singolo server, seppure molto potente.

La soluzione migliore è quella del Content Distribution Network (CDN). L’idea

Figura 7.1: L’immagine rappresenta la gestione del traffico streaming da parte

del noto sito Netflix. 62

è quella di distribuire copie del file multimediale in vari server CDN disloca-

ti in varie zone geografiche. Questi possono essere dislocati secondo la logica

dell’enter deep, per cui vi sono molti server di potenza limitata per tutto il

mondo, il più vicino possibile ai client, oppure secondo la logica del bring home,

che vede attrezzare un numero limitato (e quindi un gruppo di server cache più

semplice e veloce da tenere sempre aggiornato) di potenti server, situati vicino

al data center principale, con il compito di smaltire il traffico.

Per fare in modo che il client scelga il server migliore da cui scaricare il file, è

possibile utilizzare un algoritmo che selezioni il server più vicino a livello geogra-

fico o di rete o che utilizzi dei complessi metodi di selezione. Alternativamente,

è possibile inserire nel file manifest gli indirizzi dei server CDN che contengono

il file desiderato e lasciare che il client esegua un’operazione di ping per stabilire

da quale server scaricare.

7.3 Voice Over IP (VoIP)

Le applicazioni Voice over IP sono delle applicazioni multimediali di tipo con-

versational. Per rendere l’applicazione soddisfacente, il ritardo nell’arrivo dei

pacchetti deve essere inferiore ai 150 ms, sopra i quali il ritardo sarà facilmente

percepibile e renderà l’esperienza della conversazione poco piacevole e fastidio-

sa. Notare che tale ritardo deve tenere in considerazione anche il ritardo subito

al livello apllicativo.

Una caratteristica delle applicazioni VoIP è quella di inviare pacchetti sola-

mente nei momenti in cui viene percepito un suono dalle periferiche di input.

Ogni 20 ms viene inviato un pacchetto che codifica il suono registrato a 8 kilo-

byte/sec, mentre nei momenti di silenzio non vengono inviati pacchetti.

Una volta generato il pacchetto, viene aggiunto un header e il tutto viene inviato

con il protocollo UDP o TCP.

La scelta del protocollo dipende dall’esperienza che si desidera dare all’u-

tente, dalla velocità di trasmissione degli hosts e dalla congestione della rete.

Mentre, con il protocollo UDP, si richia di incorrere in perdite di pacchetti o

arrivi disordinati, le precacuzioni perse da TCP richiano di generare un ritardo

troppo elevato.

In un’applicazione VoIP, il destinatario cerca di riprodurre il pacchetto ri-

cevuto esattamente q ms dopo che questi è stato generato. Se il pacchetto è

generato al tempo t, la riproduzione è prevista a t + q. Se il pacchetto viene

ricevuto dopo t + q, allora dovrà essere scartato, perché giunto troppo tardi.

Se q è sufficientemente grande, le perdite dei pacchetti saranno minori. Di con-

tro, un q sufficientemente piccolo rende l’applicazione più interattiva.

Il modo migliore per scegliere q è quello di adattarlo tra una trasmissione e l’al-

tra. In questo modo, in caso di un rallentamento nella consegna del pacchetto, q

si estenderà, diminuendo le perdite, mentre se nelle ultime trasmissioni il ritardo

63

è stato sufficientemente breve, q diventerà più piccolo, rendendo l’esperienza più

interattiva. Se d è il ritardo stimato dopo l’i-esimo pacchetto, r è il tempo in

i i

cui è stato ricevuto e t il tempo in cui è stato inviato, allora si può stimare:

i − −

d = d (1 α) + (r t )α

i i−1 i i

Dove α è una costante arbitraria, solitamente piccola (più α è piccolo, meno

sarà rilevante l’ultima misurazione).

Si può anche stimare la deviazione del ritardo, cioè la differenza tra l’ultimo

ritardo registrato e il prossimo. Se v è questa deviazione, allora:

i

− |r − − |β

v = v (1 β) + t d

i i−1 i i i

Dove anche β è una costante arbitraria.

d e v vengono calcolati per ogni pacchetto ricevuto, ma vengono usati sola-

i i

mente quando vengono ricevuti pacchetti con del suono.

Il primo pacchetto nei periodi di riproduzione dovrà essere riprodotto al tempo

t + d + kv , mentre gli altri verranno riprodotti periodicamente dopo il primo.

i i i

Per determinare quando iniziano pacchetti con del suono, è sufficiente che il

destinatario controlli i timestamp. Se la differenza di un timestamp con il suc-

cessivo è maggiore di 20 ms, allora deve cominciare a riprodurre. Ma bisogna

considerare anche l’evenienza in cui dei pacchetti vengono perduti. Pertanto è

necessario che i pacchetti contengao un sequence number. Se i pacchetti hanno

una differenza nel timestamp maggiore a 20 ms e i sequence number sono suc-

cessivi, allora il pacchetto contiene suoni e va riprodotto.

Se un pacchetto viene perduto, il destinatario dovrà chiedere al mittente di

reinviarlo, ma questa operazione genererebbe un ritardo troppo elevato. Per

questo si ricorre ad una tecnica chiamata Fast Error Correction (FEC).

Un esempio di FEC è quello di generare, per ogni gruppo di n pacchetti, un

⊕ · · · ⊕ −

pacchetto ridondante P = P P dove P i è l’i-esimo pacchetto del

r 1 n

gruppo (⊕ è l’operazione di XOR). Se al massimo un pacchetto viene perduto,

è possibile ricostruirlo a partire dagli altri e da quello ridondante.

Un altro esempio, che permette la perdita di più di un pacchetto, ma non di

due o più consecutivi, è quello di allegare al pacchetto i-esimo una versione in

bassa qualità del pacchetto (i 1)-esimo.

7.3.1 Skype

Skype è un’applicazione VoIP che funziona con una struttura P2P. I clients si

interconnettono tra loro in maniera diretta ed utilizzano il server di Skype so-

lamente per effettuare l’operazione di login.

Ogni gruppo di client è gestito da un super nodo, che esegue delle funzioni chiave

e si interconnette direttamente agli altri super nodi.

Un client deve contattare il suo super nodo, il cui indirizzo IP si trova in

cache, e vi si connette tramite un socket TCP.

64

A questo punto, il client si connette al server di login per l’autenticazione. Chie-

de al super nodo di trovare l’indirizzo IP del destinatario della chiamata. Il super

nodo, se non ha l’indirizzo nella lista di quelli da lui gestiti, inoltra la richiesta

agli altri super nodi, fino ad ottenere unaa risposta.

A questo punto, il super nodo rivela l’indirizzo IP al client che vuole effettuare

la chiamata e il destinatario viene contattato direttamente dal client stesso.

7.4 Conversational

7.4.1 Protocolli Conversational: Real Time Protocol (RTP)

RTP è un protocollo che specifica la struttura di pacchetti che contengono dati

audio e video. Si tratta di un’interfaccia a livello di trasporto che estende il

protocollo UDP. Notare che RTP non fornisce garanzie di alcun tipo, ma solo

un’estensione dell’header UDP. Inoltre, il protocollo RTP non è visibile ai router

intermedi, ma solamente a destinatario e mittente.

L’header del protocollo RTP è cosı̀ definito:

• Payload Type (7 bit):

Questo campo indica il tipo di codifica utilizzato nel campo dati.

• Sequence Number (16 bit):

Il sequence number utilizzato da RTP indica il numero di pacchetto.

Pertanto, ad ogni pacchetto, viene incrementato di 1.

• Timestamp (32 bit):

Indica l’istante, dall’inizio della comunicazione, in cui è stato generato il

primo byte del pacchetto.

• SSRC (32 bit):

Identifica la sorgente dello stream RTP all’interno della singola sessione.

Il protocollo RTP viene ampliato con il Real Time Control Protocol (RTCP),

che viene utilizzato periodicamente, all’interno delle sessioni RTP, per trasmet-

tere dati di feedback e controllo utili all’applicazione per, ad esempio, regolare

la trasmissione.

I pacchetti RTCP si distinguono dai pacchetti RTP perché utilizzano un nume-

ro di porta diverso. Inoltre, il traffico RTCP è molto ridotto all’interno di una

sessione RTP e dimimnuisce al diminuire dei patecipanti alla sessione.

RTCP può essere utilizzato anche per sincronizzare stream differenti in una

stessa sessione, in quanto il timestamp RTP non si riferisce al tempo assoluto,

ma solo a quello relativo al campionamento audio/video.

65

7.4.2 Protocolli Conversational: Session Initiation proto-

col (SIP)

SIP è un protocollo ad alto livello e user friendly utilizzato per il setup e il

management delle chiamate. I servizi che offre sono i seguenti:

• Inviare una richiesta di chiamata;

• Accordarsi sul tipo di codifica;

• Chiudere una chiamata;

• Mappare gli indirizzi IP a identificatori mnemonici (e.g. nomi, e-mail);

• Aggiungere stream multimediali alla chiamata utilizzando un protocollo a

piacimento;

• Cambiare codifica di una chiamata in corso;

• Aggiungere altri utenti alla chiamata;

• Trasferire o mettere in attesa una chiamata;

• Rifiutare una chiamata specificando un motivo da una lista;

• Associare informazioni sulla raggiungibilità nella mappatura (e.g. orari di

disponibilità, black list). 66

Appendice A

Sicurezza

La sicurezza all’interno di una comunicazione in una rete è una macrotipologia

di servizi, che si suddivide a sua volta in altre sottocategorie:

• Confidenzialità:

Gli unici due utenti a poter accedere al contenuto della comunicazione

sono mittente e destinatario.

• Autenticazione:

Mittente e destinatario hanno l’un l’altro la certezza dell’identità.

• Integrità del Messaggio:

Il messaggio non subisce alterazioni. Se le subisce, mittente e destinatario

ne sono a conoscenza.

La necessità di integrare protocolli di sicurezza nelle comunicazioni non è

solo dovuta a possibili errori della rete. In effetti, oltre agli errori umani, è

necessario prendere in considerazione anche la presenza di utenti malevoli. Un

utente malevolo potrebbe eseguire molte azioni su una comunicazione:

• Intercettazione dei messaggi o eavesdrop. L’utente malevolo può accedere

al contenuto della comunicazione.

• Inserire attivamente messaggi all’interno della comunicazione o modificar-

li.

• Impersonificare uno degli utenti facenti parte della comunicazione.

• Rimuovere attivamente uno degli utenti per prenderne il posto. Procedura

nota come hijacking.

• Denial of Service, procedura che permette all’utente malevolo di rendere

non disponibile un servizio ad altri utenti.

67

A.1 Crittografia

la crittografia è un metodo utilizzato nelle comunicazioni per codificare un

messaggio, in modo tale che solo gli utenti desiderati possano leggerne il vero

contenuto. M

Si definiscono un testo in chiaro, o plaintext, m, appartenente al dominio

M → M

di tutti i messaggi possibili, una chiave di cifratura K : e una chiave

A

M → M

di decifratura K : tali che m = K (K (m)).

B B A

Esistono due grandi tipologie di schemi di cifratura:

• Cifratura a Chiave Simmetrica:

In questo tipo di schema K = K . I due utenti sono gli unici a conoscere

A B

la chiave di cifratura e, quindi, gli unici a poter decifrare il messaggio. Di

questa tipologia fanno parte il cifrario di cesare, la cifratura monoalfatica,

il DES, il 3DES e l’AES.

• Cifratura a Chiave Asimmetrica:

In questo tipo di cifratura K (K (m)) = K (K (m)) = m. K è una

A B B A A

chiave nota solo al destinatario e si dice privata, mentre K si dice pubblica

B

ed è una chiave disponibile a tutti. Inviare un messaggio K (m) impli-

B

ca che il messaggio m sarà decifrabile solo dal possessore di K , mentre

A

inviare un messaggio cifrato K (m) implica la certezza sull’identità del

A

mittente. Di questa tipologia fa parte la cifratura RSA.

A.1.1 Cifratura a Chiave Simmetrica: Data Encryption

Standard (DES)

Lo schema di cifratura DES è un particolare schema di cifratura a chiave

simmetrica che prevede una chiave di 56 bit e un plaintext di 64 bit.

Il plaintext in input viene suddiviso in due parti, sinistra e destra, e vengono

selezionati 48 bit dalla chiave. La parte destra diventa la nuova parte sinistra

del messaggio. La parte destra e la parte sinistra vengono poi dati in input ad

una funzione di cifratura insieme ai 48 bit della chiave e il risultato diventa la

parte destra del nuovo messaggio.

Il processo viene iterato per 16 volte utilizzando la stessa funzione, ma ogni

volta con 48 bit differenti della chiave.

Esiste anche una variante del DES, detta 3DES, che consiste nell’applicare

la procedura di cifratura con una chiave K , poi decifrare il messaggio con una

1

chiave K e infine cifrarlo nuovamente con K .

2 1

Tale procedura è stata introdotta dopo la scoperta di un metodo che permette

di decifrare i messaggi cifrati con la procedura DES in un tempo relativamente

molto breve. 68

A.1.2 Cifratura a Chiave Simmetrica: Advanced Encryp-

tion Standard (AES)

Lo schema AES è uno schema che permette di cifrare blocchi di 128 bit con

chiavi di 128, 192 o 256 bit.

Il funzionamento di AES è molto semplice. Il messaggio viene suddiviso in

blocchi di 128 bit e viene definito un blocco speciale, detto Initialization Vector

(IV). Il primo blocco viene messo in XOR con l’IV e il risultato viene cifrato

con la chiave scelta. Il risultato è il blocco cifrato. Tale blocco viene emsso in

XOR con il blocco di plaintext successivo e il risultato viene cifrato ancora con

la stessa chiave. Il procedimento si ripete fino a quando non si cifra l’ultimo

blocco del messaggio.

A.1.3 Cifratura a Chiave Asimmetrica: Rivest, Shamir,

Adelson Algorithm (RSA)

L’algoritmo di cifratura RSA è il più diffuso algoritmo di cifratura a chiave

pubblica.

Questo algoritmo si basa sulle seguenti assunzioni dell’aritmetica modulare:

[(a mod n) + (b mod n)] mod n = (a + b) mod n

− −

[(a mod n) (b mod n)] mod n = (a b) mod n

[(a mod n)(b mod n)] mod n = (ab) mod n

Dalle quali si dimostra facilmente che

d d

(a mod n) mod n = (a ) mod n

Poiché un messaggio qualsiasi è sempre esprimibile come una sequenza di

bit e una sequenza di bit è sempre esprimibile come un numero, allora cifrare

un messaggio equivale a cifrare un numero.

L’algoritmo si divide in due parti. La prima, eseguita una singola volta,

− +

Serve a generare la chiave privata K e la chiave pubblica K , mentre la se-

A A

conda viene eseguita ogni volta che si volgia cifrare o decifrare un messaggio.

Il comportamento della seconda parte è lo stesso per cifratura e decifratura e il

risultato è differente a seconda che venga data in input la chiave pubblica o la

chiave privata.

Poiché la complessità computazioale dell’algoritmo RSA è esattamente la

complessità computazionale dell’elevamento a potenza più quello dell’operazione

di modulo, ne risulta che, specialmente per numeri molto grandi, la complessità

computazionale dell’algoritmo è quasi proibitiva. Ancor più proibitiva sarebbe

se l’algoritmo dovesse essere eseguito ad ogni messaggio inviato. Per tale mo-

tivo, solitamente, all’inizio della sessione uno dei due utenti genera una chiave

temporanea K , che invia all’altro utente dopo averla cifrata con l’algoritmo

S 69

Algoritmo A.1.1: Algoritmo RSA per la generazione delle chiavi:

qui è riportata la prima parte dell’algoritmo RSA, vale a dire quella che

genera la chiave pubblica e la chiave privata

Input: Due numeri primi p, q, possibilmente molto grandi (e.g. 1024 bit

ciascuno).

Output: Due coppie di numeri (n, d), (n, e), rispettivamente chiave

privata e pubblica.

n = pq;

− −

z = (p 1)(q 1);

Sia e un numero che non ha fattori primi comuni con z;

Sia d tale che ed mod z = 1;

Result: (n, d), (n, e)

Algoritmo A.1.2: Algoritmo RSA per cifratura e decifratura: qui

è riportata la seconda parte dell’algoritmo, usata per cifratura e decifra-

tura. Le operazioni effettuate dall’algoritmo saranno le medesime sia per

la cifratura che la decifratura, poiché il risultato dipende dall’input (e.g.

un messaggio cifrato con chiave pubblica dato in input insieme alla chiave

privata darà come risultato il plaintext).

Input: Un messaggio m interpretato come numero e una chiave (n, k)

tali che m < n.

Output: Un messaggio c cifrato (o decifrato).

k

c = (m ) mod n;

Result: c 70


PAGINE

72

PESO

4.01 MB

PUBBLICATO

+1 anno fa


DESCRIZIONE APPUNTO

Appunti per l'esame di Reti di Elaboratori del corso di laurea in Informatica all'università "La Sapienza" di Roma. Gli appunti sono derivanti da sunti delle lezioni della professoressa Chiara Petrioli e complementati con le informazioni contenute nelle slide della docente, oltre che con le informazioni acquisite dallo studio del libro di testo consigliato: "Computer Networking, a Top Down Approach" di James Kurose e Keith Ross. Gli appunti sono validi per lo studio dell'esame anche se sostenuto con la docente Gaia Maselli del secondo canale.


DETTAGLI
Corso di laurea: Corso di laurea in informatica
SSD:
A.A.: 2017-2018

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher filthynobleman di informazioni apprese con la frequenza delle lezioni di Reti di elaboratori e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università La Sapienza - Uniroma1 o del prof Petrioli Chiara.

Acquista con carta o conto PayPal

Scarica il file tutte le volte che vuoi

Paga con un conto PayPal per usufruire della garanzia Soddisfatto o rimborsato

Recensioni
Ti è piaciuto questo appunto? Valutalo!

Altri appunti di Corso di laurea in informatica

Fondamenti di informatica 1 - Esercizi
Esercitazione
Informatica di base - nozioni generali
Appunto
Laboratorio di basi di dati I - la progettazione concettuale
Appunto
Informatica di base - Appunti
Appunto