Il 0% ha trovato utile questo documento (0 voti)
19 visualizzazioni87 pagine

Reti

Il documento fornisce una panoramica sui concetti fondamentali delle reti, distinguendo tra reti di calcolatori e sistemi distribuiti, e descrivendo vari tipi di reti come PAN, LAN, MAN e WAN. Viene anche trattata la commutazione di circuito e pacchetto, le tecnologie di trasmissione e i servizi di cloud computing, evidenziando le differenze tra private e public cloud. Infine, il documento esplora le prestazioni delle reti, analizzando fattori come ampiezza di banda, throughput, ritardi e perdita di pacchetti.

Caricato da

sonia
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato DOCX, PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
19 visualizzazioni87 pagine

Reti

Il documento fornisce una panoramica sui concetti fondamentali delle reti, distinguendo tra reti di calcolatori e sistemi distribuiti, e descrivendo vari tipi di reti come PAN, LAN, MAN e WAN. Viene anche trattata la commutazione di circuito e pacchetto, le tecnologie di trasmissione e i servizi di cloud computing, evidenziando le differenze tra private e public cloud. Infine, il documento esplora le prestazioni delle reti, analizzando fattori come ampiezza di banda, throughput, ritardi e perdita di pacchetti.

Caricato da

sonia
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato DOCX, PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 87

lOMoARcPSD|4641398

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.

A noi non interessa il tipo di collegamento; in genere possono essere:


-cavi di rame
-fibra ottica
-Microonde
-satellitare
-Senso Lasco: rete di computer con un unico processore.
-Senso Stretto: una scheda madre con n processori.

Sistemi distribuiti vs reti di calcolatori

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

Progettazione dei livelli


Il punto chiave nel progettare una rete che funzioni correttamente, anche se composta da
un insieme di componenti di per sé inaffidabili è l’affidabilità
 Error detection
 Routing
 Evoluzione della rete
 Allocazione delle risorse
 sicurezza
Classificazione delle
reti PAN – personal area
network
Rete locale tra utenti che utilizzano un particolare protocollo (Bluetooth)
LAN – local area network
Rete locale, può essere di molti tipi (stella, bus …)
MAN – metropolitan area network
Rete locale per reti comunali
WAN – wide area network
 WAN punto-punto: serve per collegare tramite ethernet o wireless due dispositivi;
 WAN a commutazione: serve per collegare piu di due dispositivi tra loro.
Internetwork
Al giorno d’oggi è raro vedere LAN o WAN isolate: esse sono in genere connesse fra di loro,
formando una internetwork appunto un insieme di reti interconnesse.
Servizio di cloud
I servizi di cloud erogano risorse informatiche come l’archiviazione e l’elaborazione o la
trasmissione di dati, caratterizzato dalla disponibilità on demand attraverso internet.
Nonostante il termine sia piuttosto vago e sembri essere utilizzato in diversi contesti con
significati differenti tra loro, si possono distinguere tre tipologie fondamentali di servizi
cloud computing.
 SaaS (Software as a Service) – consiste nell’utilizzo di programmi installati su un
server remoto, quindi fuori dall’ambiente locale del computer fisico.
 DaaS (Data as a Service) – con questo servizio vengono messi a disposizione via web
solamente i dati ai quali gli utenti possono accedere tramite qualsiasi applicazione
come se fossero residenti su un disco locale.

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

linea telefonica) e viceversa. Il software installato sul computer compone il numero


dell’ISP (Internet Server Provider) e esegue una comunicazione telefonica. Molto
lenta, inoltre se si effettua una chiamata con la stessa rete essa stessa viene
disabilitata.
2. Servizio DSL (Digital Subscriver Line). Negli ultimi anni molte aziende telefoniche
hanno modificato le proprie linee telefoniche per permettere agli utenti un servizio
di accesso a Internet veloce e la possibilità di effettuare chiamate con la stessa linea.
Tramite reti Wireless
Se ne parlerà nel capitolo 6.
Collegamento diretto
Le aziende di notevoli dimensioni possono esse stesse divenire ISP locali ed essere cosi
connesse a internet. Tali aziende possono affittare delle reti WAN ad alta velocità da un
operatore per collegarsi a un ISP regionale.
Capacità e prestazioni delle reti
Il concetto di velocità di una rete è molto ampio e coinvolge vari fattori che influiscono
sulle prestazioni di una rete. Nel caso di una rete a commutazione di pacchetti, le metriche
che ne determinano le prestazioni si misurano in termini di: ampiezza di banda, bit rate,
throughput, ritardi e perdita di pacchetti.
Ampiezza di banda e bit rate
L’ampiezza di banda (bandwidth), è una quantità che si misura in hertz e rappresenta la
larghezza dell’intervallo di frequenze utilizzato dal sistema trasmissivo, ovvero l’intervallo
di frequenze che un mezzo fisico consente di trasmettere senza danneggiare il segnale in
maniera irrecuperabile. Viene espressa in bps, la banda rappresenta il trasmission rate,
ovvero la quantità di bit al secondo che un certo link garantisce di trasmettere. In generale,
il bit rate è proporzionale alla banda in hertz.
Throughput
Esso indica quanto velocemente riusciamo effettivamente a inviare i dati tramite una rete.
Facciamo una piccola precisazione Il rate è una misura della potenziale velocità di un link; il
throughput è una misura dell’effettiva velocità di un link. Il throughput è definito come il
numero dei bit che passano attraverso un punto della rete in un secondo. Il throughput
medio è determinato dal collo di bottiglia;
Throughput = minimo{T1,T2,T3,TN}.
Ultima cosa quando il link tra due router è distribuito su varie sorgenti, in questo caso il
rate del link tra i due router è realmente condiviso tra i flussi e ciò va considerato quando
si calcola il throughput.

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

Incapsulamento nell’host sorgente


La sorgente effettua esclusivamente l’incapsulamento
1. A livello applicazione i dati da scambiare vengono chiamati messaggi. Un messaggio
non contiene alcuna intestazione(header) o trailer (informazioni di controllo in
coda), ma anche nel caso questi fossero presenti, ci si riferisce all’insieme sempre
con il termine messaggio.
2. Il livello trasporto considera il messaggio ricevuto come payload, ovvero come
carico dati, che deve trasportare e gli aggiunge l’intestazione di livello trasporto.
Questo procedimento è detto incapsulamento. Al livello di trasporto il risultato
dell’incapsulamento è un segmento o datagramma a seconda del protocollo usato,
questo pacchetto viene passato al livello di rete
3. Il livello di rete considera questo pacchetto come un carico dati e gli aggiunge
l’intestazione. Questo contiene gli indirizzi degli host sorgente e destinatario e altre
informazioni utilizzate per il controllo degli errori dell’intestazione stessa, per la
frammentazione e così via. Il risultato è un datagramma che viene passato a livello
di collegamento.
4. Il livello di collegamento considera il pacchetto di livello rete come payload e gli
aggiunge la propria intestazione, che contiene l’indirizzo del livello di collegamento
dell’host o del next-hop (il router). Il risultato è un pacchetto di livello di
collegamento, chiamato frame, che viene quindi passato al livello fisico per la
trasmissione.
Incapsulamento e decapsulamento nel router
Nel router si effettua sia l’incapsulamento che il decapsulamento.
1. L’insieme di bit ricevuti dal livello fisico viene passato al livello di collegamento, che
decapsula il frame (ovvero rimuove l’header) e passa il datagramma al livello di
rete.
2. Il livello di rete consulta solamente gli indirizzi di sorgente e destinatario
nell’header quale consegnare il datagramma e consulta la propria tabella di
instradamento per decidere il next-hop al quale consegnare il datagramma. Il
contenuto del datagramma non deve essere alterato a meno che non sia necessaria
una frammentazione, dopodiché viene passato al livello di collegamento
3. Il livello di collegamento incapsula quindi il datagramma in un frame e lo passa
al livello fisico per la trasmissione.
Decapsulamento nell’host destinatario
Ciascun livello nell’host destinatario rimuove la propria intestazione dal pacchetto ricevuto
estraendone il payload; questo viene passato al protocollo del livello sovrastante, fino a
quando il messaggio raggiunge il livello applicazione. È opportuno precisare che il
decapsulamento nell’host comporta anche il controllo degli errori.

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;

CAPITOLO 2 LIVELLO APPLICAZIONE


Il livello applicazione fornisce servizi all’utente. La comunicazione è fornita per mezzo di
una connessione logica, questo significa che i due livelli di applicazione agiscono come se
fosse attiva un collegamento diretto.
L’offerta di servizi
Le reti prima di internet avevano l’obbiettivo di fornire servizi agli utenti; la maggior parte
di queste reti, tuttavia, era inizialmente progettata per offrire un servizio specifico. Ma poi
vennero utilizzati per altri scopi come la rete del telefono che inizialmente portava solo il
segnale vocale poi modificato poteva trasportare anche informazioni sulla rete. Il livello
applicazione ha caratteristiche peculiari rispetto agli altri protocolli della pila, visto che
comunica direttamente con l’utente, quindi utilizzano servizi offerti dai protocolli del livello
inferiore. Questo significa che eliminare protocolli da questo livello è un’operazione facile,
cosi come aggiungere nuovi protocolli.
Protocolli standard e non
Per agevolare le operazioni di internet, i protocolli utilizzati nei primi quattro livelli dello
stack TCP/IP devono essere standardizzati. Essi fanno parte dei sistemi operativi. Per una
maggiore flessibilità tuttavia, i protocolli di livello applicazione possono essere sia standard
che non standard.
 Protocolli standard di livello applicazione: esistono diversi protocolli di livello
applicazione che sono stati standardizzati e documentati dagli enti responsabili
dalla gestione di internet. Sono protocolli che vengono utilizzati nella comune
operatività giornaliera.
 Protocolli non standard di livello applicazione; un programmatore può creare
un’applicazione non standard scrivendo due programmi che forniscono servizi agli
utenti, facendo uso dei servizi del livello di trasporto.
Paradigmi del livello applicazione
Per utilizzare internet sono necessari due programmi che interagiscono l’uno con l’altro:
uno eseguito su un certo computer in qualche parte del mondo, l’altro eseguito su un

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

indicare un insieme di documenti testuali collegati, è stata cambiata in hypermedia, per


