Reti
Reti
INTERNET
Concetti base
La rete è una infrastruttura che comprende componenti hardware software e telematica
per far sì che 2 o più nodi (host) possano comunicare tra loro per scopi diversi.
reti di calcolatori:
-gli utenti vedono macchine effettive
-il sistema non ha come obiettivo far apparire ed agire le macchine in modo
coerente
sistema distribuito:
-insieme dei computer che appare ai propri utenti come in singolo sistema
coerente.
-livello software sopra il sistema operativo: middleware
-esempio: intranet
LE
RETI
Una rete è un’interconnessione di dispositivi in grado di scambiarsi informazioni, quali
sistemi terminali (end system), router, switch e modem. I sistemi terminali possono essere
di due tipi: host o server.
Un host o end-system è una macchina in genere di proprietà degli utenti e dedicata ad
eseguire applicazioni, quale computer desktop, un portatile, un cellulare o un tablet.
Vengono condivise
I SERVER
I server vengono gestiti dagli amministratori di rate.
Rientrano tra i server anche le periferiche di rete, come per esempio, le stampanti che
vengono condivise tra vari utenti.
I ROUTER
I router sono dispositivi che collegano una rete ad altre reti, mentre gli switch
(commutatori) collegano tra loro più sistemi terminali a livello locale.
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
CAPITOLO 1
Reti a commutazione di circuito o circuit-switched network
In questa rete, tra due dispositivi è sempre disponibile un collegamento dedicato,
chiamato circuito; lo switch che collega i due dispositivi può solo attivarlo o disattivarlo.
Una rete a commutazione di circuito risulta efficiente solo se utilizzata al massimo delle
sue capacità, mentre nella maggior parte del tempo è inefficiente perché sottoutilizzata.
Reti a commutazione di pacchetto o packet-switched
network o store- and-forward
In questa rete, la comunicazione fra i due lati viene effettuata trasmettendo blocchi di dati
chiamati pacchetti. Invece di avere una comunicazione continua, i due computer
comunicano scambiandosi pacchetti di dati. Gli switch, in questo caso, sono in grado di
memorizzare i pacchetti, oltre che inoltrarli. Facendo un esempio in una rete a
commutazione di pacchetto che mettesse in collegamento 4 computer con un router da un
lato e dall’altro, la rete quando due computer comunicano tra di loro non sarebbe soggetta
a nessun ritardo poiché i pacchetti sarebbero inviati non appena disponibili. Ma se tutti e 4
i computer dovessero comunicare tra di loro, i pacchetti potrebbero avere qualche ritardo,
poiché dovranno essere memorizzati per poi essere inviati ma la coda del router è già
piena.
Tecnologie di
trasmissione
Broadcast
Un solo canale di comunicazione condiviso
I pacchetti inviati da una sorgente sono ricevuti da tutte le macchine
Danno la possibilità di indirizzare un pacchetto a tutti (broadcast)
Danno la possibilità di indirizzare un a pacchetto a un sottoinsieme di destinatari
(Multicast)
Il problema chiave è la scelta dell’entità che dovrà acquisire il diritto di utilizzo del canale in
caso di competizione
Point to point
Connettono coppie di computer
I pacchetti possono dover visitare una o più nodi per arrivare a destinazione
Protocollo OSI e TCP/IP
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
HaaS (Hardware as a Service) – con questo servizio l’utente invia dati a un computer
che vengono elaborati da computer messi a disposizione e restituiti all’utente
iniziale.
PaaS (Platform as a Service) – viene eseguita in remoto una piattaforma software
che può essere costituita da diversi servizi.
IaaS (Infrastructure as a Service) – Oltre alle risorse virtuali in remoto, vengono
messe a disposizione anche risorse hardware. La particolarità dell’IaaS è che le
risorse vengono instanziate su richiesta dell’utente.
Casi d’uso
Il sistema del cloud computing prevede tre fattori distinti:
Cloud provider – offre servizi
Cliente amministratore – sceglie e configura i servizi offerti dal fornitore
Cliente finale – utilizza i servizi opportunatamente configurati dal cliente
amministratore.
Private cloud – public cloud
Il private cloud: è una infrastruttura di cloud computing dove le risorse hardware sono
interamente dedicate a una singola organizzazione o utente, un cloud privato può essere
acquistato come servizio da un fornitore terzo.
Il public cloud: è un fornitore di servizi secondo un modello pay per use (google)
Hybrid: utilizza un cloud privato che delega alcune funzioni a un’infrastruttura di cloud
pubblico.
Internet
Si è detto che un internet (i minuscola) è costituita da due o più reti interconnesse.
L’internet più famosa è chiamata Internet (con I maiuscola) ed è composta da migliaia di
reti interconnesse. La figura (pag11 pdf) rappresenta Internet come un insieme di dorsali
(backbone). Al livello più elevato le dorsali sono reti particolarmente estese di proprietà di
qualche compagnia telefonica. Queste reti dorsali sono interconnesse tramite sistemi di
commutazione notevolmente complessi, chiamati peering point. Le reti private sono reti ai
confini di Internet che utilizzando i servizi a pagamento forniti dalle reti dei provider.
Accesso a internet
Tramite rete telefonica
Oggi la maggior parte delle abitazioni e delle piccole aziende è dotata di servizi telefonici
quindi è collegata a una rete telefonica. Poiché molte reti telefoniche sono collegate a
internet, una comoda decisione per queste piccole realtà è di modificare la linea telefonica
da casa alla centra telefonica con una WAN punto-punto. Questo può avvenire in due
modi.
1. Servizio dial-up. Questa soluzione consiste nell’inserire sulla linea telefonica un
modem che converte i dati digitali (del computer) in analogici (per trasmetterli sulla
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Ritardi o delay
Tutti noi ci aspettiamo risposte istantanee da una rete, ma un pacchetto che viaggia dalla
sorgente alla destinazione accumula dei ritardi. La latenza, definisce quanto tempo serve
affiche un intero messaggio arrivi completamente a destinazione dal momento in cui il
primo bit parte. I ritardi si possono dividere in quattro tipi. Il ritardo totale è dato dalla
seguente formula.
Latenza = ritardo di propagazione + ritardo di trasmissione + ritardo di accodamento +
ritardo di elaborazione.
Ritardo di trasmissione
Quando un dispositivo sorgente invia un pacchetto, esso deve immettere sulla linea di
trasmissione i bit del pacchetto uno per uno. Se il primo bit del pacchetto viene trasmesso
al tempo t1 e l’ultimo bit viene messo in linea nel tempo t2, il ritardo di trasmissione del
pacchetto è (t1-t2). Chiaramente il ritardo di trasmissione è maggiore per un pacchetto più
lungo e minore se il mittente riesce a trasmettere più velocemente. In altre parole, il
ritardo di trasmissione è.
Ritardotr= (lunghezza del pacchetto)/(rate).
Ritardo di propagazione
Il ritardo di propagazione è il tempo che serve ad un bit per viaggiare dal punto A al punto
B nel mezzo di trasmissione. Il ritardo di propagazione dipende dalla velocità di
propagazione del mezzo. Questo ritardo dipende anche dalla distanza tra sorgente e
destinazione.
Ritardopr= (Distanza)/(Velocità di propagazione)
Ritardo di elaborazione
Il ritardo di elaborazione è il tempo che serve a un router o a un sistema terminale per
ricevere un pacchetto dalla sua porta di input, rimuovere l’intestazione del pacchetto,
eseguire una procedura di rilevamento errori e consegnare il pacchetto alla porta di
output.
Ritardo di accordamento
Il ritardo di accodamento è tipico dei router. Un router ha una coda di input collegata ad
ognuna delle sue porte di ingresso per memorizzare i pacchetti in attesa di elaborazione; il
router ha anche una coda di output collegata ad ognuna delle sue porte di uscita per
memorizzare i pacchetti in attesa di trasmissione. Il ritardo di accodamento per un
pacchetto si misura come il tempo in cui il pacchetto attende nella coda di input e in quella
di output di un router.
Prodotto rate-ritardo
Il rate e il ritardo sono due metriche delle prestazioni di un link. Tuttavia, ciò che è
realmente importante nella comunicazione dei dati è il loro prodotto. Il prodotto del rate e
del ritardo è il numero di bit che il link può contenere. Questa misura è importante se
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
dobbiamo inviare dei dati a raffica e attendiamo il riscontro di ogni gruppo prima di inviare
quello successivo. Per usare le massime potenzialità del link, bisogna che le dimensioni del
siano due volte il prodotto del rate e del ritardo, poiché dobbiamo riempire il canale full-
duplex (due direzioni) quindi la formula sarà (2*rate*ritardo).
Perdita di pacchetti
Un’altra questione che influisce gravemente sulle prestazioni è il numero di pacchetti persi
durante la trasmissione. Quando un router riceve un pacchetto mentre ne sta elaborando
un altro, quest’ultimo deve essere registrato nella nel buffer di input in attesa del suo
turno. Un router tuttavia ha un buffer di input di dimensioni limitate. Se un pacchetto
arriva quando il buffer è pieno esso viene saltato. Quindi questo pacchetto deve essere
rinviato. Il che a sua volta può creare un’eccedenza di dati e causare la perdita dia altri
pacchetti.
Organizzazione dei protocolli in livelli
Un protocollo definisce le regole che il mittente e il destinatario, cosi come tutti i sistemi
intermedi coinvolti, devono rispettare per essere in grado di comunicare. A volte è
necessario solo un livello di comunicazione altre volte bisogna suddividere i compiti in più
livelli detti layer.
Definizione di Protocollo
In informatica un protocollo di comunicazione è un insieme di regole formalmente
descritte che definiscono le modalità di comunicazione tra due o più entità. Queste regole
sono definite mediante specifici protocolli, dalle tipologie più varie e ciascuno con precisi
compiti/finalità, a seconda delle entità interessate e del mezzo di comunicazione. Se le due
entità sono remote, si parla di protocollo di rete.
I principi della strutturazione in livelli
Quando è richiesta una comunicazione bidirezionale, è necessario rendere ciascun livello
capace di effettuare i due compiti opposti. Il secondo principio da seguire riguarda gli
oggetti in I/O sotto ciascun livello di entrambi i lati: devono essere identici.
i collegamenti logici
se si rispettano i primi due principi precedenti è possibile immaginare un collegamento
logico fra i livelli. Questo collegamento virtuale è come se consentisse una comunicazione
diretta fra i pari livelli delle due parti.
Lo stack protocollare TCP/IP
L’architettura TCP/IP, ovvero la strutturazione in livelli dei protocolli utilizzati in Internet. Si
tratta di una gerarchia di protocolli costituita da moduli interagenti, ciascuno dei quali
fornisce funzionalità specifiche. Il termine gerarchia significa che ciascun protocollo di
livello superiore è supportato dai servizi forniti dai protocolli di livello inferiore. Tale
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
organizzazione dei protocolli viene chiamata pila o stack protocollare TCP/IP. La pila
TCP/IP è composta da 5 livelli.
Livello applicazione
La comunicazione al livello applicazione avviene tra due processi (due programmi eseguiti
a questo livello), che si mandano richieste e ricevono risposte tra loro. Il protocollo http
(hypertext transfer protocol) viene utilizzato per accedere al WWW.
Livello di trasporto
La connessione logica a livello di trasporto è anch’essa end-to-end. Il livello di trasporto
nell’host sorgente riceve il messaggio dal livello applicazione, lo incapsula in un pacchetto
di livello di trasporto (segmento) e lo invia, tramite la connessione logica(virtuale). I
protocolli di trasporto in Internet sono stati progettati per compiti specifici. Il principale
TCP (transmission control protocol) è un protocollo connection-oriented che stabilisce per
prima cosa una connessione logica fra i livelli di trasporto nei due host prima di trasferire
dati. Crea un canale logico fra i due host per trasferire un flusso di dati; fornisce
funzionalità di controllo del flusso, di controllo dell’errore e di controllo della congestione.
L’altro protocollo frequentemente utilizzato è UDP un semplice protocollo che non
prevede la correzione degli errori, del flusso o della congestione.
Livello di rete
Il compito del livello di rete(network) è quello di far arrivare i pacchetti dall’host sorgente
all’host destinatario. La comunicazione a questo livello è host-to-host, ma dato che vi
possono essere dei router nel tragitto fra la sorgente e la destinazione, questi hanno il
compito di scegliere il miglior percorso per ciascun pacchetto. Quindi instrada e inoltra i
pacchetti attraverso i possibili percorsi. Il principale protocollo è l’IP (Internet protocol),
che definisce il formato del pacchetto chiamato datagramma. Il protocollo IP è
connectionless e non fornisce servizi di controllo del flusso, della congestione e dell’errore.
Il livello rete comprende anche protocolli di instradamento unicast e multicast.
Livello di collegamento
Quando un router ha deciso quale strada percorrere per un pacchetto il livello di
collegamento (data-link) si occupa di trasferire il pacchetto attraverso tale collegamento. Il
link potrebbe essere una LAN cablata con uno switch di collegamento. In ogni caso il livello
di collegamento si occupa del trasferimento del pacchetto attraverso il collegamento.
Livello fisico
Il livello fisico si occupa di trasferire i singoli bit di un frame attraverso il link. La
comunicazione fra due dispositivi al livello fisico è ancora una comunicazione logica, poiché
vi è un ulteriore livello nascosto: il mezzo trasmissivi al di sotto del livello fisico. (il livello
fisico non è trattato sul libro)
Incapsulamento e decapsulamento
L’incapsulamento/decapsulamento è un concetto molto importante relativo alla
strutturazione in livelli di una rete.
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
L’indirizzamento
Questo modello prevede una comunicazione logica fra coppie di livelli. Qualsiasi
comunicazione che coinvolge due parti richiede due indirizzi: l’indirizzo sorgente e
l’indirizzo destinazione. Sebbene possa sembrare che siano necessarie cinque paia di
indirizzi, normalmente è sufficiente utilizzarne solo quattro poiché il livello fisico non
richiede indirizzi. A livello di trasporto gli indirizzi vengono chiamati numeri di porta, essi
indicano i programmi sorgente e destinazione del livello di applicazione. I numero di porta
sono indirizzi locali che consentono di distinguere i vari programmi in esecuzione
concorrente. A livello di rete gli indirizzi sono globali. Gli indirizzi del livello di
collegamento, a volte chiamati indirizzi MAC, sono indirizzi definiti localmente, ognuno dei
quali identifica un aspecifica interfaccia di rete su host o router.
Multiplexing e demultiplexing
Dato che lo stack TCP/IP prevede più protocolli nello stesso livello, è necessario eseguire il
multiplexing alla sorgente e il demultiplexing alla destinazione. Multiplexing in questo caso
significa che un protocollo di un livello può incapsulare i pacchetti ottenuti da più protocolli
del livello immediatamente superiore; demultiplexing significa che un protocollo può
decapsulare e consegnare i pacchetti a più protocolli del livello immediatamente superiore.
Per poter effettuare queste operazioni un protocollo deve avere un campo nel proprio
header per identificare a quale protocollo appartengano i pacchetti incapsulati.
Il modello OSI
L’ISO (internationa organization for standardization), è un’organizzazione di cui fanno
parte oltre tre quarti delle nazioni. Il modello OSI (Open Systems Intreconnection) è uno
standard ISO. Un sistema aperto è un insieme di protocolli che consente a due sistemi
qualsiasi di comunicare indipendentemente dallo loro architettura sottostante. Lo scopo
dell’OSI è facilitare la comunicazione fra sistemi di comunicazione differenti senza dovere
imporre vincoli alla logica dell’hardware e del software utilizzati. Il modello OSI non è un
protocollo, ma un modello per comprendere e progettare architetture di rete. Esso
consente la comunicazione fra qualsiasi tipo di dispositivo. È diviso in sette livelli.
L’insuccesso del modello OSI
Il modello OSI “si diceva” che avrebbe dovuto soppiantare il TCP/IP cosi non fu per varie
ragioni tra le quali:
1. L’OSI venne implementato quando il TCP/IP era già ampiamente diffuso
2. Alcuni livelli nel modello OSI, come presentazione e sessione, non sono mai
stati completamente specificati, il software corrispondente non è dunque mai
stato completamente sviluppato.
3. Infine, anche quando alcune organizzazioni implementarono l’OSI in qualche
applicazione, non riuscirono a dimostrare delle prestazioni tali da convincere
le autorità di internet a sostituire il TCP/IP.
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Nota
Datagram (datagramma o pacchetto): Unità elementare delle informazioni
trasmesse su Internet contenente i dati necessari per essere correttamente
trasportata dal mittente al destinatario senza che sia necessario avere
informazioni su scambi di informazioni precedenti tra le stesse entità. Il termine è
stato sostituito, in generale, da pacchetto.
I datagram, o i pacchetti, sono le unità fondamentali che vengono gestite
dal protocollo IP.
Next-hop: prossimo router o dispositivo nel viaggio di un pacchetto.
Payload: carico utile viene usata per indicare la parte di un flusso di dati che
rappresenta il contenuto informativo;
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
secondo pc. I due programmi devono scambiarsi messaggi sfruttando internet. Con il
passare del tempo, sono stati sviluppati due approcci diversi: il paradigma client/server e
quello P2P.
Client/Server: il paradigma tradizionale
L’approccio tradizionale è chiamato client/server, ed è stato il paradigma più utilizzato fino
a pochi anni fa. Con questo paradigma il fornitore di servizi è un programma applicativo
chiamato processo server sempre in esecuzione in attesa che un processo client richieda
un servizio. In questo paradigma non possono essere scambiati i ruoli client/server. Un
problema di questo paradigma è che il carico di comunicazione risulta concentrato sul
server.
Peer-to-peer: il nuovo paradigma
Un nuovo approccio, chiamato paradigma peer-to-peer è emerso come risposta alla
necessità di alcune nuove applicazioni. In questo paradigma non è necessario che un
processo server sia permanentemente in esecuzione in attesa che si connetta il processo
client. Questa responsabilità viene condivisa tra i peer. La connessione P2P può essere
conveniente quando dei computer connessi a internet hanno qualcosa da condividere
l’uno con l’altro. Esistono alcune difficolta nella P2P come la sicurezza e l’applicabilità.
Paradigma misto
Un’applicazione può sfruttare un mix dei due paradigmi combinando i vantaggi di ciascuno.
Ad esempio, una comunicazione client/server dal basso carico di comunicazione potrebbe
essere utilizzata per identificare l’indirizzo del peer disposto a offrire un certo servizio. Una
volta identificato l’indirizzo, il servizio richiesto potrà essere ottenuto dal peer utilizzando il
paradigma P2P.
Paradigma client/server
Nel paradigma client/server la comunicazione a livello applicazione avviene tra due
programmi applicativi in esecuzione chiamati processi: un client e un server. È necessario
che il processo del server inizi prima del processo client.
API: Application Programming Interface
Un API è un insieme di istruzioni quali: matematiche, manipolazione delle stringhe,
gestione I/O, aprire le connessioni ai primi quattro livello dello stack, inviare/ricevere dati e
chiudere la connessione. Nella programmazione un’interfaccia non è altro che un insieme
di istruzioni usato per l’iterazione tra due entità. In questo caso una delle entità è il
processo a livello applicazione e l’altra è il OS. Il produttore di un computer implementa i
primi 4 livelli nel OS e fornisce le relative API.
Socket
Sebbene una socket possa apparire come un terminale o un file, non è un’entità fisica ma
un’astrazione. Si tratta di una struttura dati creata e utilizzata dal programma applicativo,
si può dire che per quanto riguarda il livello applicazione, comunicare fra un processo
client e uno server significa comunicare tra due socket. Il client considera la socket come
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
l’entità che riceve le richieste e fornisce le risposte; il server vede la socket come l’entità
che gli sottopone le richieste e alla quale inviare le risposte.
Socket addres
L’interazione fra client e server è una comunicazione bidirezionale. Nella comunicazione
bidirezionale si rende necessaria una coppia di indirizzi: locale(mittente) e
remoto(destinatario). L’indirizzo locale in una direzione è l’indirizzo remoto nell’altra
direzione e viceversa. È necessaria una coppia di socket addres per la
comunicazione(client/server). Un socket addres deve identificare l’host sul quale il
processo client o server è in esecuzione. Dato che una socket specifica gli end-
point(estremi), è possibile affermare che una socket è identificata da una coppia di socket
addres, uno locale e uno remoto.
Individuare i socket addres
Lato server: il server ha bisogno di un socket addres locale e uno remoto per comunicare.
Socket address locale: il S.A.L viene fornito dal OS. L’OS conosce l’indirizzo IP del computer
sul quale il processo server è in esecuzione. Il numero di porta di un processo server,
invece deve essere assegnato.
Socket address remoto: il socket address remoto di un server è il socket address del client
che si collega. Poiché il server può servire numerosi client, non può conoscere in anticipo
il loro indirizzo, ma lo può identificare quando un client cerca di connettersi.
Lato client: Per comunicare, anche il client ha bisogno di due socket address.
Locale: esso viene fornito dall’OS che conosce l’indirizzo IP del computer sul quale è in
esecuzione il client. Il numero di porta invece è un intero di 16 bit che viene assegnato
temporaneamente al client ogni volta che questo desidera iniziare una comunicazione.
Questo numero di porta viene scelto dai gestori di internet e vengono chiamati numeri di
porta effimeri (o temporanei).
Remoto: un processo client, quando viene avviato, deve conoscere il socket address del
server al quale vuole connettersi e si hanno due possibili situazioni.
Il processo client conosce sia il numero di porta che l’indirizzo IP del computer
sul quale è in esecuzione il server.
In altri casi si conosce il nome del server(URL) ma non il suo indirizzo IP. Il
processo client deve convertire questo identificatore nel corrispondente socket
address del server. Esso può essere ottenuto sfruttando il DNS (Domani Name
System).
Utilizzo dei servizi di livello trasporto
Una coppia di processi fornisce servizi agli utenti di internet, siano queste persone o
applicazioni. La coppia di processi deve utilizzare i servizi offerti dal livello trasporto per la
comunicazione. Poiché non vi è una comunicazione fisica a livello applicazione. Nel livello
trasporto della pila di protocolli TCP/IP sono previsti due protocolli principali:
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
UDP
L’user datagram protocol fornisce un servizio di trasferimento di datagrammi utente
inaffidabile privo di connessione(connectionless). L’assenza di connessione significa che
non viene stabilita un’associazione logica fra i due lati della comunicazione che si
scambiano i messaggi. Ogni messaggio è un’entità indipendente incapsulata in un
pacchetto chiamato datagramma utente. Per UDP non esiste alcuna relazione fra
datagrammi utente consecutivi provenienti dalla medesima sorgente e diretti allo stesso
destinatario. UDP non chiede al mittente di rinviare i dati corrotti. Nonostante le
limitazioni, UDP presenta dei vantaggi per alcune applicazioni, tra cui il fatto che sia un
protocollo “orientato al messaggio”, ovvero indichi in modo molto chiaro i confini dei
messaggi trasmessi invece di creare un unico flusso di comunicazione.
TCP
Il protocollo TCP (Transmission Control Protocol) fornisce un servizio basato su un flusso di
byte(byte-stream) affidabile e orientato alla connessione (connection oriented). Prevede
che le due entità in comunicazione stabiliscano per prima cosa una connessione logica
scambiandosi alcuni pacchetti specifici per l’apertura della connessione. In questa fase,
chiamata handshaking (stretta di mano) le due entità stabiliscono alcuni parametri fra cui
la dimensione dei pacchetti dati che potranno essere scambiati, la dimensione dei buffer
necessari per la memorizzazione temporanea i dati durante la comunicazione ecc…
completata questa fase è possibile inviare messaggi tra le due parti. I dati sono suddivisi in
segmenti, il TCP può richiedere la ritrasmissione dei dati perduti. Un inconveniente del TCP
è il fatto di non essere orientata al messaggio, è quindi compito dell’applicazione quello di
delimitare ed individuare i messaggi.
Applicazioni client/server standard
Le applicazioni c/s standard sono sei, si inizia con http e il World Wide Web poiché sono
quelle più utilizzate da quasi tutti gli utenti di internet. Poi le applicazioni di trasferimento
di file e di posta elettronica che contribuiscono per una parte importante del traffico totale
su internet. Poi il problema dell’accesso da remoto ad un host (TEL-NET e SSH). E infine il
DNS anche il DHCP e SNMP.
World Wide Web e
http WWW
L’idea alla base del Web venne proposta per la prima volta da Tim Berners-Lee nel 1989 al
CERN per consentire ai vari ricercatori sparsi nel mondo di accedere in modo facile alle
pubblicazioni scientifiche. Oggi il Web è un’enorme collezione di informazioni nella quale i
documenti, chiamati pagine Web. L’enorme diffusione e la crescita esplosiva del Web sono
in stretta relazione con due termini distribuiti e collegati. La distribuzione favorisce la
crescita del Web: qualsiasi server Web nel mondo può aggiungere una nuova pagina alla
collezione e renderla disponibile a tutti gli utenti di internet. Il collegamento delle pagine
web è ottenuto tramite una tecnica chiamata hypertext(ipertesto). Il concetto alla base
dell’ipertesto è il collegamento (detto link). Oggi l’espressione hypertext, coniata per
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Documenti Web
I documenti Web possono essere raggruppati in tre categorie: statici, dinamici e attivi.
Documenti statici. I documenti statici sono documenti dal contenuto predeterminato che
vengono memorizzati in un server. Il client può solamente ottenere una copia di tali
documenti.
Documenti dinamici. Un documento dinamico viene creato dal server Web alla ricezione di
una richiesta di un browser. All’arrivo della richiesta, il server esegue un programma
applicativo o uno script che crea il documento dinamico. Dato che viene creato un nuovo
documento per ogni richiesta, il suo contenuto può variare da una richiesta all’altra.
Documenti attivi. In numerose applicazioni è utile poter eseguire programmi o script sul
computer client: si tratta dei cosiddetti documenti attivi. Si supponga per esempio che si
voglia eseguire un programma che produce delle animazioni. Tale programma deve
necessariamente essere eseguito sul sito client dove ha luogo l’interazione o l’animazione.
http (hypertext Transfer protocol)
http è un protocollo che definisce come devono essere scritti i programmi c/s per
accedere alle pagine web. Un client http invia una richiesta, un server http restituisce una
risposta. Il server utilizza la porta 80, il client una effimera. http sfrutta i servizi del TCP.
Connessioni persistenti e non persistenti
Come visto in precedenza la natura di ipertesto delle pagine web può richiedere una serie
di richieste e risposte. Se le pagine web, gli oggetti ai quali si intende accedere, sono
localizzate su server differenti, non vi è altra soluzione che creare una connessione TCP per
ogni server e ottenere ciascun oggetto richiesto. Tuttavia, se più oggetti sono localizzai
sullo stesso server, esistono due possibilità: recuperare ciascun oggetto usando una nuova
connessione TCP o recuperare tutti gli oggetti con un’unica connessione. Il primo metodo
viene indicato come connessioni non persistenti e il secondo connessioni persistenti.
Connessioni non persistenti
Viene stabilita una nuova connessione TCP per ciascuna coppia richiesta/risposta. Le fasi di
questa modalità sono le seguenti:
1. Il client apre una connessione TCP e invia una richiesta;
2. Il server invia la risposta e chiude la connessione;
3. Il client legge i dati fino a incontrare il simbolo di fine file, quindi chiude
la connessione.
Connessioni persistenti
Il server dopo aver inviato una prima risposta, lascia la connessione aperta in attesa di
ulteriore richieste il server può chiudere la connessioni su richiesta del client o allo scadere
di un timeout.
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Messaggio di risposta esso consiste in una riga di stato, alcune intestazioni, una riga
vuota e a volte un corpo. La prima riga di un messaggio di risposta è chiamata riga di
stato. In questa riga vi sono tre campi separati da spazi e terminati da ritorno
carrello a fine linea.
Richieste condizionali
Un client può aggiungere una condizione alla richiesta. In questo caso il server invia la
pagina richiesta solo se la condizione è soddisfatta, altrimenti informa il client del
fallimento(data/ora).
Cookie
Il web oggi deve avere un meccanismo di memorizzazione dello stato o conservazione del
contesto, a questo scopo sono stati sviluppati i cookie.
Creazione e memorizzazione dei cookie: i dettagli relativi alla creazione e alla
memorizzazione dei cookie variano molto a seconda dell’implementazione, ma il
meccanismo di massima è sempre lo stesso:
Il server quando riceve una richiesta memorizza le informazioni in una stringa o
in un file.
Il server include il cookie nella risposta che invia al client
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Posta elettronica
L’email consente agli utenti di scambiarsi messaggi, essa è considerata una transazione
unidirezionale. Cioè la quando una persona x invia un messaggio a y la risposta non è
obbligatoria, inoltre non esiste nessun programma server attivo quando la posta viene
ricevuta, quindi l’idea di programmazione client/server deve essere modellata in modo
diverso, ad esempio utilizzando dei computer intermedi.
Architettura
Abitualmente il mittente e il destinatario della posta elettronica, sono collegati via LAN o
WAN a due server di posta. L’amministratore ha creato una mailbox per ogni utente dove
memorizzare i messaggi ricevuti. Una mailbox non è altro che una porzione di spazio sulla
memoria di massa del server, sotto forma di un file. Il semplice invio di una e-mail richiede
nove passi. L’utente x e y utilizzano tre differenti:
User Agent(UA), utilizzato per preparare il messaggio e inviarlo al proprio server
di posta;
Mail Transfer Agent(MTA). Il messaggio, deve essere inviato tramite internet
dal mail server di x al mail server di y usando un MTA, sono necessari due MTA
in ciascun mail server;
Message Access Agent(MAA), infine y utilizza un client MAA per ottenere i messaggi
da un server MAA in esecuzione sul secondo server.
User Agent
Il primo componente UA ha lo scopo di semplificare all’utente il processo di invio e
ricezione dei messaggi. Un UA è un programma che consente di scrivere, leggere,
rispondere e inoltrare i messaggi, ed è in grado inoltre di gestire le mailbox nei computer
degli utenti. Vi sono due tipi di user agent i GUI e a riga di comando.
Invio di un messaggio di posta elettronica
L’utente, per inviare una e-mail crea messaggi che sono molto simili alla posta cartacea
tradizionale; ogni messaggio di posta elettronica consiste di una sorta di busta e del
messaggio vero e proprio. La busta contiene l’indirizzo del destinatario, quello del mittente
e altre info. Il messaggio è suddiviso in header, body.
Ricezione di un messaggio di posta
L’UA viene attivato dall’utente o da un timer. Se vi è nuova posta in arrivo, L’UA informa
l’utente con un avviso.
Indirizzi
I sistemi che si occupano della consegna dei messaggi di posta elettronica necessitano di
un sistema di indirizzamento che permetta di individuare in modo univoco gli utenti. In
internet, gli indirizzi sono composti in due parti una parte locale e un nome di dominio
separati da @.
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Domini generici: essi suddividono gli host in base al loro scopo generale; ogni nodo
dell’albero definisce un dominio che non è altro che un indice nel database dello spazio dei
nomi di dominio
Domini nazionali: Il formato dei domini nazionali prevede un’etichetta di primo livello
costituita da abbreviazioni formate da due caratteri e che individuano una nazione.
Risoluzione
Il processo che permette di associare un indirizzo IP a un nome noto è detto risoluzione di
un nome (address resolution). Un host che voglia associare un nome a un indirizzo IP si
rivolge a un programma client DNS che è detto resolver. Il resolver invia un’opportuna
richiesta al server DNS più vicino; questi se ha l’informazione comunica l’indirizzo o il nome
cercato al resolver. Ricevuta la risposta, il resolver l’analizza per accertarsi che non
contenga errori e trasmette il risultato al processo che aveva richiesto la risoluzione
(ricorsiva o iterativa).
Caching: un server, ogni volta che riceve una richiesta di risoluzione per un nome che non
si trova all’interno del suo dominio, deve cercare nel proprio database l’indirizzo di un
altro server al quale eventualmente inoltrare la richiesta. Il catching è una tecnica che
permette di archiviare la risposta del secondo server in una memoria temporanea al fine di
poterla usare se richiesta di nuovo senza doversi connettere al server che gliela fornita
(risposta non autorevole, problema info obsolete risolto con il TTL time to live).
Messaggi DNS
I messaggi DNS sono di due tipi query e response. Vari campi in un messaggio DNS
“campo”.
Identificazione: associa la risposta all’interrogazione,
Flag indica se si tratta di un messaggio di richiesta o risposta,
Sezione richiesta,
Sezione risposta,
Sezione autorevole fornisce informazioni di uno o più server autorevoli,
Sezione supplementare fornisce informazioni addizionali.
Protocollo di livello trasporto
Il sistema ‘DNS può essere usato sia in UDP che in TCP; in entrambi i casi il server ha la
porta nota 53. UDP viene utilizzato quando il messaggio non supera i 512 byte.
Registrar
Come è possibile aggiungere nuovi domini al DNS, è possibile farlo avvalendosi dei servizi
offerti dai registrar ovvero delle aziende commerciali accreditate dall’ICANN.
Paradigma peer-to-peer
Gli utenti internet che intendono condividere le proprie risorse divengono peer e formano
una rete. Quando uno dei peer nella rete ha un file da condividere, lo rende disponibile agli
altri. Chi è interessato può connettersi a tale computer per scaricare il file e renderlo a sua
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
volta disponibile ad altri, poiché le reti P2P possono drasticamente calare da un momento
all’altro è necessario suddividere la rete P2P.
Reti centralizzate
In una rete P2P centralizzata, il sistema di directory, ovvero l’elenco dei peer e delle risorse
condivisi, utilizza il paradigma client/server, ma la memorizzazione e lo scaricamento dei
file avvengono usando il paradigma P2P(ibride). Un peer alla ricerca di un particolare file,
invia una richiesta a un server centrale. Questo ricerca nella propria directory e risponde
con l’indirizzo ip dei nodi che hanno una copia del file. Il peer contatta quindi uno dei nodi
e preleva il file. La directory è costantemente aggiornata per tenere traccia dei nodi che
entrano e escono dalla rete.
Reti decentralizzate
Una rete P2P decentralizzata non utilizza un sistema di directory centralizzato. Con questo
modello i peer si organizzano formando una overlay network, ovvero una rete logica
soprastante alla rete fisica utilizzata per organizzare i peer (strutturata o non strutturata).
Non strutturata; i nodi in questa rete sono collegati in modo casuale, una qualsiasi
ricerca deve essere inviata in flooding a tutta la rete.
Strutturate; i nodi sono costruiti seguendo una tecnica particolare in modo da
migliorare la velocita di ricerca delle informazioni.
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
porta. Al client viene affidato un numero effimero ovvero di breve termine(>1023). Anche
al server deve essere associato un numero di porta pero questo deve essere scelto con
cura poiché deve essere noto anche al client. Nei protocolli TCP/IP si usano numeri
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
universali per i server, che sono detti numeri di porta noti (well-know), quindi i numeri di
porta individuano uno dei processi applicativi del particolar host individuato
dall’indirizzo IP.
Intervalli ICANN
L’authority ICANN(Internet corporation for assigned names and numbers) ha suddiviso i
numeri di porta in tre categorie: noti, registrati e dinamici
Noti: i numeri tra 0 e 1023.
Registrati: 1024 e 49151.
Dinamici: da 49152 a 65535.
Socket address
Un protocollo del livello trasporto nella pila TCP/IP necessita di due identificatori per ogni
lato, l’indirizzo IP e il numero di porta; la loro combinazione è detta socket address
dell’utente. Esso individua il processo client in modo univoco cosi come il socket address
del server individua il processo server in modo univoco.
Affinché si possano utilizzare i servizi del livello trasporto in internet è necessaria una
coppia di socket address; quello del client e quello del server.
Incapsulamento/decapsulamento
Per inviare un messaggio da un processo a un altro, il protocollo di livello trasporto
incapsula e decapsula i messaggi. L’incapsulamento avviene dal lato del mittente. Quando
un processo deve inviare un messaggio, lo passa al livello trasporto insieme a una coppia
di socket address e ad altre informazioni, il livello trasporto riceve i dati e vi aggiunge la
propria intestazione. I pacchetti nel TCP sono chiamati segmenti o datagrammi utente in
UDP. Il decapsulamento avviene dal lato destinatario. Quando il messaggio arriva a
destinazione, l’intestazione viene rimossa e il messaggio viene consegnato a livello
applicazione.
Multiplexing e demultiplexing
Il termine multiplexing fa riferimento al caso in cui un’entità riceve informazioni da più di
una sorgente; il termine demultiplexing fa riferimento al caso in cui un’entità trasmette
informazioni a più di un destinatario. Il livello trasporto effettua il multiplexing nel sito
mittente e il demultiplexing nel destinatario.
Controllo di flusso
Quando un’entità produce dati che un’altra entità deve consumare, deve esistere un
equilibrio fra la velocità di produzione e la velocità di consumo dei dati. Il controllo di
flusso è legato a una problematica singola cioè la perdita di dati se il sistema è
sovraccarico.
Nelle comunicazioni al livello trasporto si ha a che fare con quattro entità: il processo
mittente, il livello trasporto del mittente, il livello trasporto del destinatario e il processo
destinatario. La prima è un’applicazione solo produttore, il secondo ha un doppio ruolo
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
pacchetto con numero di sequenza y che arriva al destinatario, viene memorizzato nella
locazione y fino a quando il livello applicazione è pronto a riceverlo. A quel punto può
essere inviata la conferma di ricezione del pacchetto y.
Controllo della congestione
Una questione importante nelle reti, è la congestione. La congestione in una rete può
avvenire se il carico della rete (numero di pacchetti inviati nella rete) è superiore alla
capacità della rete. Ci si potrebbe chiedere per quale motivo esista la congestione in una
rete: la congestione può avvenire in qualsiasi sistema che comporti un’attesa. In rete la
congestione avviene poiché i router e gli switch hanno delle code(buffer) e se non riescono
a gestire i pacchetti in arrivo e in uscita poiché sono pieni le code si congestionano (liv rete
si manifesta a liv trasporto).
Servizi orientati alla connessione e servizi privi di
connessione
Un protocollo del livello trasporto, come un protocollo del livello rete, può fornire due tipi
di servizi: orientati alla connessione e privi di connessione (connection-oriented/less).
L’assenza di connessione a livello trasporto indica indipendenza fra i pacchetti, la presenza
di una connessione indica invece dipendenza.
In un servizio privo di connessione, il programma applicativo deve dividere i suoi messaggi
in porzioni di dimensioni accettabili dal livello trasporto, a cui consegnarli uno per uno. Il
livello trasporto tratta ogni porzione come entità singola senza mantenere alcuna relazione
fra di esse.
In un servizio orientato alla connessione, il client e il server devono per prima cosa
stabilire una connessione logica. Solo dopo questa fase è possibile scambiare dati utente.
Una volta terminato lo scambio dei dati, è necessario chiudere la connessione.
Il comportamento di un protocollo del livello trasporto, sia che fornisca servizi orientati alla
connessione, sia privi di connessione, può essere ben rappresentato con una macchina o
automa a stati finiti.
Protocolli di livello trasporto
È possibile sviluppare un protocollo di livello trasporto combinando un insieme dei servizi
descritti nei paragrafi precedenti.
Un protocollo semplice
Un protocollo privo di connessione senza controllo errori e del flusso. Il livello trasporto
mittente riceve un messaggio dal proprio livello applicazione, ne crea un pacchetto e lo
invia. Il livello trasporto destinatario riceve il datagramma dal proprio livello rete, ne
estrae il messaggio e lo consegna al proprio livello applicazione. I livelli trasporto del
mittente e del destinatario forniscono quindi servizi di comunicazione ai rispettivi livelli
applicazione. Il mittente non può inviare pacchetti fino a quando il suo livello applicazione
non ha un messaggio da spedire. Analogamente il destinatario non può consegnare un
messaggio al proprio livello applicazione fino a quando non riceve un pacchetto.
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Stop-and-Wait
Il secondo meccanismo preso in considerazione è orientato alla connessione ed è chiamato
Stop and Wait; utilizza sia il controllo di flusso sia il controllo degli errori. Il mettente e il
destinatario usano entrambi una finestra scorrevole di dimensione 1(un pacchetto alla
volta). Il mittente invia un pacchetto alla volta e aspetta l’ack(riscontro) prima di poter
spedire il successivo. Per rilevare i pacchetti corrotti è necessario aggiungere un valore
cheksum (valore di controllo) a ogni pacchetto dati. Quando un pacchetto arriva al
destinatario, viene calcolato il cheksum se il valore corrisponde, si invia un ack al mittente.
Se il checkusm non corrisponde, il pacchetto risulta corrotto e viene scartato senza
informare il client. L’assenza di un ack da parte del destinatario costituisce un’indicazione
per il mittente che il pacchetto è stato perso o scartato. Infatti, ogni volta che il mittente
invia un pacchetto, inizializza un timer. Se arriva un ack prima che il timer sia scaduto, il
timer viene arrestato e viene inviato il pacchetto successivo. Se il timer scade, il mittente
rispedisce il pacchetto precedente. Questo comporta di dover tenere una copia del
pacchetto in memoria. Questo meccanismo è orientato alla connessione e fornisce i servizi
di controllo degli errori e del flusso.
Numeri di sequenza e di riscontro
Per poter gestire i pacchetti duplicati, lo Stop and Wait utilizza i numeri di sequenza e di
riscontro. Viene quindi aggiunto un campo all’intestazione del pacchetto, per contenere il
valore del numero di sequenza del pacchetto. Una considerazione importante riguarda
l’intervallo dei possibili valori dei numeri di sequenza: l’obbiettivo è sempre minimizzare la
dimensione dei pacchetti. Si vuole quindi identificare l’intervallo più piccolo possibile che
possa consentire la comunicazione senza ambiguità.
Poiché i numeri di sequenza devono essere adatti sia per numerare i pacchetti dati sia per
indicare i riscontri, si utilizza la seguente convenzione: il numero di riscontro indica sempre
il numero di sequenza del prossimo pacchetto atteso dal destinatario. Se per esempio il
destinatario ha ricevuto correttamente il pacchetto 0, invia un riscontro con valore 1. Se il
destinatario ha ricevuto correttamente il pacchetto 1, invia il riscontro 0. Nello SAW è
sufficiente usare la numerazione x=0 e x+1=1. Il mittente ha una variabile di controllo,
indicata con S(sender), che punta all’unica locazione della finestra di invio. Il destinatario
ha una variabile di controllo, indicata con R(receiver), che punta all’unica locazione della
finestra di ricezione.
FSM
Le FSM per il meccanismo di Stop and Wait essendo orientato alla connessione, entrambi i
lati devono essere nello stesso established prima di poter trasmettere. Gli stati indicati
sono in realtà nidificati nello stato estabished. Il mittente è inizialmente nello stato ready,
ma si può muovere fra gli stati ready e blocking.
Stato ready. Il mittente in questo stato è in attesa di qualche evento. Se arriva
una richiesta dal livello applicazione, crea un pacchetto con numero di sequenza
S,
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
memorizza una copia del pacchetto, lo invia, inizializza il timer e passa nello stato
blocking.
Stato blocking. Quando il mittente è in questo stato possono avvenire tre eventi.
1. Se arriva un ack integro con ackNo uguale al prossimo pacchetto da inviare,
il timer viene interrotto, la finestra viene fatta scorrere in avanti e il mittente
passa nello stato ready.
2. Ack corrotto o integro ma con acjNo diverso da (S+1) modulo 2 esso
viene scartato.
3. Time-out il mittente invia l’unico pacchetto ancora in sospeso e fa ripartire
il timer.
Il destinatario rimane sempre nello stato ready, dove possono avvenire tre eventi.
1. Se arriva un pacchetto integro con seqNo = R, il messaggio nel pacchetto viene
consegnato al livello applicazione, la finestra viene fatta scorrere calcolando R
= (R+1) modulo 2 e viene inviato un riscontro con ackNo = R.
2. Se arriva un pacchetto integro con seqNo diverso da R, il pacchetto viene
scartato ma viene inviato un riscontro con ackNo = R
3. Se arriva un pacchetto corrotto viene scartato.
Efficienza
Questo meccanismo è molto inefficiente se il canale ha una velocità di trasmissione elevata
e un lungo ritardo. Il prodotto di questi due valori è chiamato prodotto banda ritardo. In
un sistema stop and Wait l’ampiezza di banda del canale è di 1Mbps e il tempo di andata e
ritorno di un bit è di 20 millisecondi.(% utilizzo canale a 1000 bit 1x10^6)x(20x10^-
3)=20000bit quindi coefficiente di utilizzo del canale è 1000/20000 ovvero il 5%).
Go-Back-N(GBN)
Per migliorare l’efficienza di trasmissione si devono avere più pacchetti in transizione
mentre il mittente è in attesa dei riscontri. Ovvero è necessario consentire di lasciare in
sospeso piu di un pacchetto. Questo meccanismo adotta la tecnica del pipeling ovvero
permette di inviare diversi pacchetti prima di ricevere dei riscontri.
Numeri di sequenza e di riscontro
In questa modalità i numeri di sequenza sono calcolati modulo 2^m, dove m è la
dimensione del campo sequence number in bit.
Il numero di riscontro in questo caso è cumulativo e indica il numero di sequenza del
prossimo pacchetto atteso, per esempio se il numero di riscontro vale 7 significa che tutti i
pacchetti fino al 6 sono stati ricevuti correttamente.
Finestra di invio
La finestra di invio è un meccanismo che ricopre i numeri di sequenza dei pacchetti che
possono essere in transito o che possono essere spediti.
La finestra di invio in ogni istante divide i possibili numeri di sequenza in quattro regioni.
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
permette a un numero di pacchetti uguale alla dimensione della finestra di arrivare fuori
sequenza, i pacchetti vengono memorizzati nella finestra fino a quando si forma un blocco
di pacchetti consecutivi da passare al livello applicazione.
Timer
Teoricamente il SR usa un timer per ciascun pacchetto in attesa di riscontro.
Quando un timer scade ne viene rispedito solo il relativo pacchetto. A differenza di GBN
che gestisce i pacchetti in attesa di riscontro come un singolo gruppo, SR li gestisce
individualmente.
Riscontri
La semantica dei riscontri indica il numero di sequenza di un singolo pacchetto ricevuto
correttamente, non può fornire feedback per gli altri.
FSM
70
Protocolli bidirezionali: piggybacking
I quattro meccanismi discussi in precedenza sono tutti unidirezionali: i pacchetti dati
scorrono solo in una direzione e i riscontri nella direzione opposta. I pacchetti dati vengono
in realtà trasmessi solitamente in entrambe le direzioni: dal client al server e dal server al
client. Questo significa che anche i riscontri devono viaggiare in entrambe le direzioni. Per
migliorare l’efficienza dei protocolli bidirezionali viene utilizzata una tecnica chiamata
piggybacking(“viaggiare in spalla a qualcuno”) quando un pacchetto trasporta i dati
trasporterà anche i riscontri.
Protocolli internet di livello trasporto
I protocolli udp e tcp sono situati fra il livello applicazione e il livello rete e agiscono da
intermediari fra i programmi applicativi e le operazioni della rete.
UDP è un protocollo di trasporto inaffidabile e privo di connessione, utilizzato per la sua
semplicità ed efficienza nei casi in cui il controllo degli errori può essere gestito dai
processi di livello applicazione. Tcp è affidabile orientato alla connessione, che può essere
utilizzato nelle applicazioni dove l’affidabilità è importante.
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Servizi UDP
Fornisce servizio di comunicazione tra processi utilizzando i socket address (IP+n.porta), ed
eseguendo il multiplexing e demultiplexing. Nell’udp il concetto di porta è una coda, cioè
quando un processo client viene avviato richiede al sistema operativo la disponibilità di
una porta. Il OS crea due code, ingresso e uscita, associate al processo. In alcuni sistemi
operativi crea la sola coda d’ingresso. Il protocollo udp, per inviare un messaggio da un
processo a un altro, incapsula e decapsula il messaggio. Una delle conseguenze della
trasmissione senza connessioni è che il processo mittente nun può inviare un flusso di dati
al protocollo UDP e aspettarsi che questi lo suddivida in datagrammi correlati. I processi
devono inviare all’UDP richieste di dimensione sufficientemente piccole da poter essere
inserite ciascuna in un datagramma utente. Nell’UDP non esiste congestione, nessuna
finestra. Riguardo al controllo degli errori, l’unica meccanismo in UDP è il cheksum.
Cheksum
In UDP riguarda tre parti: pseudoheader, intestazione e dati provenienti dal livello
applicazione. Lo pseudoheader è una parte dell’intestazione del pacchetto IP in cui viene
incapsulato il datagramma utente, con alcuni dei campi impostati a zero, se quest’ultimo
non esistesse il datagramma utente potrebbe finire all’host sbagliato.
Il mittente di un pacchetto UDP può decidere di non calcolare il checkusm: in questo caso il
campo corrispondente è posto uguale a 0.
Applicazioni UDP
In questo paragrafo si descrivono le caratteristiche di UDP
1. Servizio privo di connessione, ogni datagramma udp è indipendente, più veloce
ma meno sicuro, no problemi di vario genere.
2. Assenza del controllo degli errori, servizio inaffidabile.
3. Assenza di controllo della congestione.
Possibili campi di impiego del protocollo UDP
Il protocollo udp è adeguato per processi che richiedono uno scambio di dati
di volume limitato con scarso interesse al controllo di flusso e degli errori.
Per processi che hanno meccanismi interni di controllo d’errore e di flusso,
Caso di trasmissione multicast. Le funzioni necessarie per questo tipo di
trasmissioni sono previste nel protocollo UDP, ma non in quello TCP.
Il protocollo UDP è usato per attività di gestione come SNMP
Per l’aggiornamento delle informazioni di instradamento come il protocollo RIP
Per applicazioni interattive in tempo reale che non tollerano ritardi variabili fra
le parti dei messaggi ricevuti.
Il protocollo TCP(Transmission Control Protocol)
Il protocollo TCP è un protocollo orientato alla connessione e affidabile. Per fornire un
servizio orientato alla connessione TCP prevede esplicitamente i meccanismi di apertura
della connessione, di trasferimento dei dati e di chiusura della connessione.
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Le operazioni del buffer in ricezione sono più semplici. Sebbene la bufferizzazione possa
gestire la differenza in velocità fra i processi produttore e consumatore, è necessario un
passo ulteriore per poter trasmettere i dati. Il livello rete, quale fornitore di servizi al
protocollo di livello trasporto, deve inviare i dati in pacchetti. Al livello trasporto TCP
raggruppa quindi i segmenti. TCP aggiunge un’intestazione formata da varie informazioni a
ciascun segmento, che consegna al livello rete per la trasmissione. I segmenti vengono
incapsulati in datagrammi IP e trasmessi. Il TCP offre un servizio full-duplex, nel quale i dati
possono fluire contemporaneamente in entrambe le direzioni. Ciascuna entità TCP ha
quindi i propri buffer di trasmissione e ricezione e i segmenti possono circolare in
entrambe le direzioni.
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
dati che viaggiano nella medesima direzione dei riscontri sono trasportati nel
medesimo segmento. I segmenti inviati dal client hanno il flag PSH(push). Pushing
dei dati il protocollo TCP mittente memorizza in buffer i dati provenienti dal
programma applicativo; la quantità di dati del buffer che vengono inseriti in un
segmento è scelta a discrezione del protocollo TCP. Anche il protocollo TCP
ricevente memorizza i dati ricevuti in un buffer e li trasmette al programma
applicativo quando questo è pronto alla ricezione oppure quando il TCP lo ritiene
conveniente. Questo modo d’operare cosi flessibile permette di migliorare
l’efficienza delle procedure di trasmissione. Vi sono casi, però in cui il programma
applicativo non può operare in regime di flessibilità. Il TCP gestisce queste
operazioni con la funzione push che può essere richiesta dal mittente.
Dati urgenti
Tcp è un protocollo orientato al flusso. Cioè i dati giungono al protocollo TCP come un
flusso di caratteri e ogni byte di dati occupa una determinata posizione all’interno del
flusso. Vi sono casi, però in cui un processo ha la necessita di inviare dati urgenti; la
soluzione consiste nell’invio di un segmento con il bit URG attivato: il processo mittente
notifica al TCP mittente che i dati sono urgenti. Il meccanismo dei dati urgenti in TCP non è
né un servizio di priorità né un servizio dati fuori banda. Invece, la modalità urgente è un
servizio con il quale il programma applicativo lato mittente indica che alcune porzioni dello
stream di byte richiedono un trattamento speciale da parte del programma applicativo lato
destinatario.
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
classico è l’ordinamento: quando il client invia i dati al server affinché siano ordinati, il
server deve ricevere tutti i dati prima di poter iniziare l’ordimento.
Il client richiede la half-close della connessione inviando un segmento FIN. Il server accetta
la richiesta di chiusura inviando un segmento ACK. Il trasferimento dei dati dal client al
server termina, ma il server può continuare a inviare dati. Quando il server ha terminato
l’invio dei dati elaborati, invia un segmento FIN, che viene riscontrato da un segmento ACK
dal client.
Reset della connessione
L’entità TCP può rifiutare una richiesta di connessione, può interrompere una connessione
attiva o può chiudere una connessione non attiva, utilizzando il flag RST.
Diagramma delle transizioni di stato
Al fine di avere una visione globale di tutti gli eventi che si realizzano durante l’apertura di
una connessione, la sua chiusura e il trasferimento, il protocollo TCP viene specificato
come una macchina a stati finiti.
Finestre TCP
Questo protocollo utilizza due finestre(di invio e ricezione) per ciascuna direzione del
trasferimento dei dati, il che significa quattro finestre nel caso di comunicazione
bidirezionale.
Finestra di invio
La finestra di invio in TCP è simile a quella utilizzata con il meccanismo Selective-Repeat.
1. Una differenza è dovuta all’unita di misura della dimensione della finestra: nel
meccanismo SR indica il numero di pacchetti, mentre nel protocollo TCP indica il
numero di byte. Sebbene la trasmissione in TCP avvenga segmento per segmento,
le variabili che controllano la finestra sono espresse in byte.
2. La seconda differenza consiste nel fatto che in alcune implementazioni il TCP può
memorizzare i dati ricevuti dal processo per spedirli in un momento successivo, ma
in questo consenso si assume che il TCP mittente sia in grado di inviare segmenti
di dati non appena ricevuti dal processo.
3. Un’altra differenza è il numero di timer. Il meccanismo Selective-Repeat può
impiegare più timer per ciascun pacchetto inviato, ma come già menzionato,
il protocollo TCP utilizza un solo timer.
Finestra di ricezione
La dimensione di questa finestra è di 100 byte, la finestra non dovrebbe mai restringersi. Vi
sono due differenze tra la finestra TCP e quella SR
1. TCP consente al processo destinatario di richiedere i dati al ritmo desiderato. La
dimensione della finestra di ricezione è dunque sempre più piccola o al massimo
uguale alla dimensione del buffer. La dimensione della finestra di ricezione
indicata
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Riscontri
TCP utilizza i riscontri per confermare la ricezione dei segmenti dati e dei segmenti di
controllo che non contengono dati ma che usano un numero di sequenza. Il protocollo TCP
è stato originariamente progettato per riscontrare la ricezione dei segmenti in modo
cumulativo: il destinatario notifica il numero di byte che si attende, ignorando tutti gli
eventuali segmenti giunti fuori sequenza e memorizzati. Questa tecnica viene a volte
indicata come riscontro cumulativo positivo.
Quando il destinatario genera i riscontri?
1. Quando un’entità invia un segmento dati all’entità corrispondente.
2. Quando il destinatario non ha dati da inviare e riceve un segmento
nell’ordine corretto e il segmento precedente è già stato riscontrato.
3. Quando arriva un segmento con numero di sequenza atteso e il segmento
precedente non è stato riscontrato, il destinatario invia immediatamente
un segmento ACK.
4. Quando arriva un segmento fuori sequenza, il destinatario invia immediatamente
un segmento ACK notificando il numero di sequenza atteso nel prossimo
segmento.
5. Quando arriva un segmento mancante.
6. Quando arriva un segmento duplicato.
Ritrasmissione dei segmenti
Il cuore del maccanismo di controllo degli errori è la ritrasmissione dei segmenti: quando
un segmento viene inviato, viene memorizzato in una coda in attesa. Alla scadenza del
timer di ritrasmissione o quando il mittente riceve tre ACK duplicati per il precedente
segmento nella coda, quel segmento viene ritrasmesso.
Il TCP mittente inizializza un timer di ritrasmissione RTO per ogni segmento inviato, allo
scadere del tempo limite senza averne ricevuto un riscontro il segmento all’inizio della
coda viene ritrasmesso e si fa ripartire il timer.
La regola relativa alla ritrasmissione dei segmenti è sufficiente se il valore di RTO non è
eccessivo. A volte, tuttavia viene smarrito un segmento e il destinatario riceve un numero
tanto elevato di segmenti fuori sequenza da non poterli memorizzare. Per risolvere questo
problema si utilizza l’ACK a tre duplicati e ritrasmettono immediatamente il segmento
mancante. Questa funzione viene chiamata ritrasmissione veloce. Con questa versione
quando vengono ricevuti tre ACK duplicati di un segmento, quello successivo viene
immediatamente ritrasmesso senza attendere il time-out.
Controllo della congestione in TCP
Tcp utilizza diverse strategia per gestire la congestione nella rete.
Finestra di congestione
Quando si è descritto il controllo di flusso nel protocollo TCP, si è detto che la dimensione
della finestra di invio è controllata dal destinatario tramite il valore di rwnd, che viene
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
indicato in ogni segmento trasmesso nella direzione opposta. L’impiego di questa strategia
garantisce che la finestra del ricevente non venga mai sovraccaricata con i dati ricevuti.
Questo tuttavia non garantisce che i buffer intermedi, i buffer nei router non si
congestionino.
TCP è un end-to-end che sfrutta i servizi di IP. La congestione nei router è un problema che
riguarda IP e che dovrebbe essere gestito a livello rete.
Per controllare il numero di segmenti da trasmettere, TCP utilizza una seconda variabile
chiamata cwnd(congestion window), il cui livello dipende dal livello di congestione
nella rete.
Rilevare la congestione
Il mittente interpreta come sintomi di congestione due eventi: il timeout e la ricezione di
tre riscontri duplicati. Il primo evento è dunque il timeout. Se un mittente TCP non riceve
un riscontro per un segmento o un gruppo di segmenti prima dello scadere del timeout,
suppone che tale segmento o i segmenti siano stati smarriti a causa della congestione.
Il secondo evento è per la ricezione di tre riscontri duplicati. Se il destinatario invia tre
riscontri duplicati, significa che un segmento è stato smarrito. La rete è appena entrata in
una congestione.
Le strategie di gestione della congestione
La strategia generale del protocollo TCP per gestire la congestione si basa su tre fasi: slow
start, congestion avoidance, fast recovery.
Slow start: incremento esponenziale
L’algoritmo slow start si basa sull’idea che la dimensione della finestra di congestione viene
inizializzata con la dimensione del segmento massimale ma viene aumentata di un valore
corrispondente a MSS (massimale) a ogni segmento riscontrato. L’algoritmo parte
lentamente ma procede con una velocità esponenziale. Il mittente tiene traccia di una
variabile chiamata ssthresh quando la dimensione della finestra raggiunge questa soglia
slow start termina e inizia la fase successiva.
Congestion Avoidance: additive increase
La dimensione della finestra di congestione aumenta esponenzialmente nella fase di slow
start, ma per evitare la congestione il ritmo di crescita deve essere rallenta. TCP prevede
un altro algoritmo, chiamato congestion avoidance, che incrementa linearmente il valore
cwnd. Con questo algoritmo ogni volta che viene riscontrata l’intera finestra di segmenti la
dimensione della finestra di congestione viene incrementata di 1.
Fast recovery
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
L’algoritmo fast recovery è opzionale in TCP. La vecchia versione di TCP non lo utilizzava, al
contrario delle nuove. Esso inizia quando arrivano tre riscontri duplicati che vengono
interpretati come indizio di leggera congestione nella rete. Cwnd=cwnd+(1/cwnd).
Strategie di transizione fra gli algoritmi
Sono state presentate tre tecniche di gestione della congestione in TCP
TCO Taho
La prima versione TCP Taho utilizzava solo lo slow start e congestion avoidance. TCP Taho
reagisce ai due sintomi di congestione, il timeout e i tre riscontri duplicati, nello stesso
modo. Quando viene aperta la connessione Taho fa partire lo slow start e imposta la
variabile ssthresh, e cwnd a 1MSS. Se viene rilevata la congestione Taho interrompe
immediatamente la crescita esponenziale, fa ripartire lo slow start con una nuova soglia
uguale alla metà del valore corrente di cwnd e reimposta le finestre a 1. Se non viene
rilevata congestione fino al raggiungimento del threshold TCP considera di aver raggiunto il
massimo delle possibili ambizioni e di non poter continuare a ingrandire la finestra quindi
passa al Congestion Avoidance.
TCP Reno
Nel TCP Reno è stato aggiunto il controllo della congestione chiamato fast recovery.
Questa versione tratta i due sintomi della congestione, il timeout e la ricezione dei tre
riscontri duplicati, in modo differente. Quando avviene un timeout, TCP passa allo stato
slow start. Quando riceve tre riscontri duplicati, TCP passa allo stato fast recovery. E vi
rimane fintantoché arrivano altri riscontri duplicati. Lo stato fast recovery è uno stato
intermedio fra gli stati slow start e congestion. Si comporta come lo slow start, ma il valore
iniziale di cwnd è uguale a ssthresh più 3 MSS (anziché 1). Quando TCP passa nello stato
fast recovery, possono avvenire tre eventi principali.
1. Se continuano ad arrivare riscontri duplicati, TCP rimane nello stato ma cwnd
cresce esponenzialmente.
2. Se avviene un timeout, TCP assume che vi sia una reale congestione nella rete
e passa allo stato slow start.
3. Se arriva un nuovo riscontro, TCP passa allo stato congestion avoidance, ma riduce
il valore di cwnd al valore di ssthresh come se i tre riscontri duplicati non fossero
stati ricevuti e la transizione fosse dallo stato slow start allo stato congestion.
TCP NewReno
Una versione più recente di TCP, realizza un’ulteriore ottimizzazione. In questa versione
TCP controlla quando arrivano i tre riscontri duplicati, se è stato smarrito più di un
segmento nella finestra corrente. Quando TCP riceve tre riscontri duplicati, ritrasmette il
segmento smarrito fino a quando non riceve un nuovo riscontro. Se il nuovo riscontro
indica la fine della finestra quando è stata rilevata la congestione, TCP è certo che è stato
smarrito un solo segmento. Se invece il numero di riscontro definisce una posizione
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
intermedia fra il segmento ritrasmesso e la fine della finestra, è possibile che anche il
segmento segnalato dal riscontro sia stato smarrito. NewReno ritrasmette quindi questo
segmento per evitare di dover ricevere altri riscontri duplicati per quel segmento.
Timer TCP
Timer di ritrasmissione
Algoritmo di Karn
Back-off esponenziale
Timer di persistenza
Timer keepalive
Timer tempo d’attesa (2MSL)
PROMPT
Il componente del sistema operativo con cui qualsiasi utente interagisce più
frequentemente è sicuramente il file system; ovvero, quello che si occupa della gestione
dei file. Il file system fornisce
L’interfaccia GUI(Graphical User Interface);
E la CLI(Command Line Interface).
La CLI permette di impartire comandi utilizzando la tastiera al posto della GUI. I comandi
digitati dalla linea di comandi di Windows sono “case insensitive”.
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
2° Esonero
Livello di rete
Il livello di rete nel TCP/IP è responsabile della consegna dei datagrammi tra gli host.
questo procedimento comprende numerosi aspetti.
Introduzione
Internet è formata da molte reti connessi tramite opportuni dispositivi, infatti essa non è
altro che un internetwork un insieme di LAN e WAN. Per capire meglio il livello di rete
dobbiamo considerare i dispositivi di interconnessione che connettono tra loro LAN e
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
WAN. I router utilizzano soltanto tre livelli durante l’attività vera e propria di
instradamento dei pacchetti. Tuttavia, come vedremo in seguito, i router possono aver
bisogno dei livelli di trasporto ed applicazione per alcuni scopi particolari (coordinarsi con
altri router).
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
il livello di rete, tutte le forme di gestione della qualità del servizio sono state realizzate al
livello superiore.
Sicurezza
Un’altra questione relativa alla comunicazione a livello di rete è la sicurezza. Questa non
era un problema quando internet è stata progettata originariamente: gli utenti erano
solamente pochi universitari. Il livello di rete è stato quindi progettato senza alcuna
particolare attenzione ai problemi di sicurezza. Oggi, tuttavia, la sicurezza è fonte di
enorme preoccupazione.
Packet Switching
Deriva dal discorso precedente che nel livello di rete avviene una qualche forma di
switching (spostamento). Un router infatti è un commutatore di rete che crea un
collegamento tra una porta di input e una di output, proprio come un commutatore
elettrico collega l’input all’output per far passare l’elettricità.
Anche se nella comunicazione dei dati le tecniche di switching sono divise in due ampie
categorie, il circuit switching (commutazione di circuito) e il packet switching
(commutazione di pacchetto), solo quest’ultimo viene utilizzato a livello di rete in quanto
l’unità dei dati, a questo livello, è il pacchetto, mentre il circuit switching viene usato
soprattutto al livello fisico.
A livello di rete un pacchetto proveniente dal livello superiore viene diviso in pacchetti
di dimensione gestibile ed ognuno di questi viene inviato tramite la rete. La sorgente
invia i datagrammi uno alla volta; la destinazione li riceve uno per uno.
Approccio a datagramma: servizio senza connessione
Con l’obbiettivo della semplicità, internet è stata progettata con un livello di rete in grado
di fornire un servizio senza connessione, dove il protocollo di rete tratta ogni datagramma
in modo del tutto indipendente ed i singoli datagrammi non hanno alcuna relazione con gli
altri. Poiché il livello di rete deve solo veicolare i datagrammi. Ogni datagramma che
viaggia in internet è un’entità indipendente, non c’è alcuna relazione tra i datagrammi che
appartengono allo stesso messaggio. I commutatori in questo tipo di rete sono
normalmente chiamati router.
Ogni datagramma viene instradato sulla base delle sole informazioni contenute nella sua
intestazione: gli indirizzi sorgente e destinazione. L’indirizzo destinazione definisce dove il
datagramma deve andare, l’indirizzo sorgente da dove viene.
Approccio a circuiti virtuali: servizio orientato alla
connessione
In un servizio orientato alla connessione c’è una relazione tra tutti i datagrammi che
appartengono ad un messaggio. Prima che tutti i datagrammi di un messaggio possano
essere inviati, è necessario impostare una connessione virtuale per definire il percorso dei
datagrammi. Dopo aver impostato la connessione, i datagrammi devono contenere gli
indirizzi sorgente e destinazione, ma deve anche contenere un’etichetta di flusso, che
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
identifichi il circuito virtuale che definisce il percorso virtuale che il datagramma deve
seguire. Anche se può apparire che l’uso dell’etichetta renda inutili gli indirizzi sorgente e
destinazione durante la fase di trasferimento dati, è bene ricordare che nel caso di internet
il livello di rete continua ad utilizzare tali indirizzi. Ogni datagramma viene inoltrato sulla
base dell’etichetta presente nella sua intestazione.
Per implementare un servizio orientato alla connessione viene utilizzato un processo
composto da tre fasi: setup (creazione del circuito virtuale), data transfer (trasferimento
dei dati) e teardown (distruzione del circuito virtuale).
Nella fase di setup gli indirizzi sorgente e destinazione del mittente e del ricevente
vengono utilizzati per configurare nei router le tabelle necessarie per l’impostazione dei
circuiti virtuali. Nella fase di teardown la sorgente e la destinazione informano i router di
cancellare tutte le informazioni relative al circuito che si sta eliminando. Il trasferimento
dei dati avviene necessariamente tra queste due fasi.
Congestione a livello di rete
Nel caso di internet non si parla esplicitamente della congestione a livello di rete, lo studio
di questo fenomeno può contribuire a farci comprendere meglio la causa della congestione
a livello trasporto e a farci trovare dei possibili rimedi da usare a livello di rete. A livello di
rete la congestione si riferisce principalmente a due questioni, il throughput ed il ritardo.
Quando il carico è molto inferiore rispetto alla capacità della rete, il ritardo (delay) è
minimo. Questo minimo ritardo è composto dal ritardo di propagazione e da quello di
elaborazione. Quando il carico raggiunge la capacità della rete, il ritardo aumenta
bruscamente perché ora è necessario aggiungere il ritardo di accodamento al ritardo
totale. Da notare che il ritardo diventa infinito quando il carico supera la capacità. Quando
il carico è inferiore alla capacità della rete, il throughput aumenta proporzionalmente al
carico. Ci si aspetta che il throughput resti costante dopo che il carico ha raggiunto la
capacità della rete, mentre invece diminuisce bruscamente. Ciò avviene perché quando il
throughput supera la capacità, i buffer d’attesa si riempiono e i router sono costretti a
scartare alcuni pacchetti in attesa. Il fatto che alcuni pacchetti vengano scartati non riduce
il numero dei pacchetti presenti in rete, questo perché dopo aver aspettato un certo
periodo tempo, se i pacchetti non hanno raggiunto la destinazione, i mittenti spesso
provvedono a rispedirli.
Controllo della congestione
Il controllo della congestione si riferisce alle tecniche e ai meccanismi che possono evitare
la congestione prima che avvenga oppure rimuoverla dopo che si è verificata. In generale
possiamo dividere i meccanismi per il controllo della congestione in due ampie categorie:
controllo della congestione a ciclo aperto e a ciclo chiuso (prevenzione/rimozione).
Controllo della congestione a ciclo aperto
Nel controllo della congestione a ciclo aperto vengono applicate delle politiche per
evitare la congestione prima che questa avvenga. In questi meccanismi il controllo della
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Choke packet è un pacchetto inviato da un nodo alla sorgente per informarla della
congestione. In questo metodo l’avviso parte dal router, che ha riscontrato la congestione,
e raggiunge direttamente la stazione sorgente. I nodi intermedi tramite i quali il pacchetto
ha viaggiato non vengono avvisati.
Segnalazione implicita in questa tecnica non c’è comunicazione tra il nodo e la sorgente.
La sorgente deduce che c’è congestione in un punto della rete solamente osservandone i
sintomi. Per esempio, quando una sorgente invia numerosi pacchetti e non c’è riscontro
per un po’ di tempo, una congettura plausibile è che la rete sia congestionata.
Segnalazione esplicita il nodo che ha riscontrato la congestione può inviare esplicitamente
un segnale alla sorgente o alla destinazione. Il metodo di segnalazione esplicita, tuttavia, è
diverso dal Choke packet. Nella segnalazione esplicitai il segnale viene inserito all’interno
dei pacchetti che trasportano dati in senso opposto.
Struttura di un router
In precedenza, abbiamo descritto il router come una scatola nera che accetta pacchetti in
entrata da una delle porte di input, usa una tabella d’inoltro per trovare la porta di output
e da questa invia il pacchetto. Lo scopo di questa sezione sarà quello di scoprire cosa c’è
dentro al router.
Componenti possiamo individuare quattro componenti principali: porte di input, di
output, processore di routing e switching fabric.
Porte di input
Una porta di input implementa le funzionalità del livello fisico e di collegamento del router.
I bit vengono ricostruiti a partire dal segnale ricevuto. Il datagramma viene estratto dal
frame che lo ha trasportato a livello collegamento, viene controllata la presenza di errori e
viene quindi scartato se risulta danneggiato. Se il datagramma risulta integro, è pronto per
essere processato dal livello di rete. In aggiunta a un processore del livello fisico e un
processore del livello di collegamento, la porta di input ha dei buffer per memorizzare i
pacchetti in attesa di essere veicolati alla switching fabric.
Porte di output
Una porta di output svolge le stesse funzioni di quella di input, ma in ordine inverso. Per
prima cosa i datagrammi in uscita vengono accodati, poi ogni datagramma viene
incapsulato in un frame e alla fine per mezzo del livello fisico viene tradotto in un segnale
da trasmettere.
Processore di routing
Il processore di routing implementa le funzionalità del livello di rete. L’indirizzo di
destinazione viene usato per trovare l’indirizzo del salto (hop) successivo, cioè il prossimo
apparato a cui inviare il pacchetto e il numero della porta di output da cui il datagramma
deve essere spedito. A volte ci si riferisce a tale attività come “ricerca nella tabella” in
quanto il processore di routing effettua una ricerca nella tabella d’inoltro. Nei router più
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
recenti, questa funzione del processore di routing viene implementata nelle porte di input
per semplificare e rendere più veloce il processo.
Switching fabric
Il compito più difficile all’interno di un router è spostare i datagrammi alla coda di input a
quella di output. La velocità con cui ciò viene fatto influisce sulla dimensione della coda di
input/output e sul ritardo complessivo nella consegna del datagramma. In passato,
quando un router non era nulla più di un computer dedicato a questo scopo, la memoria
del computer, o un bus, venivano usati come infrastruttura interna di comunicazione. In
pratica, la porta di input memorizzava il pacchetto nella memoria del calcolatore e quella
di output invece prendeva il pacchetto della memoria. Oggi i router usano una varietà di
switching fabric progettate per questo specifico scopo. Il tipo più semplice di switching
fabric è il crossar switch che collega n input a n output per mezzo di una griglia.
Protocolli di livello rete
in questa sezione si vedrà come il livello rete è implementato nella pila dei protocolli
TCP/IP. Attuale IPv4 e ICMPv4 nuova versione 6. Nella versione 4 il livello di rete può
essere visto come formato da un protocollo principale e da tre protocolli ausiliari. Il
protocollo principale Internet Protocol è responsabile della suddivisione in pacchetti,
dell’inoltro e della consegna dei datagrammi a livello rete. L’internet Control Message
Protocol 4, aiuta l’IP a gestire alcuni errori che possono avvenire nella consegna a livello di
rete. L’internet Group Management Protocol IGMP viene utilizzato nella gestione del
multicasting. Infine, l’Address Resolution Protocol ARP viene usato per far interagire il
livello di rete e quello di collegamento.
L’IPv4 è un protocollo inaffidabile e senza connessione, basato su datagrammi. IPv4 offre
un servizio di consegna di tipo best-effort, ovvero il protocollo fa del suo meglio per
consegnare i dati che sono stati spediti ma non offre alcuna garanzia. Con questo termine
si intende che i datagrammi IPv4 possono essere danneggiati, persi, arrivare fuori ordine o
in ritardo e possono anche generare congestione. Sarà necessario affiancare IPv4 a un
protocollo di livello trasporto che sia in grado di garantirla aggiungendo alcune
funzionalità.
Come detto in precedenza, IPv4 è un protocollo senza connessione per reti a
commutazione di pacchetto che utilizza un approccio basato su datagrammi. Questo
significa che ogni datagramma viene gestito in modo del tutto indipendente e quindi può
seguire un percorso diverso.
Ciò implica che i datagrammi inviati dalla stessa sorgente alla stessa destinazione
potrebbero arrivare fuori ordine. Inoltre, alcuni potrebbero andare persi o essere
danneggiati durante la trasmissione. Anche in questo caso IPv4 deve far affidamento su un
protocollo di livello superiore.
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Indirizzi IPv4
L’identificatore usato dal protocollo IP nella pila TCP/IP per individuare il collegamento di
ciascun dispositivo ad Internet è chiamato indirizzo Internet o IP. Un indirizzo IPv4 è un
indirizzo formato da 32 bit che definisce in modo unico e universale il collegamento di un
host o un router ad Internet.
Spazio degli indirizzi (address space)
Numero che identifica il numero totale di indirizzi utilizzati dal protocollo. Infatti, se n sono
i bit per rappresentare un indirizzo lo spazio di indirizzi vale 2^n.
Notazione
Gli indirizzi IPv4 sono rappresentabili in tre modi
1. In base due 32 bit uno o più spazi tra ogni ottetto
2. In base sedici
3. In base dieci puntato compreso tra 0 e 255
Gerarchia nell’indirizzamento
Gli indirizzi IPv4 sono composti da due parti. La prima chiamata prefisso, identifica la rete e
l’altra suffisso, identifica il nodo nella rete. Un prefisso può avere una lunghezza fissa o
variabile, viene chiamata con classi (fissa) e senza classi (variabile).
Indirizzamento con classi
IPv4 era stato progettato con prefissi di lunghezza fissa ma vista la necessità di supportare
sia reti piccole che grandi, al posto di una sola lunghezza di un prefisso ne erano state
previste tre. L’intero spazio degli indirizzi era stato diviso in cinque classi.
A. Network = 8 – il primo bit a zero quindi solo 2^7 = 128 bit
B. Network = 16 – primi due bit quindi 2^14
C. Network = 24 – 3
D. Non divisa in prefisso e suffisso ed è usata per gli indirizzi di tipo multicast (1110)2
E. Tutti gli indirizzi che iniziano con (1111)2 riservata per il futuro.
Esaurimento degli indirizzi
la ragione per cui l’indirizzamento con classi è diventato obsoleto è l’esaurimento
degli indirizzi. Siccome gli indirizzi non sono stati assegnati in modo appropriato,
Internet ha dovuto affrontare il problema dell’esaurimento degli indirizzi disponibili
per società ed individui che volevano collegarsi in rete.
Subnetting supernetting
Per mitigare il problema dell’esaurimento degli indirizzi sono state proposte due strategia.
Subnetting un blocco di classe A o B viene diviso in varie sottoreti. Ogni subnet ha un
prefisso di lunghezza maggiore rispetto alla rete originale. Il vantaggio è che se in una rete
non vengono utilizzati tutti gli indirizzi, il subnetting consente di dividere gli indirizzi
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
disponibili tra varie organizzazioni. Questa idea non ha funzionato in quanto la maggior
parte delle grandi organizzazioni non era disponibile a dividere il proprio blocco di indirizzi
per darne alcuni ad organizzazioni più piccole.
Mentre il supernetting è stato ideato per combinare numerosi blocchi di classe C in un
blocco più grande. Questa idea nella pratica non ha funzionato perché complicava il
routing dei pacchetti.
Vantaggi dell’indirizzamento con classi
Anche se l’indirizzamento con classi presentava numerosi problemi ed è diventato
obsoleto, aveva un vantaggio: una volta individuato un indirizzo IP, si poteva facilmente
risalire alla classe dell’indirizzo e, siccome la lunghezza del prefisso di ogni classe è fissa,
scoprire immediatamente la lunghezza del prefisso.
Indirizzamento senza classi
Il subnetting e il supernetting con classi non erano in grado di risolvere il problema.
Bisognava trovare una soluzione a lungo termine, sarebbe servito uno spazio degli indirizzi
più grande. Tuttavia, questa soluzione richiede necessariamente che la lunghezza degli
indirizzi IP deve essere modificato.
Una soluzione a lungo termine è l’IPv6 invece quella a breve termine è continuare ad usare
lo stesso spazio degli indirizzi ma cambiare la loro distribuzione attraverso un approccio
più equo. La suddivisione in classi è stata rimossa.
Nell’indirizzamento senza classi l’intero spazio degli indirizzi è diviso in blocchi di
lunghezza variabile. Il prefisso in un indirizzo definisce il blocco: il suffisso definisce il nodo.
Lunghezza del prefisso: notazione Slash (barra)
La prima domanda cui dobbiamo rispondere nell’indirizzamento senza classi è come
trovare la lunghezza del prefisso di un determinato indirizzo. Siccome la lunghezza del
prefisso non è più parte integrante dell’indirizzo è necessario aggiungere questa
informazione in modo separato. In questo caso la lunghezza del prefisso n viene
aggiunta all’indirizzo separata da una barra. La numerazione viene informalmente
definita notazione Slash e formalmente classless interdomanin routing (CIDR).
Estrazione delle informazioni da un indirizzo
Dato un indirizzo IP appartenente ad un blocco di indirizzi normalmente vogliamo ricavare
tre informazioni riguardo il suo blocco di appartenenza: il numero di indirizzi che
contiene, il primo indirizzo del blocco e l’ultimo.
1. Il numero di indirizzi nel blocco è dato da N = 2^32-n
2. Per trovare il primo indirizzo, teniamo invariati i primi n bit partendo da sinistra
e impostiamo a 0 tutti i bit restanti a destra.
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
3. Per trovare l’ultimo indirizzo, teniamo invariati i primi n bit partendo da sinistra
e impostiamo a 1 tutti i bit restanti a destra
Maschera dell’indirizzo (address mask)
Un altro modo per trovare il primo e l’ultimo indirizzo del blocco è usare la maschera
dell’indirizzo, cioè un numero composto da 32 bit in cui i primi n bit a sinistra sono
impostati a 1 e il resto dei bit (32-n) sono impostati a 0. Il motivo principale per utilizzare
una notazione di questo tipo è che può essere usata da un programma per calcolare in
modo efficiente le informazioni di un blocco, usando solamente tre semplici operatori sui
bit: NOT AND e OR
1. Il numero degli indirizzi nel blocco è N = NOT (maschera)+1
2. Il primo indirizzo nel blocco = (qualsiasi indirizzo del blocco) AND (maschera)
3. L’ultimo indirizzo del blocco = (Qualsiasi indirizzo nel blocco) OR (NOT(maschera))
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
un numero, chiamato magic cookie, sotto forma di un indirizzo IP, ed inserisce questo
valore nei primi 4 byte del campo opzioni del pacchetto di risposta. Quando il client legge
una risposta cerca il magic cookie nel campo opzioni del pacchetto ricevuto. Se è presente
allora i 60 byte successivi sono opzioni.
Un’opzione è composta da tre campi: un campo tag da 1 byte, un campo lunghezza da 1
byte e un campo valore di lunghezza variabile. Se il campo tag è 53 allora il campo
valore definisce uno degli 8 tipi di messaggio descritti di seguito.
Funzionamento del DHCP
1. L’host che vuole entrare in rete crea un messaggio di tipo DHCPDISCORVER per
cercare i dispositivi vicini, l’indirizzo sorgente è impostato a tutti 0 e quello
destinazione a tutti 1.
2. I server rispondono con un messaggio di tipo DHCPOFFER.
3. L’host richiedente riceve una o più notifiche e seleziona la migliore. Con il messaggio
DHCPREQUEST interpella il server per richiedere la connessione.
4. Infine, il server selezionato risponde con un messaggio di tipo DHCPACK al client
con tutte le informazioni necessarie, se il server non è più in grado di
mantenere l’offerta invia un DHCPNACK e il client deve ripetere il
procedimento.
5. Inoltre, esistono altri tre tipi di messaggio quali DHCPDECLINE, DHCPRELEASE
e DHCPINFORM.
NAT
La distribuzione degli indirizzi per mezzo degli ISP ha creato un nuovo problema. Cioè la
possibilità di espansione degli indirizzi già assegnati. Questo problema è stato risolto con
una tecnologia in grado di fornire un’associazione tra gli indirizzi privati e quelli esterni e
allo stesso tempo creare una VPN. Il Network Address Translation (NAT). Questa tecnologia
permette di utilizzare un indirizzo pubblico, con cui la rete sarà vista dall’esterno e un
indirizzo privato interno alla rete.
Traduzione dell’indirizzo
Tutti i pacchetti in uscita dalla rete privata passano tramite il router NAT, che sostituisce
l’indirizzo IP sorgente presente nel datagramma con l’indirizzo NAT globale del router.
Viceversa, tutti i pacchetti in entrata avranno l’indirizzo pubblico del NAT che dovrà essere
cambiato con l’indirizzo privato appropriato.
Tabella di traduzione
Il router NAT riesce a tradurre i pacchetti in entrata verso l’host destinarlo con una tabella
di traduzione.
Utilizzo di un solo indirizzo IP: Nella sua forma più semplice, una tabella di
traduzione è composta da due sole colonne: l’indirizzo privato e l’indirizzo esterno.
Quando il router traduce l’indirizzo sorgente del datagramma in uscita prende
anche nota dell’indirizzo destinazione (dove sta andando). Quando torna la
risposta
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
il router usa l’indirizzo sorgente del datagramma e lo usa per trovare l’indirizzo
privato corrispondente.
Utilizzo di un gruppo di indirizzi IP: l’utilizzo di un solo indirizzo globale da parte del
router NAT ha la forte limitazione di consentire l’accesso a un determinato host
esterno a un solo host della rete privata per volta. Per eliminare questa limitazione
il router NAT può usare un gruppo di indirizzi globali, in questo caso più host
possono comunicare con l’esterno.
Utilizzo degli indirizzi IP e dei numeri di porta: per permettere un rapporto più
vasto tra gli host della rete privata e i programmi server esterni possiamo
aggiungere più informazioni alla tabella di traduzione. Per esempio, possiamo usare
la combinazione dell’indirizzo IP sorgente con l’indirizzo della porta di destinazione.
Affinché tale traduzione funzioni, gli indirizzi effimeri delle porte private devono
essere scelti in modo univoco dal router NAT.
Inoltro dei datagrammi IP
Scopriamo il ruolo degli indirizzi IP nel forwarding.
Inoltro basato sull’indirizzo di destinazione
Questo è l’approccio tradizionale e prevalente. L’host o router che deve effettuare il
forwarding deve avere una tabella d’inoltro. Quando un host ha un datagramma da inviare
o un router ha ricevuto un datagramma da inoltrare, esso fa riferimento a questa tabella
per trovare l’hop successivo.
L’intero spazio degli indirizzi è un’unica entità.
Una tabella d’inoltro per l’indirizzamento senza classi deve includere quattro informazioni:
la maschera, l’indirizzo di rete, il numero dell’interfaccia e l’indirizzo IP del router
successivo.
Aggregazione degli indirizzi
Quando viene utilizzato l’indirizzamento con classi, nella tabella d’inoltro è presente
solamente una riga per ciascuna rete esterna all’organizzazione a cui appartiene il router.
Invece quando non si fa uso di classi si assiste ad un aumento del numero delle righe nella
tabella d’inoltro, che aumentano i tempi di controllo nella tabella, per attenuare questo
problema è stato ideato il meccanismo di aggregazione degli indirizzi. Un range di indirizzi
fa riferimenti ad un unico indirizzo.
Corrispondenza con la maschera più lunga
Se un’organizzazione non è geograficamente vicina si può comunque pensare di aggregare
degli indirizzi poiché quest’ultima tecnica sfrutta il principio della corrispondenza con la
maschera più lunga. Questo principio afferma che la tabella d’inoltro viene ordinata dalla
maschera più lunga alla maschera più corta.
Routing gerarchico
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Routing geografico
Per diminuire ulteriormente la dimensione delle tabelle d’inoltro, l’instradamento
gerarchico può tener conto anche della suddivisione geografica. In questo caso l’intero
spazio degli indirizzi deve essere suddiviso in pochi grandi blocchi, ciascuno di questi
assegnato ad un diverso continente.
ICMPv4
L’IPv4 non implementa alcun meccanismo per segnalare gli errori o correggerli o per
effettuare richieste sullo stato di un sistema remoto. L’internet control message protocol
versione 4 è stato creato per porre rimedio a queste carenze. I messaggi ICMP vengono
incapsulati all’interno di datagrammi IP prima di essere passati al livello inferiore.
Messaggi
i messaggi ICMPv4 sono suddivisi in due ampie categorie:
Messaggi di segnalazione errori; riportano problemi che un router o un
host possono incontrare quando elaborano un datagramma IP.
Messaggi di richiesta; permettono ad un host o ad un amministratore di rete
di chiedere informazioni ad un router o ad un host.
Formato dei messaggi
Un messaggio ICMPv4 ha un’intestazione di 8byte e una sezione dati di lunghezza variabile.
4 byte comuni l’ultimo campo comune è quello di checksum. Il resto è specifico per ogni
messaggio.
Messaggi di segnalazione errori
Poiché IP è un protocollo non affidabile, una delle maggiori responsabilità di ICMP è quella
di riportare (non correggere) alcuni errori che possono verificarsi durante l’elaborazione
dei datagrammi IP. I messaggi di errore sono sempre inviati alla sorgente originale poiché
le sole informazioni presenti nel datagramma sono gli indirizzi IP. ICMP utilizza l’indirizzi IP
della sorgente per inviare un messaggio di errore all’host mittente. ICMP segue alcune
regole:
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Conteggio all’infinito
Un problema con il routing basato su vettore distanza è che i decrementi di costo si
diffondono rapidamente, mentre gli aumenti di costo si propagano lentamente. Un
problema che spesso capita chiamato Conteggio all’infinito, cioè servono molti
aggiornamenti prima che il costo di un collegamento rotto venga registrato come infinito
da tutti i router
Ciclo a due nodi
Un esempio di conteggio all’infinito è il problema del ciclo a due nodi. Prendiamo tre nodi
A, B e X. All’inizio sia A che B sanno come raggiungere X. Ma si guasta il collegamento tra A
e X. Di conseguenza, il nodo A modifica la sua tabella. Se A invia immediatamente la sua
tabella a B allora non c’è problema. Tuttavia, se B invia la sua tabella d’inoltro ad A prima
di ricevere quella di A, il sistema diventa instabile. Il nodo A riceve l’aggiornamento e,
supponendo che B abbia trovato un modo per raggiungere X, aggiorna immediatamente la
sua tabella d’inoltro. In questo periodo di tempo, fin quando A e B non si accorgono che X
non è raggiungibile, i pacchetti rimbalzano tra A e B.
Possibili soluzioni:
Split horizon: Con questa strategia invece di inviare la tabella attraverso ogni
interfaccia, ciascun nodo invia solo una parte della sua tabella tramite le sue
varie interfacce.
Poisoned reverse: l’utilizzo dello Split horizon ha un effetto collaterale.
Normalmente il protocollo che implementa l’algoritmo di routing utilizza un
timer: se per una certa quantità di tempo non ci sono novità circa un percorso, il
nodo lo elimina dalla sua tabella.
Instabilità a tre nodi
L’instabilità a due nodi si può evitare utilizzando la strategia split horizon combinata
all’inversione avvelenata. Tuttavia, se l’instabilità è tra tre nodi, la stabilità non può essere
garantita.
Routing a stato del collegamento
Un algoritmo che deriva dagli alberi a costo minimo e dalle tabelle d’inoltro è il routing a
stato del collegamento Link-State(LS) routing.
Questo metodo utilizza il termine link-state per definire le caratteristiche di un
collegamento che rappresenta una rete. In questo algoritmo, il costo associato ad un arco
definisce lo stato del collegamento. I collegamenti con costi inferiori sono preferibili
rispetto a quelli con costi superiori.
Link-State Database(LSDB)
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Per creare un albero a costo minimo utilizzando questo metodo ogni nodo deve avere una
mappa completa della rete. La raccolta di stati per tutti i collegamenti viene chiamata Link-
State Database (LSDB). Esso è unico per l’intera rete, ma ogni nodo deve averne un
duplicato per poter essere in grado di creare l’albero a costo minimo.
Come può ogni nodo creare la sua copia del LSDB che contenga le informazioni necessarie
sull’intera rete? Ciò può essere fatto tramite un procedimento chiamato flooding
(inondazione). ogni nodo può inviare dei messaggi di benvenuto a tutti i suoi vicini per
raccogliere una coppia di informazioni circa ogni suo vicino: l’identità del nodo e il costo
del collegamento. La combinazione di queste due informazioni viene chiamata pacchetto
LS (Linked-State Packet LSP). L’LSP viene inviato attraverso ogni interfaccia del nodo.
Quando un nodo riceve un LSP da una delle sue interfacce e confronta il nuovo LSP con
un’eventuale vecchia copia che potrebbe già avere. Se l’LSP appena arrivato è più vecchio
di quello che ha già, l’LSP viene scartato. Se è più recente o è il primo ricevuto, il nodo
scarta il vecchio LSP e conserva quello che ha appena ricevuto. A questo punto il nodo invia
una copia dell’LSP da ogni sua interfaccia ad esclusione di quella da cui è arrivato il
pacchetto. Questo garantisce che il flooding si interrompa da qualche parte nella rete.
Dopo aver ricevuto tutti i nuovi LSP, ogni nodo è in grado di creare la sua copia dell’LSDB
globale.
Path-vector routing
Sia il routing a stato del collegamento che a vettore distanza si basano sul costo minimo.
Tuttavia, ci sono dei casi in cui il costo non è l’obbiettivo prioritario. Ad esempio, se nella
rete ci sono dei router tramite i quali un mittente non vuole che passino i suoi pacchetti. Il
routing a costo minimo non può evitare che un pacchetto transiti in un’area se tale area si
trova lungo il percorso a costo minimo. Oltre alla sicurezza e alla protezione, ci sono delle
occasioni, di cui parleremo nella prossima sezione, in cui il mero scopo del routing è la
raggiungibilità.
Per soddisfare queste richieste è stato ideato un terzo algoritmo di routing, chiamato
pathvector(PV) routing (routing a vettore-distanza).
Il routing PV non ha gli svantaggi del routing LS o DV sopra descritti, in quanto non si basa
sul routing a costo minimo. Il percorso migliore viene determinato dalla sorgente
utilizzando la politica che essa stessa decide di imporre al percorso.
Alberi di copertura
nel Path-vector routing, il percorso da una sorgente a tutte le destinazioni viene
determinato dal miglior albero di copertura (spanning tree). Esso, tuttavia, non è l’albero a
costo minimo bensì è quello determinato dalla sorgente quando impone la propria politica.
Se ci sono più percorsi per la destinazione, la sorgente può scegliere il percorso che
corrisponde meglio a tale politica. Una sorgente è libera di applicare politiche multiple allo
stesso tempo. Una delle politiche più comuni ha lo scopo di minimizzare il numero di nodi
visitati. Un’altra è quella di imporre che i pacchetti non passino mai da alcuni nodi.
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
AS stub. Un solo collegamento verso un AS. Il traffico dati può essere generato da
o destinato ad un AS stub ma non può accadere che i dati transitino attraverso
l’AS.
AS multihomed. Più connessioni con altri AS, ma non consente al traffico dei dati
di passare attraverso di esso.
AS di transito. Un AS di transito è collegato a vari AS e consente anche il transito
del traffico dati.
Routing information Protocol (RIP)
Protocollo di routing intra-dominio più ampiamente utilizzati deriva dal vettore distanza.
Conto dei salti(hop)
In RIP, ogni router implementa l’algoritmo a vettore distanza ma con qualche modifica.
Siccome un router in un AS deve sapere come inoltrare un pacchetto alle diverse sottoreti
presenti nell’AS, i router RIP rendono noto il costo per raggiungere le diverse sottoreti
invece dei costi per raggiungere i nodi del grafo. In altre parole, il costo viene definito tra
un router e la rete nella quale si trova l’host di destinazione.
La gestione dei costi viene gestita in modo molto semplice ed indipendentemente da
fattori quali le prestazioni dei router e dei collegamenti, come ad esempio: ritardi,
ampiezza della banda ecc. Quindi il costo viene definito come il numero di salti (hop), cioè
il numero di sottoreti, che un pacchetto deve visitare per andare dal router sorgente
all’host di destinazione.
Tabelle d’inoltro
In un RIP, una tabella d’inoltro è formata da tre colonne: nella prima c’è l’indirizzo della
rete di destinazione, nella seconda l’indirizzo del prossimo router al quale il pacchetto deve
essere inoltrato e nella terza il costo (numero di hop) per raggiungere la rete di
destinazione.
Implementazione di RIP
Il RIP è implementato per mezzo di un processo demone (sempre attivo) che ascolta sulla
porta nota 520 UDP. Anche se RIP è un protocollo di routing, usato per consentire a IP di
instradare i datagrammi attraverso gli AS, i messaggi RIP vengono incapsulati all’interno di
datagrammi utente UDP, che a loro volta sono incapsulati in datagrammi IP. In altre parole,
RIP lavora a livello di applicazione ma crea delle tabelle d’inoltro per IP.
Messaggi RIP
RIP si basa su una coppia di processi, un client e un server, e sul loro scambio di messaggi.
Una parte del messaggio che chiamiamo voce (entry), può essere sollecitato o meno. Un
messaggio di risposta sollecitato viene inviato solo come risposta a un messaggio di
richiesta. Esso contiene informazioni circa la destinazione specificata nel messaggio di
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Aree
L’OSPF è stato progettato per poter gestire il routing AS di tutte le dimensioni. Tuttavia, la
costruzione degli alberi a percorso minimo nell’OSPF richiede che tutti i router inondino
l’intero AS con i loro LSP per creare l’LSDB globale. In altre parole, tutti i router devono
inviare il loro LSP a tutti gli altri router dell’AS. Anche se ciò non è un problema negli AS
piccoli, potrebbe creare un enorme volume di traffico in AS di medie o grandi dimensioni.
Per evitare ciò, l’AS può essere diviso in settori più piccoli chiamati aree. Ogni area è un
piccolo dominio indipendente per il flooding degli LSP.
Tuttavia, ogni router che si trova in un’area ha bisogno di conoscere lo stato dei
collegamenti non solo dell’area ma anche delle altre aree. Per tale ragione una delle aree
dell’AS viene definita area dorsale (backbone area), il cui compito è proprio quello di
collegare tra loro le varie aree. I router nell’area dorsale hanno la responsabilità di
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
raccogliere le informazioni dalle varie aree e comunicarle. In questo modo un router che si
trova in un’area può ricevere tutti gli LSP generati nelle altre aree. Per implementare la
comunicazione, ogni area è contraddistinta da un identificatore, e l’identificatore della
dorsale è lo zero.
Algoritmo OSPF
Esso è basato sull’algoritmo di instradamento a stato del collegamento di cui abbiamo
parlato in precedenza. L’implementazione richiede qualche piccola modifica all’algoritmo e
la gestione di alcune funzionalità aggiuntive.
Dopo che ogni router ha creato l’albero a percorso minimo, l’algoritmo deve
usarlo per creare la corrispondente tabella d’inoltro.
L’implementazione deve gestire l’invio e la ricezione dei vari messaggi OSPF
descritti in precedenza.
Border Gateway Protocol Versione 4(BGP4)
Unico protocollo di routing inter-dominio ora utilizzato in internet. Fatto su misura per
fornire informazioni sulla raggiungibilità delle reti in internet.
Introduzione
Il BGP4, è un protocollo complesso. Ogni router all’interno degli AS sa come raggiungere
tutte le reti che si trovano nel suo AS, ma non sa come raggiungere una rete che si trova in
un altro AS.
Per permettere ad ogni router di instradare correttamente i pacchetti, qualsiasi sia la
destinazione, è necessario installare su tutti i router di confine (border router) dell’AS una
variante del BGP chiamata BGP esterno (external BGP, eBGP).
Tutti i router dovranno invece usare la seconda variante del BGP, chiamata BGP interno
(internal BGP, iBGP). Questo significa che i router di confine devono eseguire ben tre
protocolli d’instradamento, e che tutti gli altri router ne eseguono due.
BGP esterno (eBGP). Protocollo punto-punto. Quando il software BGP viene
installato in due router, essi cercano di creare una connessione TCP utilizzando la
porta nota 179. In altre parole, si forma una coppia client/server che continua a
scambiarsi messaggi. I due router che eseguono i processi BGP vengono chiamati
peer BGP oppure speaker BGP. I messaggi scambiati durante le tre sessioni eBGP
servono per indicare ad alcuni router come instradare i pacchetti destinati ad
alcune reti nella internet, ma le informazioni di raggiungibilità non sono complete.
Per esempio: alcuni router di confine non sanno come instradare un pacchetto
destinato ad un AS che non è un vicino, nessuno dei router non di confine sa come
instradare un pacchetto destinato alle reti che si trovano in altri AS.
BGP interno (iBGP). Il protocollo iBGP crea una sessione tra ogni possibile coppia di
router all’interno di un AS.
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Messaggi
Il protocollo BGP usa quattro tipi di messaggi per la comunicazione tra speaker,
sia attraverso gli AS che all’interno di un AS: oper(apertura),
update(aggiornamento), keepalive(mantenimento in vita) e notification(notifica).
Messaggio open, per collegarsi ai router vicini, un router BGP apre una
connessione TCP con un vicino ed invia un messaggio di questo tipo.
Messaggio update. Questi messaggi sono usati dai router per rimuovere le
destinazioni che erano state precedentemente annunciate, per annunciare
il percorso verso una nuova destinazione, o entrambe le cose.
Messaggio di keepalive. I peer BGP si scambiano, a intervalli regolari di tempo, dei
messaggi per verificare che il peer dall’altro lato della connessione sia ancora
presente e funzionante.
Messaggio notification. Un messaggio di notifica viene inviato da un router
ogni volta che una condizione d’errore viene rilevata oppure se un router
desidera chiudere la sessione
Prestazioni
Le prestazioni del BGP sono paragonabili a quelle del RIP. Gli speaker BGP si scambiano
molti messaggi per creare le tabelle d’inoltro, ma il BGP è esente da cicli e conteggio
all’infinito. Condivide con RIP le stesse debolezze.
IPv6
L’esaurimento degli indirizzi e alcune limitazioni di IPv4, già nei primi anni 90 hanno
portato allo sviluppo di una nuova versione del protocollo. Nata con lo scopo di aumentare
lo spazio degli indirizzi rispetto a IPv4.
Spazio degli indirizzi di dimensione maggiore. 128bit prima 32.
Miglior formato dell’intestazione. Nuovo formato per l’intestazione dei
datagrammi. Nell’IPv6 le opzioni sono separate dall’intestazione di base e inserite
quando necessario, tra l’intestazione di base e i dati.
Nuove opzioni.
Possibilità di estensione.
Supporto per l’allocazione delle risorse. In IPv6 è stato rimosso il campo tipo del
servizio, al suo posto sono stati aggiunti nuovi campi, classe di traffico ed
etichetta di flusso.
Maggiore sicurezza.
L’adozione di IPv6 è stata rallentato grazie a tre rimedi a breve termine: indirizzamento
senza classi, DHCP e NAT.
Concetto di flusso e priorità
Il protocollo IP era inizialmente progettato come protocollo senza connessione. Tuttavia,
soprattutto a causa di alcune tecnologie di livello inferiore, c’è una certa tendenza ad usare
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
IP come protocollo orientato alla connessione. per questo motivo, nella versione 6 è stata
aggiunta un’etichetta di flusso.
Ovviamente questo è possibile solamente quando i router offrono il supporto per questa
modalità. Un router che supporta la gestione delle etichette di flusso possiede una tabella
delle etichette di flusso.
Nella sua forma più semplice un’etichetta di flusso può essere utilizzata per accelerare
l’elaborazione dei datagrammi da parte del router. Nella sua forma più sofisticata,
un’etichetta di flusso può essere usata per fornire un miglio supporto alla trasmissione di
audio e video in tempo reale.
Frammentazione e riassemblaggio
In IPv6 la frammentazione e il riassemblaggio esistono ancora ma rispetto ad IPv4 c’è una
differenza fondamentale. I datagrammi IPv6 possono essere frammentati solo dalla
sorgente e non dai router lungo il percorso e il riassemblaggio avviene solo alla
destinazione.
Quando un router riceve un datagramma, controlla la sua dimensione e lo scarta nel caso
sia maggiore rispetto a quanto consentito dalla MTU della rete in cui deve inoltrarlo e
inviare un messaggio di errore ICMPv6.
Spazio degli indirizzi
Lo spazio degli indirizzi IPv6 contiene 2^128 indirizzi ed è molto più grande di IPv4
precisamente 2^96 volte.
Tre tipi di indirizzo
In IPv6, un indirizzo di destinazione può appartenere a una di queste categorie: unicast,
anycast e multicast.
Un indirizzo di rete unicast definisce una singola interfaccia. Un indirizzo anycast definisce
un gruppo di computer che condividono un singolo datagramma. Anche un indirizzo
multicast definisce un gruppo di computer, tuttavia, c’è una grossa differenza tra anycast e
multicast. Nel multicast ciascun membro del gruppo riceve una copia del datagramma, nel
caso dell’anycast solo uno dei membri del gruppo lo riceve.
Indirizzi unicast globali
il blocco che è usato per la comunicazione unicast tra due host in internet è chiamato
blocco di indirizzi unicast globali. La dimensione di questo blocco è 2^125. Un indirizzo di
questo blocco è diviso in tre parti.
Prefisso di routing globale formato da n bit, identificatore sottorete di m bit e un
identificatore d’interfaccia di q bit.
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Codifica
La ridondanza può essere ottenuta applicando vari schemi di codifica. Il mittente aggiunge
dei bit tramite un processo che mette in relazione i bit ridondanti con i dati reali. Il
ricevente controlla la relazione che esiste tra questi due gruppi di bit per rilevare gli
eventuali errori. La proporzione tra la quantità di bit ridondanti rispetto a quella di dati, e
la robustezza del processo, sono fattori molto importanti in ogni schema di codifica. È
possibile dividere gli schemi di codifica in due ampie categorie: codifica a blocchi e
convoluzionale.
Codice di controllo della parità
Il codice di rilevamento errori più noto è il codice di controllo della parità (parity-check
code). Il bit aggiuntivo, chiamato bit di parità, viene selezionato in modo da rendere pari il
numero totale di 1 all’interno della codeword.
Checksum
I checksum (somme di controllo) sono tecniche di correzione degli errori che possono
essere applicate ai messaggi di qualsiasi lunghezza.
Alla sorgente il messaggio è prima di tutto diviso in unità formate da m bit ciascuna. Il
generatore crea quindi una nuova unità addizionale che è il checksum vero e proprio e che
viene spedita assieme al messaggio. Il destinatario calcola nuovamente il checksum, ma
questa volta sia sul messaggio che sull’unità addizionale. Se il checksum calcolato dal
ricevente è composto solamente da 0 allora il messaggio viene accettato altrimenti viene
scartato.
Protocolli ad accesso multiplo
Il livello collegamento è diviso in due sotto-livelli: Data-Link Control DLC e Media Access
Control MAC.
Quando viene usato un collegamento dedicato, come una linea telefonica, è sufficiente
utilizzare un protocollo di DLC per gestire il trasferimento dei dati tra le due estremità del
collegamento. Un esempio sono le linee ADSL dove viene utilizzato il Point-to-Point
Protocol PPP. Nel caso invece si stia condividendo con altri utenti un mezzo trasmissivo
come ad esempio un cavo o l’aria, è necessario un protocollo aggiuntivo sia per la gestione
della condivisione che per il trasferimento dati.
Quando i nodi o le stazioni utilizzano un collegamento comune, chiamato
collegamento multi-punto o broadcast, è necessario un protocollo di accesso multiplo
per coordinare l’accesso al collegamento.
La situazione è molto simile per le reti multi-punto. Bisogna accertarsi che ogni nodo
abbia la possibilità di accedere al canale. In questo caso, il primo obbiettivo è evitare le
collisioni tra i nodi
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Accesso casuale
Nell’accesso casuale (random access) nessuna stazione è superiore alle altre e nessuna ha
il controllo sulle altre. Ogni volta che una stazione ha dei dati da inviare, usa una
procedura definita dal protocollo per decidere se spedire o se attendere.
Tale decisione dipende dallo stato del mezzo trasmissivo, inattivo o occupato.
Due caratteristiche danno il nome a questo metodo. Primo, non c’è un tempo
programmato nel quale la stazione deve trasmettere, la trasmissione tra le stazioni è
casuale. Ecco perché questi metodi vengono chiamati ad accesso casuale. Secondo,
nessuna regola specifica quale sarà la prossima stazione a trasmettere. Esse competono
una con l’altra per accedere al mezzo trasmissivo (contesa).
Vediamo tutti i protocolli a partire dall’ALOHA.
ALOHA
il primo metodo ad accesso casuale, è stato sviluppato all’università delle Hawaii negli anni
70. È stato ideato per l’uso in una LAN radio.
Dato che il mezzo trasmissivo è condiviso tra tutte le stazioni, è ovvio che ci possono essere
delle collisioni. Quando una stazione invia dei dati, un’altra può tentare di fare la stessa
cosa contemporaneamente. In questo caso avviene una collisione e i dati sono alterati.
ALOHA puro
La versione originale. Ogni stazione può inviare un frame tutte le volte che ha qualcosa da
inviare (accesso multiplo). Tuttavia, siccome il canale da condividere con le altre stazioni
è unico, possono avvenire collisioni tra i frame delle diverse stazioni.
Il protocollo ALOHA si basa sull’invio di un riscontro da parte del ricevete. Quando una
stazione invia un frame, si aspetta che il ricevente invii un riscontro. Se esso non arriva
dopo un certo periodo di tempo, la stazione ritrasmette il frame, quando il periodo di
timeout è trascorso, ogni stazione aspetta un ulteriore periodo di tempo di durata casuale
prima di trasmettere nuovamente il suo frame, questo lasso di tempo viene chiamato
tempo di back-off.
L’ALOHA puro prevede un secondo metodo per evitare che i frame ritrasmetti
congestionino il canale. Dopo un numero massimo di tentativi di ritrasmissione, una
stazione deve interrompere i suoi tentativi e provare solamente più tardi.
Tempo di vulnerabilità
Tempo durante il quale c’è la possibilità che avvengano collisioni.
Frame di lunghezza fissa che impiega Tft secondi per essere inviato.
Tempo di vulnerabilità di ALOHA puro = 2 x Tft.
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
In questo metodo una stazione, durante l’invio di un frame, continua a controllare il mezzo
trasmissivo per verificare se la trasmissione ha avuto successo. Se è così la trasmissione è
finita, in caso contrario (collisione) deve rinviare il frame.
CSMA/CA
Una variante del metodo CSMA è il Carrier Sense Multiple Access with Collision Avoidance,
che si usa nelle LAN wireless.
Accesso controllato
Nell’accesso controllato, le stazioni prima di trasmettere si accordano per determinare
quale di esse ne ha il diritto. Una stazione non può inviare dati senza prima essere stata
autorizzata dalle altre. Usualmente vengono usati tre meccanismi ad accesso controllato:
la prenotazione (reservation), il polling ed il passaggio del token (token passing).
Nel caso dei meccanismi basati su prenotazione, come dice il nome, ogni stazione prima di
inviare dati deve effettuare una prenotazione.
Nel caso del polling, dove una delle stazioni nella rete è designata come stazione primaria
e tutte le altre stazioni sono definite come secondarie. Essa è l’unica a controllare il mezzo
trasmissivo, tutte le altre non possono far altro che seguire le istruzioni impartite dalla
stazione primaria. Questo significa che è la stazione primaria a determinare chi accederà al
canale.
Nel passaggio del token le stazioni vengono organizzate logicamente sotto forma di anello.
Questo significa che ogni stazione ha un predecessore e un successore nell’anello. Per
determinare quale delle stazioni ha il diritto di accedere al mezzo trasmissivo si usa un
particolare pacchetto chiamato token. Alla stazione che detiene il token è permesso
trasmettere i propri dati, quando avrà finito il token passerà alla stazione successiva
dell’anello.
Indirizzamento a livello di collegamento
In una rete senza connessione come internet non è possibile far sì che un datagramma raggiunga la sua
destinazione solamente usando gli indirizzi IP. Poiché essi definisco i due estremi del percorso ma non
il percorso stesso.
Un indirizzo di livello collegamento è spesso chiamato anche indirizzo fisico oppure MAC. I collegamenti
sono ovviamente controllati dal livello di collegamento e utilizzano indirizzi di questo livello. Quando un
datagramma passa dal livello di rete al livello di collegamento, esso viene racchiuso all’interno di un frame e
viene aggiunta un’intestazione che contiene due indirizzi di livello collegamento. Questi due indirizzi
vengono cambiati ogni volta che il frame passa da un collegamento ad un altro.
Ogni router, tranne l’ultimo, nel percorso tra sorgente e destinazione ricava l’indirizzo IP del router
successivo utilizzando la sua tabella d’inoltro.
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
L’ARP serve per avere l’indirizzo di collegamento del nodo successivo. L’ARP accetta in input un indirizzo IP,
individua l’indirizzo di collegamento corrispondente e lo passa al livello di collegamento. Ogni volta che un
host o un router deve trovare l’indirizzo di collegamento di un altro host o router che si trova all’interno
della sua rete, invia un pacchetto di richiesta ARP che comprende l’indirizzo di collegamento, l’indirizzo IP
del mittente e l’indirizzo IP del ricevente. Siccome il mittente non conosce ancora l’indirizzo di
collegamento del ricevente, la richiesta viene trasmessa usando un broadcast a livello di collegamento.
Ogni host o router nella rete locale riceve ed elabora il pacchetto di richiesta ARP, ma solo il ricevente
designato riconosce il suo indirizzo IP e restituisce un pacchetto di risposta ARP che contiene i suoi indirizzi
IP e restituisce un pacchetto di risposta ARP che contiene i suoi indirizzi IP e di collegamento.
Nonostante una LAN possa essere utilizzata per collegare tra di loro vari computer, per condividere risorse,
la maggior parte delle LAN oggi non sono reti isolate bensì sono collegate a WAN oppure direttamente a
Internet.
Con il passare del tempo quasi tutte le tecnologie per la creazione di LAN sono scomparse dal mercato, con
una sola eccezione, Ethernet.
Ethernet Standard
In questa parte si fa riferimento alla tecnologia Ethernet originale (10Mbps).
Ethernet fornisce un servizio senza connessione, questo significa che ogni frame inviato è indipendente dal
frame precedente e dal successivo. In Ethernet non c’è alcuna fase di apertura o chiusura della
connessione, il mittente si limita ad inviare un frame ogni volta che ne ha uno pronto, indipendentemente
dal fatto che il destinatario sia pronto o meno a riceverlo. L’inaffidabilità di Ethernet è pari a quella di IP e
UDP. Se un frame viene danneggiato durante la trasmissione il ricevente riscontra il danneggiamento e lo
scarta. Nel caso in cui un frame venga scartato non ci sarà nessun avviso.
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Ethernet impone delle restrizioni sulla lunghezza minima dei frame e su quella massima. La restrizione sulla
lunghezza minima è necessaria per il corretto funzionamento del meccanismo CSMA/CD. Un frame
Ethernet deve avere una lunghezza minima di 512bit (64 byte).
Parte di questa lunghezza è relativa all’intestazione e al trailer (parte di frame che segue il campo dati). La
lunghezza minima dei dati che il livello superiore deve fornire sono 46 byte. Lo standard Ethernet definisce
la lunghezza massima a 1518 byte meno 18 del trailer 1500.
Quando gli indirizzi Ethernet vengono trasmessi, la loro codifica è diversa rispetto a come vengono
rappresentati quando vengono scritti. Infatti, gli indirizzi vengono trasmessi da sinistra a destra, ma per
ciascun byte il bit meno significativo viene inviato per primo e quello più significativo per ultimo. Grazie a
questo semplice meccanismo il ricevente è in grado di capire già dal primo bit se il frame che sta ricevendo
è unicast o multicast.
La tecnologia Ethernet Standard utilizza un cavo coassiale o una serie di doppini intrecciati. La topologia
della rete prevede un hub al centro della stella.
Nell’Ethernet Standard la trasmissione è sempre broadcast, indipendentemente dal fatto che si tratti di
frame con destinazione unicast, multicast o broadcast. Nella topologia a bus, quando la stazione A invia un
frame alla stazione B, tutte le stazioni lo ricevono. Nella topologia a stella quando la stazione A invia un
frame alla stazione B, lo riceverà l’hub. Siccome gli hub sono apparati del tutto passivi, non verificano
l’indirizzo di destinazione del frame ma si limitano a rigenerare il segnale dei bit e rinviare il frame a tutte le
stazioni, ad eccezione di quella da cui l’hanno ricevuto.
Metodo di accesso
Dato che Ethernet Standard utilizza un approccio broadcast, era necessario implementare un metodo di
accesso al mezzo trasmissivo condiviso. La modalità usata dall’Ethernet Standard era quella del CSMA/CD.
L’efficienza di Ethernet è definita come il rapporto tra il tempo utilizzato da una stazione per inviare i dati e
il tempo in cui il mezzo trasmissivo è occupato da quella stazione.
Metodo di accesso
È bene ricordare che il funzionamento corrette del CSMA/CD dipende dalla velocità di trasmissione, dalla
dimensione minima del frame è quindi necessario modificare la lunghezza massima della rete.
Se si vuole mantenere inalterata la dimensione minima del frame è quindi necessario modificare la
lunghezza massima della rete. Questo è possibile con due diverse soluzioni.
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
1. Abbandonare la topologia a bus, utilizzare un hub passivo con una topologia a stella, ma fissare
la dimensione massima della rete a 250 metri invece dei 2500.
2. Usare un commutatore di livello collegamento, detto anche switch dotato di buffer per
memorizzare i frame e una connessione full-duplex per ciascun host. in questo modo, in pratica, il
mezzo trasmissivo è privato per ciascun host e non c’è alcuna ragione per usare il CSMA/CD, dal
momento che gli host non sono più in competizione tra loro per accedere al mezzo trasmissivo.
Lo switch riceve un frame da un host sorgente e lo memorizza nel buffer in attesa di elaborazione.
Successivamente verifica l’indirizzo di destinazione e invia il frame attraverso l’interfaccia
corrispondente.
Autonegoziazione
Una nuova funzionalità presente in Fast Ethernet è chiamata Autonegoziazione. È importante perché
permette a dispositivi con caratteristiche differenti di interoperare.
Gigabit Ethernet
Il bisogno di velocità maggiori ha portato alla progettazione di gigabit Ethernet. La topologia delle reti
Gigabit Ethernet prevede la presenza di uno switch, per ogni porta, prevede la presenza di buffer dove i
frame vengono memorizzati prima di essere trasmessi.
10-Gigabit Ethernet
Negli ultimi anni è stata predisposta un’ulteriore revisione di Ethernet per l’uso nelle MAN. L’idea alla base
in questo caso è quella di estendere la tecnologia, la velocità di trasferimento dei dati e la distanza
massima di copertura affinché Ethernet possa essere usata sia come LAN che come MAN, quindi su aree
decisamente più vaste che in passato.
LAN virtuali
Una stazione è considerata parte di una LAN se ne fa fisicamente parte. Che cosa accade se occorre un
collegamento virtuale tra due stazioni che appartengono a due LAN fisiche diverse? In maniera generale
possiamo definire una Virtual Local Area Network come una rete locale configurata per mezzo del software.
Standard IEEE
Nel 1996 il sottocomitato IEEE 802.1 ha approvato uno standard chiamato 802.1Q che indica come devono
essere gestite le VLAN basate su tecnologia Ethernet.
Vantaggi
Riduzione del costo e del tempo
Le VLAN possono ridurre drasticamente il costo di migrazione delle stazioni da un gruppo ad un altro.
Sicurezza
Le VLAN spesso migliorano il livello di sicurezza delle LAN. Le stazioni che appartengono allo stesso gruppo
possono inviare pacchetti broadcast con la certezza che le stazioni di altri gruppi non ricevano questi
pacchetti.
Svantaggi
Gli unici svantaggi presenti nell’uso delle VLAN sono una maggiore complessità di configurazione e gestione
rispetto alla creazione di LAN.
Reti punto-punto
Alcune reti punto-punto, come quelle telefoniche e le DLS, sono usate per fornire agli utenti l’accesso a
internet. Siccome queste reti usano un collegamento dedicato tra due dispositivi, esse non utilizzano il
controllo di accesso al mezzo condiviso, ma protocolli dedicati come il PPP.
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Il bisogno di comunicare dati digitali ha portato all’invenzione dei model dial-up. Il termine modem è una
parola composta che si riferisce alle due entità funzionali che compongono il dispositivo. Un modulatore e
un demodulatore di segnali. Il modulatore genera un segnale analogico a partire dai dati digitali. Un
demodulatore invece ottiene nuovamente il segnale digitale a partire dal segnale modulato. Affinché la
trasmissione possa avvenire, ovviamente sia l’utente che l’ISP devono installare un modem, on un
dispositivo analogo.
Uno dei vantaggi dell’ADSL è che consente all’abbonato di usare il canale voce e il canale dati
contemporaneamente.
Dispositivi di interconnessione
È raro trovare degli host e delle reti che operano in maniera isolata; è molto più comune utilizzare dei
dispositivi di interconnessione per collegare gli host e creare una rete, e per collegare le reti tra di loro
creando una internet. A questo scopo vengono usati i dispositivi di interconnessione, dispositivi che
possono operare a diversi livelli della pila dei protocolli internet. In questo testo si vedranno tre tipi di
dispositivi di interconnessione:
i repeater o hub (1° livello) , gli switch (2° livello) di livello collegamento e i router (3° livello).
Repeater e hub
Un repeater è un dispositivo che opera soltanto a livello fisico. I segnali che trasportano informazioni
all’interno di una rete possono viaggiare per una distanza ben definita prima che l’attenuazione del segnale
metta a repentaglio l’integrità dei dati. Un repeater riceve un segnale e, prima che esso diventi troppo
debole o danneggiato, rigenera e risincronizza la sequenza di bit originale. Successivamente il repeater
invia il segnale rigenerato.
questi dispositivi non hanno indirizzi di livello collegamento e non effettuano alcuna verifica sugli indirizzi di
collegamento presenti nell’intestazione dei frame che ricevono.
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
Filtraggio
è normale chiedersi qual è la differenza di funzionalità tra uno switch e un hub. Il primo ha capacità di
filtraggio, è in grado di verificare l’indirizzo di destinazione del frame e decide da quale porta in uscita deve
essere inviato il frame.
switch trasparenti
uno switch trasparente è un commutatore di cui le stazioni presenti nella rete sono completamente ignare
dell’esistenza del dispositivo della rete. Una rete dotata di switch trasparenti deve soddisfare tre criteri:
Deve essere possibile inoltrare i frame da una stazione ad un’altra;
La tabella d’inoltro deve essere creata automaticamente analizzando i frame che vengono
spediti nella rete;
Devono essere evitati cicli nella rete.
Inoltro
Nel caso di uno switch trasparente l’inoltro dei frame non subisce alcuna modifica, è esattamente come
descritto in precedenza
Apprendimento
Inizialmente gli switch operavano usando delle tabelle statiche di commutazione. Questo significa che
l’amministratore di rete era costretto ad inserire manualmente ciascuna voce della tabella durante la
configurazione dello switch. Nonostante il processo fosse abbastanza semplice, non era molto comodo.
Infatti, se una stazione veniva aggiunta o cancellata, la tabella doveva essere modificata manualmente.
Stessa cosa doveva essere fatta se l’indirizzo MAC di una stazione cambiava.
La soluzione, molto migliore della tabella statica, è una tabella dinamica che associa automaticamente gli
indirizzi MAC alle porte. Per creare una tabella dinamica, occorre uno switch che sia in grado di apprendere
gradualmente dai frame che vengono inviati all’interno della rete.
Router
Un router è un dispositivo che opera su tre livelli: livello fisico, livello di collegamento e livello di rete. Come
dispositivo a livello fisico, rigenera il segnale che riceve. Come dispositivo a livello collegamento il router
verifica gli indirizzi MAC, come dispositivo a livello di rete, verifica gli indirizzi di questo livello.
I router servono per collegare tra di loro le reti, collegano reti diverse per ottenere una rete di reti
Un router ha un indirizzo fisico e logico per ognuna delle sue interfacce;
Un router opera soltanto su qui frame il cui indirizzo di destinazione indicato nell’intestazione
è uguale all’indirizzo di collegamento dell’interfaccia su cui arrivano;
I router cambiano l’indirizzo di collegamento del
frame.
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
La prima differenza che possiamo osservare tra una LAN cablata e una wireless è il mezzo trasmissivo. In
una LAN wireless, il mezzo trasmissivo è l’aria e il segnale normalmente è broadcast. Quando gli host in una
LAN wireless comunicano l’uno con l’altro, essi condividono lo stesso mezzo. In una situazione molto rara
possiamo creare una comunicazione punto-punto tra due host wireless usando un’ampiezza di banda
molto limitata e delle antenne bidirezionali.
Host wireless
In una LAN wireless, un host non è fisicamente connesso alla rete, ma può muoversi liberamente e usare
servizi da essa forniti.
LAN isolate
Una LAN wireless isolata, chiamata rete ad hoe nella terminologia LAN wireless, è un insieme di host che
comunicano liberamente tra loro.
Una LAN wireless si può connettere a una rete con infrastruttura cablata, a una rete con infrastruttura
wireless o a un’altra LAN wireless mediante una base station, che nel caso delle reti LAN wireless 802.11
prende il nome di Access Point (AP).
Caratteristiche
La forza dei segnali elettromagnetici diminuisce rapidamente all’aumentare della distanza del trasmettitore
in quanto il segnale si disperde in tutte le direzioni.
Interferenza
Un destinatario può ricevere dei segnali non solo dal mittente desiderato, ma anche da altri trasmettitori.
Propagazione multi-path
Un destinatario può ricevere più di un segnale dallo stesso mittente in quanto le onde elettromagnetiche
possono essere riflesse da ostacoli come muri, terreno o oggetti.
Errori
Se pensiamo al livello d’errore come alla misura del Signal to Noise Ratio (SNR) o rapporto segnale-
rumore, possiamo capire meglio perché il rilevamento e la correzione degli errori e la ritrasmissione siano
più importanti in una rete wireless. L’SNR misura il rapporto tra il segnale buono e quello cattivo.
L’algoritmo CSMA/CD non funziona nelle LAN wireless per tre ragioni.
1. Per rilevare una collisione l’host deve operare in modalità duplex. Sarebbe troppo
costoso impiegare un adattatore di rete in grado di rilevare collisioni.
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
2. A causa del problema del terminale nascosto (hidden terminal problem) secondo cui un host,
potrebbe non sapere che un altro host sta trasmettendo a causa di ostacoli o questioni dovute
al raggio di trasmissione, una collisione potrebbe avvenire senza essere rilevata.
3. La distanza tra gli host può essere grande.
IEEE 802.11
L’IEEE ha definito le specifiche per le LAN wireless. Wi-Fi è una LAN wireless certificata dalla Wi-Fi Alliance,
un’associazione industriale globale no profit.
Architettura
Lo standard 802.11 definisce due tipi di architettura:
Il basic service set (BSS); costituita da una o più stazioni wireless e da un access point facoltativo.
Il BSS con infrastruttura prevede la presenza dell’access point e l’infrastruttura è costituita dall’AP
e dal cavo Ethernet che collega l’AP con il router. In tal caso si ha una rete formata da soli host
wireless, detta rete ad hoc.
Extended service set (ESS); costituito da due o più BSS con infrastruttura. In questo caso i BSS
sono collegati tramite un sistema di distribuzione, che è una rete cablata o wireless. Is sistema di
distribuzione collega gli AP nei BSS.
Associazione
L’architettura IEEE 802.11 prevede che una stazione wireless si associ a un AP per accedere a Internet.
Sorge dunque il problema di conoscere quali AP sono disponibili in un BSS e come avviene l’associazione.
Lo standard 802.11 prevede che un AP invii dei segnali periodici, detti beacon, che includono l’identificatore
dell’AP (Service Set Identifier- SSID) e il suo indirizzo MAC.
La richiesta di associazione verso un particolare AP può avvenire mediante una fase di autenticazione: l’AP
può richiedere alla stazione di autenticarsi mediante un nome utente e una password. Oppure
l’autenticazione può avvenire in base all’indirizzo MAC della stazione.
La tecnica Distributed Coordination Function (DFC) usa il protocollo CSMA/CA come metodo d’accesso.
Poiché nelle reti wireless la rilevazione delle collisioni non può essere eseguita durante la trasmissione, è
stato definito il protocollo di Carrier Sense Multiple Access with Collision Avoidance (CSMA/CA) che ha lo
scopo di evitare che si verifichino collisioni, grazi all’uso di tre strategie: lo spazio interframe, la finestra di
contesa e i riscontri.
Spazio interframe (IFS). Se il canale risulta libero, la stazione non trasmette immediatamente, ma
attende un lasso di tempo chiamato interframe space o IFS. La motivazione di questa scelta sta
nel fatto che il canale può apparire inattivo quando viene rilevato, ma una stazione distante può
avere già iniziato a trasmettere.
Finestra di contesa (Contention Window). La finestra di contesa consiste di un lasso di tempo
diviso in slot, detto back-off time. Una stazione che vuole trasmettere sceglie come tempo di
attesa una quantità casuale di slot.
Riscontro. Poiché questi meccanismi non garantiscono che non avvenga una collisione. È
necessario utilizzare riscontri positivi e timer per capire se la trasmissione del frame è andata a
buon fine.
Modello temporale dello scambio di frame
Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398
1. Prima di inviare un frame la stazione sorgente ascolta il canale controllando il livello d’energia
della sua frequenza portante.
2. Dopo aver ricevuto l’RTS e aver atteso per un lasso di tempo chiamato short interframe
space (SIFS), la stazione di destinazione invia un frame di controllo, chiamato clear to send
(CTS) alla stazione sorgente.
3. La stazione sorgente attende un lasso di tempo pari al SIFS, dopodiché invia i dati.
4. La stazione di destinazione, dopo aver atteso un lasso di tempo pari al SIFS, invia un riscontro
(ack) per mostrare che il frame è stato ricevuto.
Che cosa accade se avviene una collisione durante il tempo in cui i frame di controllo RTS o CTS sono in
transizione? Siccome non c’è meccanismo per rilevare la collisione, il mittente suppone che ci sia stata una
collisione se non ha ricevuto un frame CTS dal destinatario. Viene quindi applicata la strategia del back-off e
il mittente prova di nuovo.
Bluetooth
Il Bluetooth è una tecnologia LAN wireless. Una LAN Bluetooth è una rete ad hoc, il che significa che si
forma spontaneamente senza l’aiuto di alcuna stazione base. La tecnologia Bluetooth ha numerose
applicazioni. I dispositivi periferici come un mouse o una tastiera wireless possono comunicare con il
computer tramite tale tecnologia.
Scaricato da CC CC ([email protected])