indicare che una pagina può contenere documenti testuali cosi come immagini, clip ecc.
Architettura
Il web è oggi un servizio client/server distribuito, nel quale un client che utilizza un browser
può accedere a un servizio offerto da un server. Il servizio fornito è tuttavia distribuito su
numerose locazioni fisiche chiamate siti. Ogni sito contiene uno o più documenti chiamate
pagine web, ciascuna delle quali può contenere collegamenti ad altre pagine. Ogni pagina
web è un file identificato da un nome e un indirizzo.
Il browser (client web). Esistono numerosi browser, capaci di interpretare e visualizzare i
documenti Web, che utilizzano sostanzialmente la medesima architettura. Qualsiasi
browser è composto solitamente da tre componenti: il controllore, il modulo che
implementa il protocollo client e gli interpreti. Il controllore riceve l’input dalla tastiera o
dal mouse e sfrutta i protocolli client per accedere al documento. Ottenuto il documento, il
controllore utilizza uno degli interpreti per visualizzarlo sullo schermo.
Server Web. Le pagine Web sono memorizzate nel server. Questo, ricevuta la richiesta da
un client, invia il documento corrispondente. Per migliorare l’efficienza, i server
memorizzano solitamente i file richiesti in una memoria cache.
URL (Uniform Resource Locator)
Una pagina web, essendo un file, deve avere un identificatore univoco per distinguerla
dalle altre pagine. Per identificare una pagina web sono necessari tre identificatori: host,
porta e percorso. Tuttavia, prima di definire la pagina web è necessario indicare al browser
quale applicazione c/s si desidera utilizzare, specificando il cosiddetto protocollo. Per
identificare una pagina web sono quindi necessari quattro parametri: il primo indica lo
strumento che deve essere utilizzato per recuperare la pagina Web, la combinazione degli
altri tre identifica l’oggetto ricercato.
 Protocollo. È un’abbreviazione che indica il protocollo c/s nella maggior parte
dei casi si tratta di http.
 Host. l’identificatore dell’host può essere l’indirizzo IP o il nome univoco
assegnato al server. Il nome è solitamente il nome di dominio che identifica
univocamente l’host, per esempio forouzan.com.
 Porta. La porta un intero di 16 bit, è predefinito per molte applicazioni c/s standard.
Per esempio, se si utilizza il protocollo http per accedere alle pagine Web, il numero
di porta è 80.
 Percorso. Il percorso identifica la posizione e il nome del file nel filesystem. Il
formato di questo identificatore dipende normalmente dall’ OS del file, tutti
separati da “/”.

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

Formato dei messaggi


Ogni messaggio è formato da quattro parti. La prima parte nel messaggio di richiesta viene
chiamato riga di richiesta, mentre nel messaggio di risposta viene chiamata riga di stato.
Le altre tre parti hanno lo stesso nome in entrambi i tipi di messaggio, ma le similarità si
limitano al nome, poiché possono avere contenuti differenti.
 Messaggio di richiesta. La prima riga in un messaggio di richiesta è chiamata riga di
richiesta. In questa riga vi sono tre campi separati da uno spazio e terminati da due
caratteri, i campi sono: metodo, URL e versione. Il campo metodo definisce i tipi di
richiesta(GET). Invece il termine HEAD viene utilizzato quando il client richiede al
server solo alcune informazioni relative alla pagina web. Il metodo PUT viene usato
per pubblicare una nuova pagina Web sul server. Il metodo POST è simile al PUT,
ma viene utilizzato per inviare al server alcune informazioni aggiuntive. Il metodo
TRACE è usato per debug e il metodo DELETE cancella una pagina Web. Se il client
ha i permessi necessari il metodo CONNECT è utilizzato dai server proxy ed è un
metodo di riserva. Il metodo OPTION infine, consente al client di ottenere le
proprietà di una pagina Web. Il secondo campo URL definisce l’indirizzo e il nome
della pagina Web corrispondente. Il terzo campo versione indica la versione del
protocollo. Alla riga di richiesta possono seguire una o più righe di
intestazione(header), ognuna delle quali invia informazioni supplementari dal
client al server.

 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

 Il browser che riceve la risposta memorizza il cookie in una directory adibita


a questo scopo, a sua volta suddivisa per nome di dominio del server.
Utilizzo dei cookie: Quando un client invia una richiesta a un server, controlla nella
directory dei cookie l’eventuale presenza di un cookie precedentemente inviato dal server.
Il cookie eventualmente trovato viene incluso nella richiesta. I cookie sono preparati e
consumati dal server. Esempi di utilizzo di cookie:
 Sito di commercio elettronico;
 Sito con accesso limitato ai soli utenti autorizzati;
 Portale Web(Preferenze);
 Scopi pubblicitari, accumulare informazioni sugli utenti e mostrare le pubblicità
che probabilmente gli interessano.
Web catching: il server proxy
http supporta i server proxy, ovvero dei computer che conservano una copia delle risposte
alle richieste recenti. Il client http invia una richiesta al server proxy, il quale controlla nella
propria memoria cache. Se la risposta non è già presente nelle cache, il proxy invia la
richiesta al server corrispondente. Quando, in seguito, il proxy riceve la risposta, oltre a
inviarla al client che l’aveva richiesta la memorizza anche nella propria cache, per renderla
disponibile ad altri client che dovessero effettuare la stessa richiesta. Il server proxy riduce
il carico sul server originale e agisce da client e da server poiché è posizionato tra i due,
ovviamente il client deve essere configurato per accedere al proxy.
Aggiornamento della cache
Vediamo quali tecniche possiamo utilizzare per ottimizzare il tempo di permanenza delle
risposte nella memoria cache dei proxy. Quella più usata è la più semplice e consiste nel
permettere l’aggiornamento della pagina da parte del proxy solamente dopo un certo
intervallo di tempo dall’ultima modifica. Un’altra soluzione più realista, consiste nel
combinare questa tecnica con l’uso delle richieste condizionali descritte in precedenza. In
questo modo se la pagina è stata aggiornata da poco tempo il server proxy la restituirà
immediatamente al client che ne fa richiesta, in caso contrario provvede a verificare la
validità della copia che ha in cache.
FTP
Il file transfer protocol è il protocollo standard offerto da TCP/IP per la copia di file da un
host all’altro. Sebbene sia possibile trasferire file con http, ftp rimane la scelta migliore per
file voluminosi. Il client ha tre componenti: interfaccia utente, processo di controllo e
processo di trasferimento dati. Il server ha solo due componenti: processo di controllo e
processo di trasferimento dati. La connessione di controllo viene realizzata tra i due
processi di controllo e quella per lo scambio dei dati tra i due processi relativi. La
separazione del trasferimento dei dati e dei comandi rende il protocollo FTP piuttosto
efficiente: la connessione che si occupa delle informazioni di controllo può usare regole
semplici.

Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398

Durata delle due connessioni


Le due connessioni in ftp hanno durate differenti. La connessione di controllo rimane
aperta durante l’intera sessione ftp interattiva. La connessione dati viene aperta e chiusa
per ciascun trasferimento file. Quando un utente inizia una sessione si apre la sessione di
controllo. Le porte note sono la 21 connessione di controllo e 20 per i dati.
Connessione di controllo
Il protocollo ftp usa lo stesso approccio di TELNET. La comunicazione attraverso la
connessione di controllo avviene per mezzo di caratteri con una codifica standard chiamata
NVT ASCII. Ogni riga termina con la coppia di caratteri ritorno carrello e fine linea. Ogni
comando FTP genera almeno una risposta; le risposte sono composte da due parti un
numero di tre cifre e un testo. La parte numerica costituisce il codice della risposta, quella
di testo contiene i parametri necessari o informazioni supplementari. La prima cifra
fornisce lo stato del comando. La seconda cifra definisce l’area alla quale si applica lo stato.
La terza cifra fornisce informazioni supplementari.
Connessione per lo scambio dei dati
Nella connessione per lo scambio di dati il server usa la porta 20 e lo schema di apertura è:
1. Il client, effettua un’apertura passiva usando una porta effimera (rimane in attesa
di connessione); ciò viene fatto dal client perché è tale processo che invierà i
comandi per il trasferimento dei file.
2. Il client invia questo numero di porta al server per mezzo del comando PORT.
3. Il server, ricevuto il numero di porta, effettua un’apertura attiva usando la porta
20 e quella effimera.
Comunicazione lungo la connessione per lo scambio
La connessione per lo scambio dei dati ha caratteristiche e scopi diversi da quella di
controllo. Lo scopo ultimo è il trasferimento del file: il client deve definire il tipo del file, la
struttura dei dati e la modalità di trasmissione.
Trasferimento di file
Il trasferimento dei file avviene lungo la connessione per lo scambio dei dati sotto il
controllo dei comandi trasmessi lungo la connessione di controllo.
Sicurezza nel protocollo FTP
Il protocollo FTP venne progettato quando la sicurezza non era ancora un problema così
importante come ora. Anche se FTP richiede al client di inviare una password, questa viene
trasmessa in chiaro e potrebbe essere intercettata. Anche la connessione di trasferimento
dati trasmette i dati in chiaro, per aumentare la sicurezza è possibile aggiungere il
protocollo SSL(Secure socket layer) tra il livello applicazione e quello di trasporto. In questo
caso FTP viene chiamato SSL-FTP.

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

Message Transfer Agent: SMTP


Sulla base dello scenario standard, si può affermare che la posta elettronica è una di quelle
applicazioni che richiedono tre impieghi del paradigma client/server: è importante saperli
distinguere. Il protocollo che definisce in modo formale l’interazione tra il client e il server
MTA è chiamato SMTP (Simple Mail Transfer Protocol). SMTP è utilizzato in due diverse
occasioni; fra il mittente ed il suo server di posta e tra i due server di posta.
Comandi e risposte
Il trasferimento di un messaggio di posta elettronica viene realizzato dal protocollo SMTP
mediante lo scambio di comandi e risposte tra client e server MTA. I comandi sono
inviati da un client MTA a un server MTA, viceversa le risposte.
Comandi. I comandi vengono inviati dal client al server; il loro formato è composto da una
keyword e uno o più argomenti.
Fasi della consegna di un messaggio di posta
La consegna di un messaggio di posta avviene in tre fasi distinte: apertura della
connessione, trasferimento del messaggio di posta e chiusura della connessione.
 Apertura della connessione. Il server SMTP da il via alla fase di apertura della
connessione non appena il client effettua la connessione TCP con la porta nota
25.
 Trasfermiento del messaggio. Dopo l’apertura della connessione tra il client e il
server SMTP, un singolo messaggio dal mittente a uno o più destinatari può
essere inviato.
 Chiusura della connessione. Il client, una volta trasferito il messaggio, chiude la
connessione.
Message Access Agent: i protocolli POP e IMAP
Il primo e il secondo stadio della trasmissione della posta elettronica utilizzano SMTP, che
non è invece impiegato nel terzo stadio essendo un protocollo di tipo push. Il terzo stadio
richiede invece un protocollo di tipo pull. Il terzo stadio utilizza dunque un MAA.
Attualmente si utilizzano due protocolli
POP3
Il protocollo Post Office Protocol versione 3 è molto semplice ma ha funzionalità limitate. Il
software client POP3 è installato sul pc del destinatario, mentre il software server viene
installato sul server di posta. L’accesso alla posta avviene quando il client scarica i
messaggi. Il POP3 ha due modalità la delete e keep.
IMAP4
Un altro protocollo di accesso alla posta è l’internet mail access protocol versione 4 IMAP4.
Questo protocollo è simile al POP3 ma ha più funzionalità;
 Controllare l’intestazione dei messaggi prima del prelievo,
 Ricercare una stringa specifica nei messaggi prima del prelievo,

Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398

 Prelevare i messaggi in modo parziale, una funzionalità particolarmente


utile quando vi sono limitazioni di banda e i messaggi comprendono
contenuti multimediali particolarmente voluminosi,
 Creare, cancellare o rinominare le mailbox sul server,
 Creare una gerarchia di cartelle all’interno della mailbox sul server a scopo
di archiviazione.
Multipurpose Internet Mail Extensions (MIME)
La posta elettronica ha una struttura molto elementare, ma la sua semplicità comporta che
il protocollo possa gestire soltanto messaggi nel formato standard NVT ASCII a 7bit. Il
protocollo MIME è un protocollo supplementare che permette l’invio di messaggi in
formati diversi dall’ASCII.
TELNET
Un programma server può fornire un servizio specifico al corrispondente programma
client, è tuttavia impossibile avere una coppia client/server per ogni tipo di servizio, il
numero di server crescerebbe a dismisura. È decisamente più ragionevole creare una
coppia di applicativi client/server che permetta a un utente di accedere a un computer
remoto e quindi di utilizzare tutti gli applicativi. Queste coppie generiche client/server
sono chiamate applicazioni di login remoto ovvero TELNET, abbreviazione di Terminal
Network, è uno dei primi protocolli di login remoto. L’accesso al server richiede nome
utente e password ma la trasmissione avviene in chiaro. Per questo si usa un altro
protocollo chiamato Secure Shell(SSH).
Login locale e remoto
L’azione con la quale un utente si collega a un pc locale è detta login locale. Gli utenti che
vogliono utilizzare programmi applicativi su dispositivi remoti devono effettuare un login
remoto(TELNET). I caratteri introdotti dall’utente vengono accettati dal driver del
terminale e inviati al client TELNET che trasforma la sequenza in una successione di
caratteri con una codifica standard, che viene trasmessa allo stack TCP/IP locale. I comandi
o i messaggi di testo viaggiano attraverso internet e giungono allo stack TCP/IP del
dispositivo remoto, dove vengono trasmessi al sistema operativo e dal questo al server
TELNET. Come ultimo tassello esiste un software chiamato driver pseudoterminale, che ha
il compito di accettare i caratteri dal server e di trasmetterli al sistema operativo.
Secure Shell (SSH)
È un’applicazione nata per sostituire TELNET e risolvere i suoi problemi di sicurezza.
Il protocollo di livello applicazione SSH è composto da tre componenti:
1. SSH-TRANS: il protocollo TCP trasmette tutte le informazioni in chiaro, per questo
motivo il componente SSH Transport-Layer-Protocol ha l’obbiettivo di costruire
un canale di comunicazione sicuro sfruttando la connessione offerta da TCP;
2. SSH-AUTH: questo componente SSH Authentication Protocol è responsabile invece
dell’autenticazione del client, oltre alle consuete password e user sono disponibili

Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398

anche altri metodi di verifica, ad esempio, l’accesso basato su coppie di chiavi


crittografiche;
3. SSH-CONN: il Connection Protocol, sfrutta i servizi offerti dagli altri
componenti, offre i servizi veri e propri di livello applicazione.
DNS(Domain Name System)
L’ultima applicazione client/server è stata progettata per il support delle altre applicazioni.
I dispositivi connessioni in rete vengono individuati dai protocolli TCP/IP mediante il loro
indirizzo IP; gli utenti però preferiscono usare nomi piuttosto che indirizzi numerici. Quindi
ci deve essere un sistema che associ un indirizzo IP ad ogni nome.
Vista la dimensione di internet, un sistema centralizzato non potrebbe esistere, la
soluzione attualmente adottata consiste nel suddividere queste informazioni e distribuire
le varie parti ottenute su calcolatori sparsi per il mondo. L’host che ha bisogno di associare
un indirizzo a un nome, o viceversa, contatta il calcolatore più vicino e gli invia una
richiesta opportuna. Questo metodo viene usato dal DNS. Per associare l’indirizzo IP al
nome simbolico dell’host bisogna:
1. L’utente comunica il nome dell’host al client di trasferimento file;
2. Il client di trasferimento file trasmette il nome dell’host al client DNS;
3. Qualsiasi computer, una volta avviato, conosce l’indirizzo IP di un server -dns.
Il client DNS invia dunque un messaggio al server DNS contenente la richiesta
di traduzione del nome simbolico del f file server;
4. Il server DNS risponde con l’indirizzo IP del file server desiderato;
5. Il client DNS comunica l’indirizzo IP al client di trasferimento file;
6. Il client di trasferimento file utilizza ora l’indirizzo IP ricevuto per accedere al
file server.
Spazio dei nomi
Al fine di evitare ogni ambiguità è necessario definire uno spazio dei possibili nomi da
assegnare ai calcolatori connessi in rete. Vi sono due modi possibili per organizzare un tale
spazio: spazio con struttura piatta e spazio con struttura gerarchica. In uno spazio dei nomi
con struttura piatta viene associato un nome differente a ciascun indirizzo; ogni nome è
quindi una sequenza di caratteri. Due nomi possono avere una sotto sequenza di caratteri
in comune, ma il fatto che l’abbiamo o meno non ha alcuna ulteriore implicazione o
significato. Il problema è la necessità che Internet sia controllato a livello centrale per
evitare ambiguità e duplicazioni. In uno spazio dei nomi gerarchico ogni nome è composto
da diverse parti:
 La prima può definire la natura dell’organizzazione,
 La seconda il suo nome,
 La terza i vari dipartimenti.

Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398

Spazio dei nomi di dominio


Lo spazio dei nomi di dominio (domain name space) è alla base della costruzione dello
spazio dei nomi con struttura gerarchica. In questo schema i nomi hanno una struttura ad
albero con la radice in cima e un numero di livelli variabile tra 0(radice) e 127.
Etichette. Ogni nodo è individuato da un’etichetta(label) costituita al più da 63 caratteri.
Alla radice(root) è associato un’etichetta vuota.
Nomi di dominio. Ogni nodo dell’albero ha un nome di dominio ovvero una sequenza di
etichette separate da punti.
Domini. Un dominio è un sottoalbero dello spazio dei nomi di dominio che viene
identificato dal nome di dominio del nodo in cima al sottoalbero.
Informazione degli spazi di dominio le info contenute in questo spazio devono essere
memorizzate in un dispositivo fisico. Salvare questa enorme mole di dati su un solo
computer sarebbe allo stesso tempo inaffidabile e inefficiente.
Gerarchia dei Name Server
Il problema appena proposto è stato risolto ripartendo le informazioni relative ai nomi di
dominio tra diversi calcolatori detti server DNS o anche name server. L’intero spazio è
stato suddiviso in diversi domini differenziati al primo livello dell’albero. Ogni server è
responsabile di un dominio o sottodominio.
Zone: Poiché non è possibile memorizzare la gerarchia completa dei nomi di dominio su
un singolo server, questa viene suddivisa fra numerosi server. Una zona è tutto ciò di cui è
responsabile un server. Ogni server ha un database, detto file di zona. Se il server
suddivide il proprio dominio in sottodomini allora la zona e il dominio si differenziano.
Server Radice: Un server radice(root server) è un server che ha per zona l’intero albero.
Solitamente i root server delegano la loro responsabilità ad altri server e si limitano a
immagazzinare riferimenti relati a questi server.
Server primari e secondari
I server DNS possono essere primari o secondari. Un server primario possiede un file
relativo alla zona sotto la sua responsabilità: la creazione, la gestione e l’aggiornamento del
file di zona sono di sua competenza. Il file di zona è memorizzato nel suo disco locale.
Un server secondario riceve tutte le informazioni relative a una certa zona da un altro
server, primario o secondario, e le memorizza in un file nel suo disco. I server secondari
non creano ne aggiornano i file di zona. I server primari e secondari hanno entrambi la
medesima autorità sulla zona di loro competenza.
Server DNS nella rete Internet
Il protocollo DNS può essere utilizzato su diverse piattaforme, nel caso di internet lo
spazio dei nomi di dominio è stato originariamente diviso in tre parti: domini generici,
nazionali e inversi, ma al giorno d’oggi ci si concentra solo sui primi due.

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.

CAPITOLO 3 LIVELLO DI TRASPORTO


Il livello trasporto fornisce un servizio di comunicazione tra processi fra i due
livelli applicazione.

Il servizio di comunicazione viene fornito tramite una connessione logica, che


consente ai due livelli applicazione (che possono essere situati in qualsiasi parte
del mondo) di lavorare come se ci fosse una connessione diretta attraverso la
quale inviare e
ricevere i messaggi.

I servizi del livello di trasporto


Il livello di trasporto fornisce quindi servizi al livello applicazione e riceve servizi da quello
di rete, di seguito sono descritti i servizi che possono essere forniti dal livello di trasporto.
Comunicazione tra processi
Il primo compito di un protocollo di livello trasporto è supportare la comunicazione tra
processi. Un processo è un’entità di livello applicazione che usa i servizi del livello
trasporto.
Indirizzamento: i numeri di porta
La comunicazione è basata sul paradigma client/server. Un processo sulla macchina locale,
il client, necessita di servizi svolti da un processo solitamente su una macchina remota, il
server. Affinché si possa stabilire una comunicazione tra i due dispositivi, è necessario un
metodo per individuare: l’host locale, l’host remoto. Gli host vengono individuati per
mezzo del loro indirizzo IP. I processi necessitano di ulteriori identificatori, detti numeri di

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

produttore e consumatore, anche il terzo ha un doppio ruolo come il secondo, l’ultimo


agisce solamente in pulling: attende fino a quando il processo di livello applicazione
richiede dati.
Sebbene il controllo di flusso non possa essere realizzato in modi differenti, una delle
soluzioni classiche consiste nell’utilizzare due buffer. Uno al livello trasporto del mittente e
l’altro al livello trasporto del destinatario. Esso non è altro che un insieme di locazioni di
memoria che possono contenere dei pacchetti.
Il livello trasporto del mittente segnala al livello applicazione, quando ha il buffer saturo,
cosi come quello del destinatario chiede l’interruzione dell’invio/ricezione dei pacchetti.
Controllo degli errori
In internet, dato che il livello rete è inaffidabile, è necessario implementare l’affidabilità al
livello trasporto se richiesta dall’applicazione. L’affidabilità può essere ottenuta
aggiungendo i servizi di controllo degli errori al livello trasporto esso ha le seguenti
responsabilità:
 Rilevare e scartare i pacchetti corrotti;
 Tenere traccia dei pacchetti persi e scartati e gestirne la rispedizione
 Riconoscere i pacchetti duplicati ed eliminarli
 Bufferizzare i pacchetti fuori sequenza fino a quando arrivano i pacchetti mancanti.
Questo controllo prevede solamente i livelli trasporto del mittente e destinatario. Il
controllo degli errori comporta che il livello trasporto del mittente sappia quale pacchetto
debba rispedire e che il livello trasporto del destinatario sappia riconoscere i pacchetti
duplicati o fuori sequenza, questo è possibile numerando i pacchetti e aggiungendo un
campo chiamato numero di sequenza (questi numeri sono in modulo 2^m, dove m è un
numero).
Per notificare al mittente la corretta ricezione di uno o più pacchetti viene utilizzato il
numero di riscontro. Il destinatario può semplicemente scartare i pacchetti corrotti. Il
mittente attiva un timer: se non riceve un ACK(conferma) prima della scadenza rispedisce il
pacchetto.
Integrazione del controllo degli errori e del controllo di
flusso
Si è visto che il controllo di flusso richiede l’impiego di due buffer, uno nel mittente e l’altro
nel destinatario. Si è visto anche che il controllo degli errori richiede l’uso dei numeri di
sequenza e di riscontri in entrambi i lati. Questa due requisiti possono essere combinati
usando due buffer numerati, uno presso il mittente e uno presso il destinatario. Nel
mittente, quando si prepara un pacchetto si usa il numero della posizione libera successiva
nel buffer, x, come numero di sequenza del pacchetto. Quando il pacchetto viene inviato,
ne viene memorizzata una copia nella locazione x, in attesa della sua conferma da parte del
destinatario. Quando si riceve una conferma relativa a un pacchetto inviato, il pacchetto
memorizzato viene eliminato liberando la posizione di memoria che occupava. Un

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

1. corrisponde ai numeri di sequenza dei pacchetti già confermati.


2. Definisce l’intervallo dei numeri di sequenza dei pacchetti che non sono stati
inviati ma con stato ancora ignoto.
3. Definisce l’intervallo dei numeri di sequenza dei pacchetti che possono
essere inviati.
4. Infine definisce i numeri di sequenza che non possono essere utilizzati fino a
quando la finestra non avanza.
La finestra è ovviamente un concetto astratto. Le variabili della finestra sono Send
First/Next/Size, la dimensione massima della finestra è 2^m-1.
Finestra di ricezione
La finestra di ricezione permette di ricevere i pacchetti dati corretti e inviare i relativi
riscontri. In questo meccanismo la dimensione della finestra di ricezione è sempre 1. Il
destinatario è sempre in attesa dell’arrivo di un pacchetto specifico. Ha una sola variabile
Receive Next.
Timer e rispedizione dei pacchetti
Sebbene vi possa essere un timer per ciascun pacchetto inviato, nel meccanismo in esame
se ne usa uno solo. Il motivo è dovuto al fatto che il timer del primo pacchetto in attesa di
riscontro scade sempre per primo. Quando questo timer scade, si rispediscono tutti i
pacchetti in attesa di riscontro. Per esempio, se il mittente ha già inviato il pacchetto 6 e
scade il timer del pacchetto 3 significa che i pacchetti da 3 a 6 devono essere rinviati,
questo è il motivo per cui tale meccanismo è chiamato Go-Back-N.
FSM
67
Confronto fra GBN e SAW
Lo SAW è in realtà un GBN nel quale vi sono solo due numeri di sequenze e la finestra di
invio ha dimensione 1. In altre parole, m = 1 e 2^m-1 = 1.
Selective-Repeat
Il meccanismo GBN semplifica i compiti del destinatario, che tieni traccia di una sola
variabile e non deve bufferizzare i pacchetti fuori sequenza: questi vengono
semplicemente ignorati. Questo meccanismo è tuttavia inefficiente se il livello rete
sottostante perde numerosi pacchetti. Ogni volta che un singolo Pacchetto risulta corrotto
o smarrito, il mittente deve rinviare tutti i pacchetti in attesa di riscontro anche se
alcuni di questi sono stati ricevuti correttamente. Il Selective-Repeat(SR), rispedisce solo
i pacchetti realmente smarriti.
Finestre
Anche il meccanismo SR utilizza due finestre. Tuttavia, la dimensione massima della
finestra di invio è molto piccola, e quella di ricezione è uguale alla dimensione della
finestra di invio. La dimensione massima della sinistra di invio è 2^m-1. Il meccanismo SR

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.

Il protocollo UDP(User Datagram Protocol)


È un protocollo del livello trasporto inaffidabile privo di connessione. Udp è un protocollo
molto semplice con un overhead minimo. Se un processo vuole inviare un piccolo
messaggio senza doversi preoccupare troppo dell’affidabilità userà udp.
Struttura dei datagrammi utente
I pacchetti udp sono chiamati datagrammi utente; la loro intestazione è costituita da 4
campi di 2 byte per un totale di 8 byte fissi. I primi due campi definiscono i numeri di porta
di mittente e destinatario. Il terzo campo definisce la lunghezza totale, intestazione più
dati, del datagramma utente. I 16 bit possono definire una lunghezza totale da 0 a 65535
byte, l’ultimo campo può contenere il cheksum opzionale.

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

Servizi del protocollo TCP


Il protocollo TCP fornisce un servizio di trasporto affidabile tra processi basato, come per
UDP, sui numeri di porta. Analogamente a UDP, TCP effettua il multiplexing in trasmissione
e il demultiplexing in ricezione.
Quando un processo sull’host A desidera inviare e ricevere dati da un altro processo
sull’host B, avvengono le seguenti tre fasi
1. I due processi TCP stabiliscono una connessione logica tra di essi.
2. Vengono scambiati dei dati in entrambe le direzioni
3. La connessione viene terminata.
Il segmento TCP viene incapsulato in un datagramma IP e può essere ricevuto fuori
sequenza, corrotto o addirittura smarrito e quindi ritrasmesso. Il TCP è anche orientato al
flusso di dati(stream-oriented), ovvero permette al livello applicazioni di trasmettere un
flusso di dati.
Tcp consente al processo in trasmissione di fornire i dati in un flusso continuo di byte, che
viene ricevuto come tale dal processo in ricezione. TCP crea un ambiente nel quale i due
processi sembrano essere collegati tramite un tubo.

Poiché i processi in trasmissione e in ricezione non scrivono e leggono i dati


necessariamente alla medesima velocità, occorrono dei buffer in cui si possano
memorizzare i segmenti inviati e ricevuti.

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.

Numeri di sequenza e di riscontro


TCP per realizzare un servizio di trasporto usa delle numerazioni che prevedono due campi,
numero di sequenza e numero di riscontro(ack). Questi due campi sono contenuti
nell’intestazione dei segmenti TCP e fanno riferimento a un numero di byte e non a un
numero di segmento. Quando TCP riceve i byte di dati da un processo, li memorizza nel
buffer di trasmissione e li numera.
1. Il numero di sequenza del primo segmento detto ISN(Initial Sequence Number) è
un numero casuale.

Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398

2. Il numero di sequenza di qualsiasi altro segmento è il numero di sequenza


del segmento precedente sommato al numero di byte ivi contenuti.
Il numero di sequenza è utilizzato quando il segmento contiene dati e informazioni di
controllo (piggybacking). Se il segmento non contiene dati utente il numero di sequenza
non è significativo.
L’intestazione dei segmenti oltre al numero di sequenza contiene anche un numero di
riscontro. Poiché la comunicazione TCP è full-duplex, a connessione stabilita entrambe le
entità possono inviare e ricevere contemporaneamente dati. Entrambe numerano i byte
dati.
Formato dei segmenti
il segmento consiste di un’intestazione di dimensione compresa tra i 20 e i 60 byte,
seguito dai dati provenienti dal programma applicativo (20 senza opzioni fino a 60). La
dimensione dell’intestazione viene introdotta di seguito.
 Numero di porta sorgente. 16bit
 Numero di porta destinazione. 16bit
 Numero di sequenza. Campo 32 bit contenente il numero attribuito al primo byte
di dati contenuto nel segmento.
 Numero di riscontro (ack number). Campo a 32 bit che contiene il numero
di sequenza del byte che il destinatario si aspetta di ricevere.
 Lunghezza dell’intestazione (HLEN). Campo a quattro bit che indica il numero
di parole di quatto byte presenti nell’intestazione TCP.
 Flag di controllo, campo contenente i 6 bit di controllo (flag).
 Dimensione della finestra. 16bit
 Checksum. 16 bit
 Puntatore urgente. 16bit
 Opzioni, campo opzionale fino a 40bit.
La connessione TCP
Il protocollo TCP è orientato alla connessione, ovvero stabilisce un percorso virtuale fra il
mittente e il destinatario. Tutti i segmenti appartenenti a un messaggio vengono spediti
lungo questo percorso logico. TCP utilizza i protocolli IP per consegnare i singoli segmenti
al destinatario, ma è il TCP stesso che controlla la connessione. Richiede tre fasi:
 Apertura. TCP trasmette i dati in full-duplex; due entità TCP connesse in due
macchine differenti sono in grado di trasmettere dati l’una all’altra
simultaneamente. Questo comporta che ciascuna entità deve inizializzare la
comunicazione e ottenere l’approvazione dell’entità corrispondente prima di
poter trasferire qualsiasi dato. La procedura di apertura della connessione in TCP è
detta three way handshake (stretta di mano a tre vie).
 Trasferimento dei dati. Dopo aver stabilito la connessione è possibile trasferire i
dati. Il client e il server possono inviare dati e riscontri in entrambe le direzioni. I

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.

Chiusura della connessione


Ciascuna delle due parti coinvolta nello scambio dei dati può chiudere la connessione,
sebbene la chiusura sia solitamente iniziata dal client. La maggior parte delle
implementazioni attuali fornisce due opzioni per la chiusura della connessione: handshake
a tre vie e a quattro vie con opzione di half-close.
Handshake a tre vie
In questo caso, il client TCP, dopo aver ricevuto un comando di chiusura dal processo
applicativo client, invia un primo segmento FIN nel quale viene impostato il flag FIN. Si noti
che il segmento FIN può contenere l’ultima parte dei dati inviati dal client o può essere un
semplice segmento di controllo. Come illustrato nella figura. Se si tratta di un segmento di
controllo, usa un solo numero di sequenza perché richiede un riscontro. Il server TCP, dopo
aver ricevuto il segmento FIN, notifica la situazione al suo processo applicativo e invia il
segmento FIN + ACK, per riscontrare la ricezione dei segmenti FIN al cliente. Il client TCP
invia l’ultimo segmento dell’handshake un segmento ACK, per riscontrare la ricezione del
segmento FIN dal server TCP.
Half-Close
In tcp, uno dei due processi può smettere di inviare dati mentre ne sta ancora ricevendo: si
tratta della cosiddetta half-close (chiusura a metà). Questo può avvenire quando il server
ha bisogno di tutti i dati prima di poter procedere alla loro elaborazione. Un esempio

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

con rwnd è determinata da rwnd=dimensione_buffer-


numero_byte_attesa_di_essere_consumati.
2. La seconda differenza consiste nella gestione dei riscontri, nel TCP il riscontro
è cumulativo indicando il prossimo byte che ci si attende di ricevere.
Controllo di flusso
Il protocollo TCP separa il controllo di flusso dal controllo degli errori. Il feedback del
controllo di flusso dal TCP mittente al processo applicativo mittente è ottenuto tramite il
semplice rifiuto dei dati da parte del TCP mittente quando la sua finestra è completa.
Apertura e chiusura delle finestre
Per controllare il flusso, il TCP forza il mittente e il destinatario a regolare la dimensione
delle proprie finestre sebbene la dimensione del buffer di entrambe le parti venga fissata
all’apertura della connessione. La finestra di ricezione si chiude quando arrivano altri byte
dal mittente ma si apre quando vengono richiesti altri byte dal processo. Si descrive ora
come le finestre di invio e di ricezione vengano impostate nella fase di apertura della
connessione e come vengano modificate nella fase di trasferimento dati. Vengono
trasmessi otto segmenti fra client e server.
 Segmento SYN per chiedere l’apertura
 SYN + ACK dal server al client
 ACK dal client al server
 Dopo che il client ha impostato la dimensione della finestra il processo richiede
la trasmissione di dati.
 Feedback dal server al client, con il quale il server riscontra i byte.
 Il segmento 6 Inviato dal client dopo che il suo processo chiede la trasmissione
di altri byte.
 Nel 7 i server riscontra la ricezione dei dati e annuncia che la dimensione
della finestra.
 Anche l’8 viene inviato dal server (vedi figura pag. 84).
Il destinatario deve rispettare la seguente relazione fra l’ultimo riscontro e il precedente e
fra il precedente e il nuovo valore di rwnd per evitare la riduzione della finestra.
Nuovo ackNo + nuovo_rwnds >= ultimo ackNo + ultimo_rwnds
Controllo degli errori
Tcp è un protocollo di trasporto affidabile; il controllo degli errori garantisce affidabilità e
prevede meccanismi per l’individuazione e la rispedizione dei segmenti corrotti. Gli
strumenti usati dal protocollo TCP sono:
Cheksum
Il protocollo TCP prevede che ciascun segmento contenga un campo checksum di 16 bit,
utilizzato per identificare i segmenti corrotti. Se un segmento è corrotto questo viene
ignorato dal destinatario e considerato smarrito.

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

Per garantire il corretto svogimento delle

operazioni, la maggior parte delle implementazioni


TCP utilizza almeno quattro timer:

Timer di ritrasmissione

 Round Trip Time (RTT)

 Algoritmo di Karn

 Back-off esponenziale

 Timer di persistenza
 Timer keepalive
 Timer tempo d’attesa (2MSL)

Additive increase, multiplicative decrease


La versione più diffusa di TCP è attualmente Reno. In questa versione si è osservato che
nella maggior parte dei casi la congestione viene rilevata e gestita tramite la rilevazione dei
tre riscontri duplicati. Anche se vi sono alcuni eventi di timeout. TCP recupera rapidamente
la situazione grazie alla crescita esponenziale.
1. Incremento additivo quando arriva un riscontro.
2. Decremento moltiplicativo Quando viene rilevata la congestione, come se lo
slow start non esistesse e il fast recovery fosse ridotto a zero.

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

Quando si usa la CLI è importante conosce la sintassi del comando formata da


 Parola chiave, identifica univocamente il comando;
 Parametri, indicano gli oggetti su cui il comando agirà;
 Opzioni, modificano, nella modalità ma non concettualmente, l’azione eseguita
dal comando.
Avvolte con la CLI si vuole aprire un file che sono memorizzati sul disco, concettualmente il
file system di windows consente di organizzare in directory i file. Le directory possono
essere considerate alla stregua di settori logici di disco, indipendenti uno dall’altro. Ogni
directory è individuata da un nome che segue le stesse regole del nome del file. Le
directory sono organizzate dal sistema operativo in un astruttura ad albero. NB il simbolo
“\” indica la directory principale del disco(root).
Pathname
Il pathname è lo strumento utilizzato dall’OS per individuare con esattezza ogni singolo file
memorizzato su un disco, esso rappresente il percorso che il OS deve seguire per
individuare il file o la directory.
Pathname assoluto e relativo

Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398

In un comando per poter individuare un file, o un insieme di esse, bisogna specificare


sempre il pathname corrispondente. Questo può essere scritto in due modi assoluto o
relativo. Il pathname è assoluto nel momento in cui si specifica l’intero percorso del
file/directory che il OS deve seguire per individuarlo. Il pathname relativo, invece, tiene
conto della current directory. Se in un comando si digita il pathname relativo di un
file/directory il OS considererà come punto di partenza, per la localizzazione dello stesso, la
directory attivo.
Comandi
I comandi di Windows sono divisi in due categorie:
1. comandi interni;
2. comandi esterni.
I primi risiedono in memoria centrale e sono eseguiti dall’interprete dei comandi
CMD.EXE. I
secondi, invece, risiedono sul disco fisso sotto forma di file.
I comandi d’uso più frequente sono interni (CD, CLS, COPY, DEL, DIR, MD, RD, REN, e TYPE)
tutti gli altri sono esterni perché usati poco (TREE) o perché complessi (FORMAT, XCOPY).
La velocità di esecuzione dei comandi interni è maggiore rispetto a quella dei comandi
esterni
(l’accesso in memoria di massa richiede più tempo rispetto a quello in memoria centrale).
I file batch
I file batch, denominati anche script, consentono di automatizzare operazioni che
altrimenti
richiederebbero l’utilizzo della linea di comandi o dell’interfaccia grafica.
Un file batch è un file con estensione BAT contenente comandi del sistema operativo che
saranno
ordinatamente eseguiti quando l’utente lo richiederà.
I file batch sono utili nel momento in cui un utente utilizza ripetutamente la stessa serie di
comandi
oppure quando esegue uno stesso comando con diversi parametri e opzioni abbastanza
complesso da
ricordare.

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).

Servizi a livello di rete


Di seguito ci sono i servizi offerti da un protocollo di questo livello.
Suddivisione in pacchetti
Il primo compito del livello di rete è sicuramente la suddivisione dei dati in pacchetti: alla
sorgente incapsulare i dati ricevuti dal livello superiore (payload) in un pacchetto del livello
di rete e viceversa, alla destinazione decapsulare il payload dal pacchetto. Il livello rete
funge da vettore.
L’host sorgente riceve il payload da un protocollo di livello superiore, aggiunge
un’intestazione (header) che contiene gli indirizzi sorgente e destinazione oltre ad alcune
altre informazioni richieste dal protocollo del livello di rete e consegna il pacchetto al
livello di collegamento. La sorgente non è autorizzata a modificare il payload a meno che
esso non sia troppo grande per il trasferimento e quindi necessiti di essere suddiviso in
frammenti più piccoli. L’host di destinazione riceve il pacchetto di livello rete dal suo
livello di collegamento, lo apre e consegna il payload al protocollo di livello superiore
corrispondente. Se il pacchetto è stato frammentato, il livello rete deve attendere l’arrivo
di tutti i frammenti di quel pacchetto, riassemblarli e solo a questo punto consegnare il
payload al protocollo di livello superiore.
Instradamento (routing)
Un altro compito del livello rete, tanto importante quanto il primo, è l’instradamento. Il
compito del livello di rete è quello di instradare il pacchetto dalla sua sorgente alla
destinazione. Una rete fisica non è altro che la combinazione di varie altre reti e dei router
che le collegano. Ciò significa che, normalmente, c’è più di un percorso che va dalla
sorgente alla destinazione. Il livello di rete deve trovare il migliore tra tali possibili percorsi.
la scelta viene effettuata quando avviene l’esecuzione di alcuni protocolli di routing, che
hanno lo scopo di aiutare i router a condividere e coordinare la loro conoscenza sulla rete.
Inoltro (forwarding)
Se routing significa applicare strategie ed eseguire protocolli per creare tabelle di
instradamento in ogni router, l’inoltro (forwarding) si può definire come l’azione eseguita
dai router quando un pacchetto arriva ad una delle sue interfacce. La tabella d’inoltro che
viene normalmente utilizzata da un router per completare tale azione viene talvolta
definita, in modo piuttosto ambiguo, routing table. Quando un router riceve un pacchetto
da una delle reti a cui è collegato direttamente, deve inoltrare il pacchetto ad un’altra delle
reti a cui è collegato o a più reti a cui è collegato. Per prendere questa decisione il router
utilizza alcune informazioni che si trovano nell’intestazione del pacchetto, ovvero l’indirizzo

Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398

di destinazione o un’etichetta, per trovare la giusta interfaccia di output all’interno della


tabella d’inoltro.
Controllo degli errori
Sebbene il controllo degli errori possa essere realizzato anche a livello di rete, i progettisti
di tale livello in internet hanno deciso di ignorare questo aspetto. Una delle ragioni di tale
decisione è il fatto che i pacchetti a livello di rete possono essere frammentati in ciascun
router, un fatto che renderebbe il controllo degli errori piuttosto inefficiente visto che
dovrebbe lavorare su dati parziali.
Tuttavia, i progettisti hanno aggiunto un campo denominato checksum nel pacchetto, al
fine di controllare eventuali errori presenti nell’intestazione, ma non c’è alcuna verifica per
quanto riguarda il payload. Questa checksum può rilevare cambiamenti o errori
nell’intestazione del pacchetto che avvengono durante il trasferimento tra coppie i
dispositivi o tra la sorgente e la destinazione.
Internet utilizza un protocollo ausiliario chiamato ICMP che fornisce una sorta di controllo
degli errori nel caso un pacchetto venga scartato o contenga informazioni sconosciute
nell’intestazione.
Controllo di flusso
Il controllo di flusso regola la quantità di dati che una sorgente può inviare senza
sommergere il ricevente. Se il livello superiore dell’host sorgente produce dati più
rapidamente di quanto il livello superiore dell’host di destinazione possa consumare, il
ricevente sarà sommerso. Per controllare il flusso di dati il ricevente deve inviare un
feedback al mittente per informarlo che è sommerso di dati. Tuttavia, in internet il livello
di rete non fornisce direttamente alcun controllo di flusso, poiché non c’è controllo degli
errori, il lavoro che deve essere svolto è talmente semplice che raramente il ricevente sarà
sommerso, in secondo luogo, i livelli superiori che utilizzano i servizi offerti dal livello di
rete possono implementare dei buffer. Inoltre, il controllo di flusso quando necessario
viene fornito dai protocolli di livello superiore.
Controllo della congestione
Un ulteriore problema nei protocolli di livello rete è il controllo della congestione. La
congestione a livello di rete avviene quando troppi pacchetti sono presenti in una certa
area della rete. La congestione può avvenire se il numero di pacchetti inviati dai computer
sorgente supera la capacità della rete o dei router. In tale situazione alcuni router
potrebbero scartare alcuni dei pacchetti e la condizione della rete peggiorerà sempre di
più.
Qualità del servizio
La diffusione di internet ha permesso la creazione di applicazioni del tutto nuove, come ad
esempio la comunicazione multimediale. La qualità del servizio della comunicazione è
quindi diventata sempre più importante. Internet ha avuto successo anche cercando di
fornire una buona qualità del servizio per tali applicazioni. Tuttavia, per lasciare inalterato

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

congestione viene gestito dalla sorgente o dalla destinazione. Elenchiamo brevemente


alcune politiche che possono essere usate per prevenire la congestione.
Politica di ritrasmissione: la ritrasmissione di pacchetti a volte è inevitabile. Se il mittente
ritiene che un pacchetto inviato sia andato perso o sia danneggiato, il pacchetto deve
necessariamente essere ritrasmesso. La ritrasmissione, in generale, può aumentar la
congestione della rete. Tuttavia, una buona polita di ritrasmissione può prevenirla. Ad
esempio, è necessario studiare in dettaglio sia la politica di ritrasmissione sia parametri
come il tempo d’attesa prima del re-invio dei pacchetti, in modo da massimizzare
l’efficienza e allo stesso tempo prevenire la congestione.
Politica di gestione delle finestre: il meccanismo usato dal mittente per la gestione
dell’affidabilità nella comunicazione può influenzare la congestione. Un approccio basato
su selective repeat è migliore di quello Go-Back-N per il controllo della congestione. Nella
finestra GBN, quando il timer relativo ad un pacchetto genera timeout, vari pacchetti
possono venire reinvitai, anche se alcuni di questi sono arrivati. Tale duplicazione può
peggiorare la congestione.
Politica di riscontro: Anche la politica di riscontro implementata dal destinatario può
influire sulla congestione. Se il destinatario non fornisce un riscontro per ogni singolo
pacchetto che riceve, può rallentare il mittente, e quindi contribuire ad evitare la
congestione.
Politica di scarto: Una buona politica di scarto dei pacchetti da parte dei router può
prevenire la congestione salvaguardando al contempo l’integrità della trasmissione. Ad
esempio, se nella trasmissione audio la politica è quella di scartate i pacchetti meno
importanti, quando è probabile che stia per avvenire congestione, la qualità del suono sarà
comunque preservata e si preverrà o allevierà la congestione.
Politica di ammissione: meccanismo di gestione della qualità del servizio, può prevenire la
congestione nelle reti a circuito virtuale. I router prima di accettare la creazione di un
nuovo circuito virtuale possono verificare se in rete c’è congestione o prevedere se il
nuovo flusso la provocherà.
Controllo della congestione a ciclo chiuso
Questi meccanismi cercano di alleviare la congestione una volta avvenuta.
Backpressure (contropressione) meccanismo di controllo della congestione in cui un nodo
congestionato smette di ricevere dati dal nodo o dai nodi immediatamente a monte. Ciò
può far sì che il nodo o i nodi a monte divengano a loro volta congestionati e che quindi
inizino a rifiutare i dati dal loro nodo a monte e così via. Questa tecnica controlla la
congestione da nodo a nodo che inizia con un singolo nodo e si propaga, nella direzione
opposta rispetto al flusso di dati, fino alla sorgente. La tecnica della contropressione è
applicabile solamente in reti a circuito virtuale.

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

Formato di datagrammi IPv4


I pacchetti usati dal protocollo IP vengono definiti datagrammi IP. Un datagramma è un
pacchetto di livello variabile composto da due parti: l’header e il payload. L’header è lungo
dai 20 ai 60 byte e si rappresenta l’intestazione TCP/IP sotto forma righe di 4 byte ciascuna.
Singoli campi dell’intestazione:
 Numero versione 4 bit definisce la versione dell’IP.
 Lunghezza dell’intestazione 4 bit definisce la lunghezza totale dell’intestazione
del datagramma in parole formate da 4 byte.
 Tipo servizio questo campo doveva specificare il tipo di servizio ovvero il modo in
cui il datagramma doveva essere gestito dai router lungo il percorso, questo
campo è stato poi cambiato per fornire i così detti servizi differenziati.
 Lunghezza totale 16 bit (header + payload), questo campo è utile al dispositivo
ricevente per determinare se il pacchetto in ricezione è arrivato completamente.
 Identificazione, flag e scostamento di frammentazione (offset) questi tre campi
riguardano la frammentazione dei datagrammi IP che avviene quando la loro
dimensione è maggiore rispetto a quella che la tecnologia di livello
collegamento sottostante è in grado di trasportare.
 Time-to-live a causa di alcuni malfunzionamenti dei protocolli di instradamento, può
accadere che un datagramma circoli su Internet, visitando alcune reti più alla volta,
ma senza raggiungere la destinazione. Il campo TTL viene usato per controllare il
numero massimo di salti (hop).
 Protocollo. In TCP/IP la sezione dati relativa ai dati di un pacchetto chiamata
payload, incapsula l’intero pacchetto di un altro protocollo. Gli enti di gestione
internet hanno assegnato ad ogni protocollo che fa uso del servizio IP un numero
univoco composto da 8 bit, numero che viene di volta in volta inserito nel campo
protocollo all’interno dell’intestazione. Quando il payload viene incapsulato in un
datagramma nella sorgente, il numero di protocollo corrispondente viene inserito in
questo campo. È bene notare che il campo protocollo ha un ruolo simile ai numeri di
porta a livello trasporto
 Checkusm dell’intestazione IP è un protocollo inaffidabile, IP lascia l’onere del
controllo degli errori nei dati trasmessi al protocollo che è proprietario del payload.
Ma fornisce un checksum all’intestazione che deve essere ricalcolato ad ogni
router, campo 16 bit.
 Indirizzi sorgente e destinazione 32 bit l’indirizzo IP di destinazione è noto oppure è
ottenuto grazie al DNS valore immutabile.
 Opzioni fino a 40 byte test o debug.
 Payload dati
Frammentazione
Per giungere alla destinazione un datagramma IP può dover viaggiare attraverso varie reti.
il formato e la dimensione del frame ricevuto dipendono dalla tecnologia fisica e da quella

Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398

di livello di collegamento utilizzati per trasportare il frame. Viceversa, il formato e le


dimensioni del frame inviato dipendono dalla tecnologia fisica e da quella di livello di
collegamento della rete su cui il frame verrà inviato.
Maximum Transfer Unit MTU
Una delle caratteristiche di ciascun formato è la dimensione massima del payload che può
essere incapsulato nel frame. la dimensione totale del datagramma deve essere inferiore
rispetto a questa misura massima.
Quando un datagramma IP viene frammentato ogni frammento ha la propria intestazione.
Un datagramma frammentato può essere frammentato ulteriormente. La maggior parte
dell’intestazione, deve essere copiata nell’intestazione di tutti i frammenti.
Campi relativi alla frammentazione
 Identificazione 16 bit si intende l’IP + campo identificazione che definiscono
univocamente un datagramma. Quando il protocollo IP invia un datagramma,
copia il valore corrente del contatore nel campo identificazione ed incrementa il
contatore di uno.
 Flag 3 bit il primo bit è riservato, il secondo bit D è definito do not fragment, il terzo
bit M detto more fragments, indica se è l’ultimo pacchetto frammentato(0).
 Campo scostamento di frammentazione 13 bit indica la posizione del
frammento rispetto all’intero datagramma.
Sicurezza dei datagrammi IPv4
Ci sono tre aspetti di sicurezza.
Packet sniffing
Intercettare un pacchetto IP e farne una copia, attacco di tipo passivo è quasi impossibile
da evitare pero è possibile ricorrere a varie tecniche di cifratura.
Modifica dei pacchetti
L’intruso intercetta un pacchetto modifica il suo contenuto ed invia il nuovo pacchetto al
ricevente. Questo tipo di attacco può essere scoperto utilizzando un meccanismo per la
verifica dell’integrità dei dati. Il ricevente, prima di utilizzare il contenuto del pacchetto,
può verificare che non sia stato alterato durante la trasmissione.
IP Spoofing
Fingersi qualcun altro e creare datagrammi IP che utilizzano come indirizzo sorgente
quello di un altro computer. Questo tipo di attacco può essere evitato utilizzando un
meccanismo di autenticazione dell’origine.

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))

Indirizzo di rete (network address)


Il primo indirizzo, detto indirizzo di rete (network address), è particolarmente importante
in quanto è usato nell’istradamento dei datagrammi verso la rete di destinazione. Ogni
rete è identificata per mezzo del suo network address.
Assegnazione dei blocchi di indirizzi
Nell’istradamento senza classi l’assegnazione dei blocchi viene fatta dall’ICANN, che si
occupa di assegnare grandi blocchi di indirizzi agli ISP.
Pagina 202 per subnetting
Indirizzi speciali pagina 204
Dynamic Host Configurationg Protocol
Dopo che un blocco di indirizzi è stato assegnato ad un’organizzazione, l’amministratore di
rete può assegnare manualmente gli indirizzi ai singoli host o router. Tuttavia,
l’assegnazione degli indirizzi può anche essere automatizzata usando il DHCP. Quest’ultimo
è un programma di livello applicazioni basato sul paradigma client/server.
DHCP può essere configurato per molte situazioni: IP permanenti, temporanei.
Formato dei messaggi DHCP
Il DHCP è un protocollo client/server. Ci sono molti campi del messaggio che sono spiegati
nella figura 4.29 a pagina 205 del libro ma, soffermiamoci sul campo Options.
Il campo Options, 64 bit, ha un duplice scopo. Può trasportare informazioni aggiuntive
oppure la specifica di opzioni DHCP. Per scegliere quest’ultima possibilità, il server utilizza

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

Per risolvere il problema delle tabelle d’inoltro di dimensione eccessiva è possibile


implementare una sorta di gerarchia nelle tabelle d’inoltro. Oggi Internet ha una struttura
in qualche modo gerarchica.
Gli ISP nazionali sono suddivisi in: regionali e locali.
Così facendo le tabelle d’inoltro possono divenire più piccole poiché (Es) in un ISP locale ci
possono essere vari clienti, questi sono visti da tutto internet come singola entità, quindi i
messaggi, destinati a quei clienti, arrivano tutti in un’unica posizione per poi essere
trasmessi a singole entità dallo stesso ISP locale.

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

1. Non genera errori per un datagramma che ha come destinazione un


indirizzo multicast o speciale.
2. Nessun messaggio di errore ICMP sarà generato in risposta a un datagramma
che contiene un messaggio di errore ICMP.
3. Nessun messaggio di errore ICMP sarà generato per un datagramma
frammentato che non sia il primo frammento di una serie.
Si noti che tutti i messaggi di errore contengono un payload che include l’intestazione IP
del datagramma originale più i primi 8 byte di dati del datagramma contente informazioni
sulle porte.
Messaggi di richiesta
i messaggi di richiesta ICMP possono essere utilizzati senza bisogno di una relazione
specifica con un particolare datagramma IP. Questi messaggi sono usati per rilevare o
verificare il funzionamento di host o router nella rete, per trovare il tempo necessario ad
un datagramma per raggiungere una destinazione o per scoprire se gli orologi di due
dispositivi sono sincronizzati o meno. La coppia di messaggi richiesta eco (request) e
risposta echo (reply) è utilizzata da un host o da un router per verificare il funzionamento
di un altro host o router.
La coppia di messaggi richiesta timestamp e risposta timestamp è utilizzata per trovare il
tempo di round-trip della comunicazione tra due dispositivi.
Una delle applicazioni che un host può utilizzare per verificare il funzionamento di un altro
host è il programma ping.
Tracert in windows può essere utilizzato per individuare il percorso di un datagramma
dalla sorgente alla destinazione.
Routing unicast
Se un datagramma è destinato ad una sola destinazione si parla di routing unicast. Se il
datagramma è destinato a numerose destinazioni si parla di routing multicast. Infine, se il
datagramma deve essere consegnato a tutti gli host della rete, si parla di routing
broadcast.
Concetti generali
nel routing unicast quando si parla di instradare un pacchetto si intende instradare un
pacchetto da un router sorgente (router di defaul dell’host sorgente) a un router di
destinazione (router collegato alla rete di destinazione), non servono tabelle d’inoltro.
Per trovare il percorso migliore una rete di reti può essere modellata per mezzo di un
grafo.
Un grafo è formato da un insieme di nodi collegati da archi e ad ogni arco è associato un
costo.

Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398

Instradamento a costo minimo


Quando una internet viene rappresentata con un grafo pesato, uno dei modi per
interpretare il percorso migliore dal router sorgente a quello di destinazione è trovare il
minor costo tra i due.
Algoritmi di routing
Le differenze tra i vari metodi consistono nel modo in cui essi interpretano il costo minimo
e creano l’albero a costo minimo per ciascun nodo. In questa sezione parleremo degli
algoritmi alla base dei protocolli di instradamento, mentre in seguito si vedrà come questi
algoritmi sono implementati nei protocolli di routing usati in internet.
Routing basato su vettore distanza
L’instradamento basato su vettore distanza, distance-vector(DV) routing, sfrutta
l’approccio che abbiamo descritto poco fa per trovare il percorso migliore. Nel distance-
vector routing per prima cosa ogni nodo crea il proprio albero di costo minimo. Risultato
sono degli alberi incompleti. Questi alberi incompleti vengono scambiati tra i vicini per
rendere l’albero sempre più completo e rappresentare cosi l’intera rete.
Equazione di Bellman-Ford
Questa equazione viene usata per trovare il costo minimo tra un nodo sorgente, x e un
nodo destinazione y tramite nodi intermedi, dove i costi tra il nodo sorgente e i nodi
intermedi e i costi minimi tra i nodi intermedi e la destinazione sono noti.
D(xy) = min(Cxa + Day),(Cxb + Dby),(Cxe + Dey)…
Con il distance-vector routing si aggiorna il costo minimo esistente con il costo minimo che
si ottiene passando attraverso un nodo intermedio.
Dxy = min {Dxy’ (Cxz + Dzy)
Vettori distanza
Un albero a costo minimo è una combinazione di percorsi a costo minimo dalla radice
dell’albero verso tutte le destinazioni. Tali percorsi vengono collegati insieme per formare
l’albero. Il routing a vettore distanza scinde questi percorsi e crea quello che viene
chiamato un vettore distanza, cioè un array monodimensionale che rappresenta l’albero.
Il vettore riporta solo i costi minimi per le destinazioni. Quindi un vettore distanza può
rappresentare i percorsi a costo minimo di un albero a costo minimo.
Ogni nodo della rete quando viene inizializzato crea un vettore distanza rudimentale con le
sole informazioni disponibili al momento della creazione, queste informazioni vengono
ottenute scambiando messaggi di benvenuto tra i suoi vicini. Quindi crea un semplice
vettore distanza inserendo distanze scoperte nelle celle corrispondenti e lascia a infinito le
altre. Per migliorare questi vettori, i nodi della rete devono aiutarsi scambiandosi
informazioni.

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

Protocolli di routing unicast


Un protocollo, a differenza di un algoritmo, deve definire il suo ambito di funzionamento,
i messaggi che vengo scambiati, la comunicazione tra i router e l’interazione con i
protocolli di altri ambiti.
Analizzeremo il routing information protocol RIP, che si basa sull’algoritmo a vettore
distanza; l’Open Shortest Path First OSPF, basato sull’algoritmo a stato del collegamento, e
il Border Gateway Protocol BGP, che si basa sull’algoritmo Path-vector.
Struttura di Internet
Ci sono numerose dorsali, gestite da società private di telecomunicazioni, che forniscono la
connettività globale. Tale dorsali sono connesse tramite alcuni peering point che
consentono la connettività tra dorsali. A livello inferiore, ci sono dei network provider che
utilizzano le dorsali per avere connettività globale ma principalmente forniscono servizi di
connettività a clienti Internet. Infine, ci sono le customer network che usano i servizi forniti
dai network provider. Tutte queste entità possono essere definite ISP. In tutti e tre i casi
forniscono dei servizi, ma a livelli differenti.
Routing gerarchico
Internet oggi è costituita da un numero enorme di reti e di router che le collegano. È
ovvio che il routing su internet non può essere effettuato usando un singolo protocollo.
 Problema di scalabilità, dato dalla dimensione delle tabelle d’inoltro, la ricerca
di una destinazione farebbe perdere molto tempo e gli aggiornamenti
creerebbero una gigantesca quantità di traffico.
 Problema amministrativo, dato dalla struttura di internet, ogni ISP è un’autorità
amministrativa autonoma e come tale deve avere il controllo sul suo sistema. La
società proprietaria dell’ISP deve poter utilizzare tutte le sottoreti ed i router di cui
ha bisogno. Implementare un routing gerarchico significa considerare ogni ISP come
un sistema autonomo (AS). Ogni AS può eseguire un protocollo di routing che
soddisfa le sue esigenze. A livello di internet globale, questo non è possibile: è
necessario un protocollo di routing globale in grado di unire assieme tutti gli AS. Il
protocollo usato all’interno degli AS viene definito protocollo di routing intra-AS,
protocollo di routing intradominio, o interior Gateway Protocol; il protocollo di
routing globale viene definito protocollo di routing inter-AS, protocollo di routing
interdominio o Exterior Gateway Protocol.
I sistemi autonomi
I sistemi autonomi non sono classificati rispetto alla loro dimensione; vengono classificati a
seconda del modo in cui sono connessi agli altri AS: Stub, multihomed e transito. Il tipo
influenza il funzionamento del protocollo di routing inter-dominio rispetto all’AS.

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

richiesta corrispondente. Un messaggio di risposta non sollecitato, invece, viene inviato


periodicamente o quando c’è un cambiamento nella tabella d’inoltro.
Timer in RIP
Per il suo funzionamento, RIP utilizza tre timer. Il timer periodico controlla l’invio dei
messaggi di aggiornamento. Ogni router ha un timer periodico che viene impostato a un
valore scelto casualmente nell’intervallo tra 25 e 35 secondi. Il timer effettua il conto alla
rovescia; quando arriva a zero viene inviato un messaggio d’aggiornamento e il timer viene
impostato nuovamente in modo casuale. Il timer di scadenza regola la validità dei percorsi.
quando un router riceve delle informazioni aggiornate per un percorso, il timer di scadenza
viene impostato a 180 secondi. Ogni volta che viene ricevuto un nuovo aggiornamento, il
timer del relativo percorso viene fatto ripartire dal valore iniziale. Se ci sono dei problemi
in una rete e non viene ricevuto alcun aggiornamento nell’arco dei 180 secondi assegnati,
il percorso viene considerato come scaduto e il suo conto dei salti viene impostato a 16. Il
timer per la garbage collection viene usato per eliminare i percorsi dalla tabella d’inoltro.
Open Shortest Path First (OSPF)
L’OSPF è anch’esso un protocollo di routing intra-dominio come il RIP, ma si basa
sull’instradamento a stato del collegamento che abbiamo descritto in precedenza. Esso è
un protocollo aperto, il che significa che la sua specifica è un documento pubblico.
Metrica
Nell’OSPF, come nel RIP, il costo per raggiungere una destinazione dall’host si calcola dal
router sorgente alla rete di destinazione. Tuttavia, ad ogni collegamento può venire
assegnato un peso a seconda del suo throughput, tempo di round-trip, affidabilità ecc. un
amministratore, eventualmente. Può anche decidere di usare come metrica il numero di
hop.

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

Livello di collegamento reti cablate


Introduzione
Nodi e collegamenti
Anche se la comunicazione nei livelli di applicazione, trasporto e rete è end-to-end, quella
a livello di collegamento è invece da nodo a nodo. È consuetudine riferirsi ai router e agli
host alle due estremità come a nodi e alle reti nel mezzo come a collegamenti.
Due tipi di collegamenti
I nodi all’interno delle reti sono fisicamente collegati da un mezzo trasmissivo, come un
cavo o l’aria. Compito del livello di collegamento è controllare come viene usto tale mezzo.
Possiamo avere un livello di collegamento che utlizza l’intera capacità di un mezzo oppure
solo parte della sua capacità.
Collegamento punto-punto: collegamento dedicato a due soli dispositivi.
Collegamento broadcast: collegamento condiviso tra varie coppie di dispositivi.
Due sotto-livelli
Possiamo dividere questo livello in due sotto-livelli: il Data-Link Control (DLC) e il Controllo
dell’Accesso al Mezzo Trasmissivo (Media Access Contro, MAC).
Il sotto-livello di DLC si occupa di tutte le questioni comuni sia ai collegamenti punto-punto
che a quelli broadcast. Il sotto-livello MAC si occupa invece solo degli aspetti specifici dei
canali broadcast.
Data-Link Control DLC
Il DLC si occupa delle procedure per la comunicazione tra due nodi adiacenti,
indipendentemente dal fatto che il collegamento sia dedicato o broadcast. Le funzioni DLC
comprendono il framing, controllo di flusso, il rilevamento e la correzione degli errori.
Framing
Trasmettere i dati, a livello fisico, significa inviare i bit sotto forma di segnali dalla sorgente
alla destinazione. Il livello fisico fornisce la necessaria sincronizzazione in modo che il
mittente e il ricevente utilizzino la stessa durata, e temporizzazione, per i bit.
Il livello di collegamento, inoltre ha la necessità di raggruppare i bit all’interno di frame,
questo per fare in modo che sia possibile stabilire un ordine tra i bit e distinguerli gli
uni dagli altri.
Il framing, a livello collegamento, ha il compito di separare i vari messaggi durante la
trasmissione da una sorgente a una destinazione. Opera aggiungendo a singoli frame sia
l’indirizzo del mittente che quello della destinazione.

Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398

Controllo di flusso e degli errori


Controllo di flusso
cosi come avviene a livello trasporto, il controllo di flusso coordina la quantità di dati che
può essere inviata prima di ricevere un riscontro.
Controllo degli errori
Il controllo degli errori comprende sia il rilevamento che la correzione degli errori.
Consente al ricevente di informare il mittente circa gli eventuali frame persi o danneggiati
durante la trasmissione e coordina la ritrasmissione di tali frame da parte del mittente. A
livello di collegamento, il termine controllo degli errori si riferisce principalmente ai
metodi di rilevamento degli errori e di ritrasmissione. Ogni volta che viene rilevato un
errore in uno scambio di dati, i frame danneggiati vengono ritrasmessi.
Rilevamento e correzione errori
A livello collegamento se un frame viene corrotto durante il trasferimento tra due nodi e
quindi risulta danneggiato, deve essere corretto prima che possa continuare il suo viaggio
verso i nodi successivi. Tuttavia, la maggior parte dei protocolli di livello collegamento
semplicemente scartano i frame danneggiati, lasciando la gestione dell’eventuale
ritrasmissione ai protocolli di livello superiore.
Tipi di errore
Ogni volta che i bit fluiscono da un punto ad un altro sono soggetti a cambiamenti
imprevedibili, a causa delle interferenze. Queste interferenze possono cambiare la forma
del segnale e quindi alterare la ricezione dei bit. Il termine errore su un singolo bit (single-
bit error) indica che un solo bit in una determinata unità di dati è stato cambiato da 1 a 0 o
viceversa. Il termine errore a raffica (burst error) indica che 2 o più bit nell’unità di dati
sono stati cambiati di valore.
La probabilità che avvenga un errore a raffica è più elevata rispetto a quella di un errore su
un singolo bit, in quanto la durata dell’interferenza (rumore) normalmente è più lunga
rispetto a quella di un solo bit.
Rilevamento e correzione
Correggere un errore è molto più difficile che limitarsi a rilevarlo. Nel rilevamento degli
errori si cerca solamente di individuare se si è verificato un errore.
Nella correzione degli errori, invece, dobbiamo conoscere l’esatto numero di bit che si
sono danneggiati e, cosa più importante, la loro posizione nel messaggio. Il numero di
errori e la dimensione del messaggio sono fattori importanti. Se dobbiamo correggere un
singolo errore in un’unita di dati da 8 bit, bisogna considerare 8 possibili posizioni
dell’errore. Se dobbiamo correggere 2 errori in un’unità dati della stessa dimensione,
bisogna considerare ben 28 possibilità.

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

Il throughput di ALOHA puro è S = G x e^-2G


Slotted ALOHA
Nello slotted ALOHA il tempo viene diviso in slot (intervalli di dimensione fissa) di Tfr
secondi e le stazioni vengono forzate a trasmettere solo all’inizio degli slot.
Siccome le stazioni sono sincronizzate e possono trasmettere solo all’inizio degli slot, se si
lasciano sfuggire tale momento, devono attendere fino all’inizio dello slot successivo.
Ciò significa che, a questo punto, la stazione cha ha avviato la trasmissione nello slot
precedente avrà ormai già finito di inviare il suo frame.
Throughput per lo Slotted ALOHA è S = G x e^-G
Carrier Sense Multiple Access (CSMA)
Per ridurre al minimo la probabilità di collisione e, quindi aumentare le prestazioni, è stato
sviluppato il metodo CSMA. La probabilità di collisione si può ridurre se una stazione
verifica lo stato del mezzo trasmissivo prima di cercare di utilizzarlo. Il CSMA richiede che
ogni stazione ascolti il mezzo trasmissivo prima di trasmettere. In altre parole, il CSMA si
basa sul principio del “rilevare prima di trasmettere” o “ascoltare prima di parlare”.
Il CSMA può ridurre la probabilità di collisioni, ma non può eliminarle del tutto.
Metodi di persistenza
 i persistente: Secondo questo metodo, se una stazione trova il canale attivo
continua a controllarlo fino a quando non diviene inattivo. Questo metodo ha la
più alta probabilità di generare collisioni in quanto due o più stazioni possono
trovare il mezzo trasmissivo inattivo ed inviare immediatamente i loro frame.
 Non persistente: in questo metodo una stazione che deve inviare un frame rileva il
mezzo trasmissivo. L’approccio non persistente riduce la probabilità di collisioni in
quanto è improbabile che due o più stazioni attendano esattamente lo stesso lasso
di tempo. Tuttavia tale metodo riduce l’efficienza della rete in quanto il mezzo resta
inattivo quando invece potrebbero esserci delle stazioni con dei frame in attesa di
essere inviati.
 P persistente: il metodo p persistente viene utilizzato se il canale è stato suddiviso
in intervalli fissi di tempo. Esegue i seguenti passi. Con probabilità p, la stazione
invia il suo frame, con probabilità q= 1-p, la stazione attende l0inizio del prossimo
slot e controlla nuovamente il mezzo trasmissivo; se il mezzo è inattivo, torna al
punto 1, se è occupato agisce come se fosse avvenuta una collisione e utilizza la
procedura di back-off.
CSMA/CD
Il metodo CSMA non specifica la procedura da seguire a seguito di una collisione. Il
Carrier Sense Multiple Access with Collision Detection a partire dall’algoritmo CSMA
aggiunge una parte relativa alla gestione delle collisioni.

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.

Address Resolution Protocol ARP


Assumiamo che su internet ci sia un nodo che intende comunicare con un altro nodo e che questa coppia di
nodi sia separata da un certo numero di router. Il nodo mittente ovviamente conosce l’indirizzo IP della
destinazione ed inoltre è a conoscenza del router di default che si trova all’interno della sua rete locale.

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.

LAN cablate: protocollo Ethernet


Il livello di collegamento e quello fisico sono principalmente di pertinenza delle LAN e delle WAN. Questo
significa che quando si parla di questi due livelli, in realtà si sta discutendo delle reti che li utilizzano.

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.

Progetto IEEE 802


La IEEE Computer Society (institute of electrical and electronics engineers) iniziò un progetto, chiamato
Progetto 802, con l’obbiettivo di definire uno standard per l’interconnessione tra dispositivi di produttori
differenti, cioè intendeva definire chiaramente le funzioni specifiche del livello fisico e di collegamento dei
protocolli LAN.
Logical Link Control LLC
Nel caso di IEEE 802, il controllo di flusso, il controllo errori e parte delle funzioni di framing sono raccolte in
un unico sotto-livello, chiamato Logical Link Control (LLC). Uno dei vantaggi di LLC è il fatto che fornisce un
singolo protocollo di controllo del livello di collegamento comune per tutte le LAN definite dall’IEE. In altri
termini, questo significa che grazie al protocollo LLC è possibile avere interoperabilità tra diverse tecnologie
LAN. Questo è possibile dal momento che LLC rende il sotto-livello MAC trasparente al livello superiore.
Media Access Control MAC
Si è visto in precedenza che esistono diversi approcci per l’accesso multiplo al canale condiviso: accesso
casuale, accesso controllato e suddivisione in canali. L’IEEE 802 ha definito un sotto-livello chimato Media
Access Control MAC che definisce il metodo d’accesso specifico per ciascuna tipologia di LAN. Ad esempio il
MAC per le LAN Ethernet è il CSMA/CD.

Ethernet Standard
In questa parte si fa riferimento alla tecnologia Ethernet originale (10Mbps).

Servizio senza connessione e inaffidabile

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.

Lunghezza del frame

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.

Trasmissione degli indirizzi MAC

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.

Distinzione tra trasmissione unicast, multicast e broadcast

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.

Unicast, multicast e broadcast sono trattati diversamente dai riceventi:


 Unicast: tutte le stazioni ricevono il frame. il destinatario lo memorizza le altre lo scartano
 Multicast: tutte le stazioni ricevono il frame. quelle che appartengono al gruppo multicast
lo memorizzano le altre lo scartano
 Broadcast, tutte le stazioni (eccetto il mittente) ricevono il frame, lo memorizzano e lo gestiscono.

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.

Efficienza dell’Ethernet Standard

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.

Efficienza = 1/(1 + 6,4 x a)

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

Reti telefoniche (dial-up)


Una connessione dial-up utilizza i servizi forniti dalla rete telefonica per trasmettere dati. La rete telefonica,
che spesso in inglese viene detta Plain Old Telephone System (POTS), è nata alla fine dell’ottocento ed era
originariamente un sistema analogico per la trasmissione della sola voce. Con l’avvento dei computer, negli
anni ottanta, la rete ha iniziato a trasportare dati in aggiunta alla fonia.

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.

I collegamenti dial-up sono asimmetrici.

Digital Subscriber line (DSL)


Vista la limitatissima banda messa a disposizione dai collegamenti dial-up, le compagnie telefoniche hanno
sviluppato un’altra tecnologia, chiamata DSL, per fornire un accesso più veloce ad internet. La tecnologia
DSL permette comunicazioni digitali ad alta velocità sulla linea telefonica esistente. In realtà si tratta di una
famiglia di tecnologie che nelle loro sigle differiscono per la prima lettera dell’acronimo usato per
identificarle (ADSL, VDSL, HDSL e SDSL). Questo insieme di tecnologie è molto spesso chiamato xDSL dove la
x può essere sostituita con le lettere A, V, H o S.

Ci occuperemo della ADSL tecnologia DSL con la caratteristica di essere asimmetrica.

Utilizzo dei local loop esistenti


Un aspetto interessante p che l’ADSL utilizza le linee telefoniche esistenti. Generalmente, l’ampiezza di
banda disponibile viene suddivisa in un canale voce, un canale di upstream e un canale di downstram.

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

Switch di livello collegamento


Uno switch di livello collegamento opera sia a livello fisico che a livello di collegamento. Come dispositivo di
livello fisico rigenera il segnale che riceve. Inoltre come dispositivo di livello collegamento, è in grado di
verificare gli indirizzi MAC contenuti nel frame

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. I router cambiano gli indirizzi di livello collegamento dei

frame.

Scaricato da CC CC ([email protected])
lOMoARcPSD|4641398

Reti wireless e IP Mobile


Mezzo trasmissivo

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.

Connessioni ad altre reti

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

Attenuazione del segnale

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.

Controllo dell’accesso al mezzo


Forse il problema più importante di cui dobbiamo parlare in una LAN wireless è il controllo d’accesso,
ovvero come un host wireless può avere accesso al mezzo di trasmissione condiviso.

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.

Protocollo MAC 802.11


L’IEEE 802.11 definisce due tecniche di accesso al mezzo: una distribuita (distributed coordination function -
DFC) in cui i nodi si contendono l’accesso al canale, e un’altra centralizzata (point coordination function -
PCF), in cui non c’è contesa e l’AP coordina l’accesso dei nodi al canale.

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.

Collisione durante l’handshaking

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])

Potrebbero piacerti anche