Il 0% ha trovato utile questo documento (0 voti)
11 visualizzazioni26 pagine

Appunti Reti

Il documento 'Appunti Reti' di Simone Battisti per il 2024/2025 tratta vari aspetti delle reti informatiche, inclusi protocolli, accessi alla rete e mezzi di comunicazione. Vengono esplorati i livelli della rete, dal livello applicativo a quello di collegamento, con dettagli su protocolli specifici come HTTP, TCP e IP. Inoltre, il documento affronta tematiche come la commutazione, il controllo di congestione e l'architettura delle reti.

Caricato da

Simone Battisti
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 PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
11 visualizzazioni26 pagine

Appunti Reti

Il documento 'Appunti Reti' di Simone Battisti per il 2024/2025 tratta vari aspetti delle reti informatiche, inclusi protocolli, accessi alla rete e mezzi di comunicazione. Vengono esplorati i livelli della rete, dal livello applicativo a quello di collegamento, con dettagli su protocolli specifici come HTTP, TCP e IP. Inoltre, il documento affronta tematiche come la commutazione, il controllo di congestione e l'architettura delle reti.

Caricato da

Simone Battisti
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 PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 26

Appunti Reti

Simone Battisti

2024/2025

Contents
1 Introduzione 3
1.1 I protocolli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Accessi alla rete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Mezzi di Comunicazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2 Nucleo della Rete 4


2.1 Commutazione di Circuito . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2 Ritardo di un nodo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.3 Perché stratificare? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.4 Protocolli di rete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.5 PDU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3 Livello Applicazione 6
3.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.2 HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.3 Cookie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.4 Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.5 HTTP/2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.6 FTP: File Transfer Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.7 Posta Elettronica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.8 DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.9 Architettura Peer-to-Peer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.10 Cloud Computing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.11 Content delivery Network . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.12 Programmazione delle Socket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

4 Livello Di Trasporto 12
4.1 Servizi di Trasporto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.2 Multiplexing e Demultiplexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.3 User Datagram Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.4 Principi per un Trasferimento Affidabile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.5 TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.6 Principi del Controllo di Congestione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.7 Controllo di Congestione TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.8 Algoritmi di Approccio contro la Congestione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.9 Metodi odierni di Soluzione alla Congestione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

5 Livello di Rete 16
5.1 Obbiettivo Principale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5.2 Come è fatto un Router . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5.3 Il protocollo IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.4 Tipi di indirizzi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
5.5 NAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
5.6 Address Resolution Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
5.7 Internet Control Message Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
5.8 Dynamic Host COnfiguration Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
5.9 Viaggio di un Pacchetto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5.10 IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5.11 Protocolli di Instradamento - Algoritmo di DIjkstra (link state . . . . . . . . . . . . . . . . . . . 20
5.12 Internet, AS, OSPF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

1
5.13 Intra-AS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.14 Distance Vector: Bellman-Ford . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
5.15 Broder Gateway Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

6 Livello di Collegamento/Data Link 23


6.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
6.2 Rilevamento e Correzione di Errori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
6.3 Protocolli e Tecnologie per l’Accesso Multiplo al Canale . . . . . . . . . . . . . . . . . . . . . . . 24
6.4 Ripartizione delle Risorse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
6.5 Protocolli ad Accesso Casuale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
6.6 Protocolli a ”Turni” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
6.7 IEEE ed Ethernet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
6.8 Switch Ethernet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2
1 Introduzione
1.1 I protocolli
Ogni rete ha più protocolli che eseguono certe funzioni specifiche, alcuni anche un asingola funzione.
Internet è definito come rete di reti, ha una struttura gerarchica di interconnessione, con dei provider che
generano dei collegamenti tra queste reti, anche intercontinentali.
La rete internet si divide in reti pubbliche e private:
• Pubbliche: rete che si connette con delle altre reti esterne
• Private: rete che non si connette con altre reti esterne
Internet offre 2 servizi principali:
• Servizio Affidabile: ritorna dall’internet tutti gli oggetti byte per byte, ma se la rete è scarsa ci possono
essere delle perdite di byte e lo scaricamento viene riavviato.
• Servizio Best-Effort: definito non affidabile perché funziona senza connessione, se ci sono perdite di dati se
ne frega e manda avanti.
La definizione di protocollo dice:”un protocollo definisce il formato e l’ordine dei messaggi scambiati tra due o
più entità in comunicazione, cosı̀ come le azioni intraprese in fase di trasmissione/ricezione di un messaggio o
di un altro evento”.

1.2 Accessi alla rete


Ai confini della rete ci sono gli host che fanno girare i servizi di base (mail, web, datacenter,...), oppure possono
richiedere collegamenti a certi terminali esterni,
L’accesso alla rete può essere di tipo:
• Aziendale: una rete locale collegata tramite lan/ethernet via cavo, con tutti gli ethernet collegati ad uno
switch.
• Wireless: ci si collega ad un Access Point, cioè una stazione base di collegamento
In una tipica rete domestica si possono trovare alcuni componenti:
• DSL o modem
• Router/firewall/NAT
• Ethernet
• Access Point
Molto importante il NAT che non fa accedere la rete privata ad una pubblica e sparge la connessione a tutti gli
utenti in modo intelligente.

1.3 Mezzi di Comunicazione


Il tipico elemento di connessione della rete è il cavo, formato da:

3
Invece il cavo ethernet è formato da:

I cavi possono essere di tipo coassiale, usato dalla rete televisiva, con conduttori in rame e bidimenzionale,
ma molto ingombrante. Al giorno d’oggi si usa molto di più la fibra ottica, molto sottile, ad altra frequenza
trasmissiva e riesce a fare collegamenti senza interferenza, comprendo molta distanza.
Un canale usato poco al giorno d’oggi è il canale radio, contiene connessioni come la Lan, Wide-area o i segnali
satellitari.

2 Nucleo della Rete


2.1 Commutazione di Circuito
La rete è formata da un flusso di dati punto a punto che dividono i dati in paccheti.
All’interno di un nodo di rete possono arrivare più dati di più utenti. Ovviamente più gente accede al nodo,
più in ritardo arriveranno i dati.
La comunicazione viene coperta da degli ISP di rete che si dividono in 3 livelli:
• ISP di livello 1 : sono ISP che danno copertura sia nazionale che internazionale e comunicano tra loro come
”pari ”.
• ISP di livello 2 : sono ISP più piccoli a livello nazionale che possono connettersi solo ad iISP di livello uno
e possibilmente ad altri ISP di livello 2.
• ISP di livello 3 : sono l’ultimo livello e vendono detti ”ultimo salto” e sono le più vicine ai terminali veri e
propri.
Un pacchetto deve attraversare molte reti con percorsi di andata e ritorno che non sono sempre uguali tra loro.

2.2 Ritardo di un nodo


Esistono vari tipi di ritardo e vengono sommati tra loro dnode = dproc + dqueue + dtrans + dprop .

• dproc : ritardo di elaborazione, solitamente di pochi millisecondi


• dqueue : ritardo di accodamento, dipende dalla congestione di dati attraverso un nodo/router.
• dtrans : definito da L
R, significativo sui collegamenti a vassa velocità.dprop : può andare da pochi millisecondi
a centinaia.
Il ritardi di accodamento (dcode ) fa riferimento alla teoria delle code. Avendo una cera frequenza di trasmissione
(R bit/s), una lunghezza del pacchetto (L bit) e il tasso medio di arrivo dei pacchetti (A), possiamo definire che
A
l’intensità del traffico è definita = L ∗ R e possiamo dire che l’intensità di traffico:
• 0 se il ritardo è molto piccolo
• 1 se il traffico è consistente
• > 1 se il ritardo è ingestibile e bloccante

4
Per mantenere stabilità nel traffico il canale deve essere usato circa al 95%, mai al 100% perché il ritardo è
ingestibile e molti dati non arriveranno più o con molto ritardo.
Per definire il percorso e la misura del ritardo sfruttiamo il programma diagnostico Traceroute, richiamabile
da terminale, che segue un pacchetto attraverso tutto il suo percorso di router e ritorna una ”tabella” dei router
con il tempo di ritardo tra i due.

Solitamente il traceroute non viene espresso per sicurezza informatica da attacco hacking di rete, dato che fornisce
indirizzi IP e nomi di ogni router.
Solitamente i pacchetti arrivano tutti, quando vengono persi dei pacchetti significa che non sono stati smaltiti
correttamente e il router non ha le risorse per mandarlo perché trova nodi pieni che non riescono a gestire bene
grandi smaltimenti di dati.
Per evitare ciò poche volte si decide di controllare il Troughput, il passaggio di dati in unità di tempo, che può
essere istantaneo o medio in base alle capacità del troughput. Il suo funzionamento va a collo di bottiglia, cioè
se si mette un troughput piu piccolo davanti a quello più grande o al contrario, la velocità di percorso è definita
dal collo più piccolo.
Nella realtà il modello principale di Troughput è:

2.3 Perché stratificare?


Quando si ha a che fare con sistemi complessi le reti vengon stratificate, questo processo viene detto modular-
izzazione e facilita la manutenzione e l’aggiornamento del sistema.
Ogni sistema è quindi formato da layers che possono parlare al livello superiore e inferiore. Ognuno contiene un
protocollo e i suoi servizi vengono forniti tramite delle interfacce dette SAP (Service Access Point).
Lo scambio di informazioni attraverso i layer avviene tramite dei protocolli.
I protocolli sono divisi in:
• Applicazione: supporto alle applicazioni di rete
• Trasporto: trasferimento di messaggi di livelli tra il client e il server

• Rete: direziona i dati dall’origine al destinatario


• Link (collegamento): direziona i dati tra i commutatori di pacchetto
• Fisico: trasferimento dei singoli bit

5
Molte reti sfruttano il modello ISO/OSI dove il blocco applicazione è diviso in: sessione, presentazione e appli-
cazione. La presentazione consente alle applicazioni di interpretare i dati(livello macchina). La sessione recupera
i dati e sincronizza i pacchetti.

2.4 Protocolli di rete


• Livello 1 - Fisico: trasmette i bit attraverso un mezzo di comunicazione (elettrico, luminoso, sonoro..)
• Livello 2 - Collegamento: fornisce il trasferimetno di dati tra entità di livello 2 e sistema gli errori (se
presenti) nel livello 1. Le comunicazioni sono a ”single-hop”, quindi fanno in singolo salto di livello.
• Livello 3 - Rete: consegna i dati tra il livello 3 e l’host, con servizi senza connessione (connection-less) o
serviczi a connessione (connect oriented. Nel primo caso ogni pacchetto è indipendente uno dall’altro, nel
secondo caso invece i pacchetti stabiliscono una rotta prefissata che verrà seguita per tutto lo scambio di
dati.
• Livello 4 - Trasporto: risolve i problemi nel livello 3, ricompone i dati dei pacchetti.
• Livello 5 - Sessione: mantiene la comunicazione attiva tra due entità durante tutto il passaggio di dati.
COsı̀ facendo gestisce il flusso lungo tutto il passaggio di dati, evitando la perdita di pacchetti.
• Livello 6 - Presentazione: codifica/decodifica i dati dal dato host al dato rete. Molto spesso è integrato
con l’applicazione.
• Livello 7 - Applicazione: fornisce i mezzi per scambiare i dati dall’applicazione alla rete

2.5 PDU
Il sistema di livelli viene definito da una PDU (Protocol Data Unit), che ne determina l’esistenza nella rete.
Per creare una PDU vengono assemblati dei dati.

3 Livello Applicazione
3.1 Introduzione
Il livello applicazione collega la rete con le interfacce terminali, tramite vari tipi di connessione, come:
• Peer-To-Peer (P2P): il tipo di connessione più diffuso che consente di scambiare dati anche con l’assenza
di un server, basta l’esistenza di un singolo punto di riferimento tra due terminali (Esempio: messaggistica
istantanea).
• Cloud Computing: metodo che memorizza e archivia/elabora i dati tramite delle risorse sparse nella
rete, fornendo (oltre allo scambio) servizi di backup automatici gestiti dalla connessione stessa, servizi di
risoluzione degli errori automatici legati alla rete e sicurezza dei propri dati in rete. È un investimento
utile per progetti di grande e piccola scala, per avere una sicurezza in più sulla riuscita del progetto.
Ogni processo che invia e riceve messaggi ha la susa socket, una sorta di porta che riceve/invia i messaggi
passsati dal processo, controllando se esiste un’infrastruttura adatta al trasporto del pacchetto.
Ogni host ha un indirizzo, che ”indirizza” i pacchetti da un livello all’altro, questo indirizzo si divide in due
codici principali:

6
• Indirizzo IP : definisce l’host di destinazione ed è univoco per ogni host

• Indirizzo di Porta: messo in aggiunta all’inidirizzo IP per definire la porta di ingresso. Non è del tutto
necessario.
A livello applicazione il protocollo, oltre alla gestione rete-utente, gestisce anche i messaggi scambiati e la sintassi
dei campi del messaggio, definendo bit per bit la richiesta voluta dall’utente.
In questo tipo di protocollo sono ammesse perdite di dati, solo per certi tipi di file audio e video, poiché
avrebbero delle perdite impercettibili all’uomo, dovuti solitamente a ritardi nella rete o a problemi di Troughput.
Quest’ultimo spesso ha bisogno di un minimo di dati epr essere efficiente, quindi può avere dei rallentamenti o
delle perdite.

3.2 HTTP
HTTP (Hyper Text Transfer Protocol ) è il protocollo di base delle interfacce web e definisce l’inzio del codice
univoco che definisce ogni pagina web, l’URL.
Questi URL portano alle pagine nel famoso World Wide Web (www), inventato da Tim Berners-Lee, che
definisce un ”insieme” di pagine web a cui connettersi per navigare. Quando parliamo di pagine web intendiamo
pagine HTML, cioè dei ”fogli” che contengono la disposizione di oggetti all’interno della pagina, descritti e
implementati da linguaggi esterni (JavaScript, PHP, Css, ...).
Il protocollo HTTP è di tipo CLient Server ed è basato su un formato request - response, con la particolarità di
essere memoryless, cioè, per ogni pagina visualizzata, il protocollo non ”ricorda” quella precedente, ogniuna sarà
considerata nuova e senza precedenti. Definiamo ora il tempo di risposta, in gergo viene chiamato Round-Trip
Time (RTT), cioè il tempo che ci mette un pacchetto a fare andata e ritorno tra 2 host:

Per calolare il RTt: RT T = Ttx + 2Tp , dove Ttx è il rapporto tra la dimensione del segmento e la velocità
di trasmissione, mentre Tp è il tempo di propagazione.
Viene anche stimato con: RT Tstimato = (1 − α)RT Tstimato + αRT Tcampionato .
HTTP è formato da due tipi di messaggi, richiesta e risposta, questi metodi sono defintii in 3 funzioni principali,
GET, POST e HEAD per l’HTTP/1.0, nelle versioni successive, come HTTP/1.1 si sfrutta in più la funzione
PUT che include file all’interno della pagina, susseguida dalla funzione DELETE, che elimina il file.
HTTP sfrutta la porta 80.

3.3 Cookie
I cookie, seguono l’interazione server - utente, sono formati da 4 componenti:
• una riga di intestazione nel messaggio di risposta
• una riga di intestazione nel messaggio di richiesta

• un file cookie mantenuto sia sul sistema dell’utente che sul browser
• una compressione di byte nell’header

7
Questi cookie hanno come funzionamento principale la raccolta di azioni fatte dall’utente per semplificare il
caricamento delle pagine web. I cookie ricevono le informazioni sulla macchina e ogni volta che si apre un sito
registra le azioni dell’utente, quando poi questo sito sarà riaperto dalla stessa macchina i cookie caricano già le
pagine che l’utente ha precedentemente cercato, per favorire una minore latenza nell’esperienza.
Un cookie dura solitamente una settimana, ma possono esser ecancellati dalle impostazioni del browser.

3.4 Cache
Alcune connessioni usufruiscono di servizi di proxy che creano una cache (salvataggio momentaneo) di qualche
sito, per favorire una velocizzazione nel caricamento delle pagine. Ad esempio la connessione universitaria unitn-x
mantiene un proxy attivo che genera una cache di dati del sito unitn.it. La funzionalità èiù importante della
cache è l’interconnessione che genera tra i dispositivi, dando praticamente possibilità ad un utente di caricare
una pagina che velocizzerà il caricamento della stessa pagina su un altro dispositivo che carica la stessa pagina
sulla stessa rete.

3.5 HTTP/2.0
Al giorno d’oggi HTTP è stato fortemente migliorato, fino ad arrivare alla versione più moderna e utilizzata
HTTP/2.0. Questa versione si focalizza sul traffico di dati, cercando di diminuire drasticamente la latenza
utente - server.
Questo migliroamento viene fatto tramite un nuovo protocollo chiamato SPDY, che si basa sul trasporto di
contenuti web con la minima latenza tramite l’utilizzo di:
• Multiplex di Flussi : supporta un numero illimitato di flissi su una singola connessione
• Gestione delle Priorità: il pacchetto viene suddiviso in più pezzi, ognuno con delle priorità che l’utente
dovrà vedere prima o dopo sulla sua macchina
• COmpressione dei dati da mandare all’header : comprime i dati dell’header, cosı̀ da mostrare ”qualcosa”
all’utente il prima possibile.
HTTP/2.0 aggiugo inoltre il Frming Binario, cioè l’incapsulamento dei messaggi, che vengono codificati du-
rante il trasporto con dei frame più piccoli. I frame sono dei flussi di dati in cui viene spezzato un dato, sia in
andata che in ritorno e sono la più piccola forma di comunicazione in rete.
I vari frame vengono poi riassemblati da specifici identificatori di flusso, univoci per ciascun frame e collegati
direttamente all’interfaccia utente.
Questo nuovo HTTP deve essere utilizzato solo con altri HTTP della sua stessa versione, dato che non è com-
patibile con le versioni precedenti, che non reiscono a leggerlo.

In HTTP/2.0 c’è un livello di trasporto all’interno, considerato molto più sicuro, questo è chiamato Transport
Layer Security (TLS), che controlla che client e il server siano semrpe gli stessi durante la connessione e lo

8
scambio di dati, aumentando anche la sicurezza dato che si assicura inoltre che lo scambio sia andato a buon fine,
controllando che i dati siano arrivati senza problemi e integri. Richiamiamo TLS, e quindi HTTP/2.0, quando ci
connettiamo ad un URL che si connette alla porta 433, al posto della porta 80 sfruttata dal normale HTTP.
Possiamo notare questa connessione perché il nostro URL sarà inizializzato da un HTTPS.
Il problema di HTTPS è la latenza, infatti tutti questi controlli aumentano il tempo di connessione client server
di molto. Una soluzione è utilizzare dei protocolli più moderni come HTTP/3.0 O QUIC.
HTTPS sfrutta la porta 443.

3.6 FTP: File Transfer Protocol


L’FTP (File Transfare Protocol ), solitamente presente all’interno dell’interfaccia utente, permette il trasferi-
mento di file da un host remoto tramite modello client-server, ssfruttando la porta 21.
IL client contatta il server FTP alla relativa porta e ottiene l’autorizzazione dalla connesione di controllo e
appena il server ha il ”via” per condividere i filem viene aperta una connessione dati client-server. Dopo il
trasferimento la connessione viene chiusa.
I server FTP sfruttano la porta 20 e la porta 21, la prima viene sfruttata per la connessione dati TCP, la
seconda per la connessione di controllo TCP.

3.7 Posta Elettronica


È formato da 3 componenti principali:
• Agente Utente: detiene le capacità di creare una mail, leggerla e autorizzare i relativi download/upload
di eventuali allegati. Scarica il server delle mail nel nostro servizio applicativo in locale.

• Server di Posta: è la vera e propria casella di posta che contiene i messaggi in arrivo all’utente, gestendo
la coda dei messaggi.
• Protocollo SMTP (Simple Mail Transfare Protocol): i server tra di loro cono collegati da questo
protocollo per lo scambio di dati.

La porta del server che accede tramie SMTP è la porta 25 che viene usata sia come ricerca dell’utente, sia come
porta di trasferimento della posta.
I messaggi si posta elettronica sono formati da un’intestazione seguida da una riga vuota e infine il corpo.
L’intestazione contiene il nome del mittente e destinatario, con il relativo oggetto (diversi dalle informazioni del
SMTP, quelli sono definiti nel codice RFC822 della mail), il corpo contiene invece il messaggio intero codificato
in soli codici ASCII.
L’accesso alla posta può essere fatto con 3 tipo di protocollo diversi:
• POP: autorizzazione agente-server che tramite autorizzazione gestisce il download in locale delle mail (più
utilizzata). La versione più utilizzata di oggi è il POP3 che richiede uno username e una password per
accedere alla mail direttamente (fase di autorizzazione), subito dopo il client elenca i messaggi e fornisce
anche un processo di eliminazione (fase di transizione).

• IMAP:i messaggi vengono vengono sia visti in locale, che in remoto via server che darà una risposta in
pase all’autorizzazione (OK o ERR).
• HTTP: gmail, hotmail, ...
Possiamo anche usare insiele SMTP e il TLS, per avere una maggior sicurezza di comunicazione, portando allo
sfruttamento delle porte:
• Porta 465 per SMTP
• Porta 995 per POP3
• Porta 993 per IMAP

3.8 DNS
Il DNS (Domain Name System), come dice il nome, definisce il dominio di una pagina web. È un database dis-
trubuito che consente a server e client di trovare la pagina web di riferimento, considerando anche lo stato/regione
in cui ci si trova. Riesce infatti a raggruppare tutti gli indirizzi IP di una regione all’interno di raggrup-
patori specifici, cosı̀ da velocizzare i collegamenti.

9
Ogni DNS ha un server TDL, che si occupa di gestire i domini, sia a livello basso (.com, .org, ...), sia a livello
alto (.it, .de, .es, ...) e un server di competenza che è gestito dalle singole aziende che detengono i suddetti
domini per le loro pagine.
I DNS esiste anche in locale funge da cache dei dati delle pagine e dei servzi richiesti. Questi dati durano poco
tempo, perché vengono eliminati dopo un certo periodo di tempo, dato che sono salvati sul ”server” locale.
Una volta che il DNS ha ”imparato” la mappatura per arrivare ad un certo dominio, cacha i dati permettendo
una più rapida visualizzazione la prossima volta che apriremo la pagina. I dati cachati sono formati da un name
e da un value:

• A: il value è l’indirizzo IP e il name è il nome dell’host. È quello più usato.


• NS: il value è il nome dell’host di cometenza, mentre il name è il nome del dominio.
• CNAME: definito solo dal name definito da un alias di un server.

• MX: definito dal solo value che rappresenta il nome del server di posta associato.
I messaggi del DNS sono formati da una domanda, la query e da una risposta, entrambe con lo stesso formato:

Il DNS sfrutta la porta 53.

3.9 Architettura Peer-to-Peer


L’architettura P2P è definita da un server, che non è mai sempre attivo, infatti viene attivato quando connette
i due host (peer ) li connette direttamente e spegne la cominicazione dopo lo scambio di informazioni. I peer non
devono essere necessariamente sempre attivi, dato che cambiano il loro indirizzo IP di continuo.
Il P2P è definito da due argomenti chiave:
• Distribuzione di file: i file chevengono scambiati, tramite metodo client-server, in frequenza invia N copie
di file in un tempo T = NµFs
, mentre il client impiega un tempo t = Fd dove d è la velocità di download.
P
Il tempo più veloce di tasso di upload è dato da: µs + i µi . In generale la velocità in download del P2P
è data dalla formula:

10
dP 2P = max( µFs , min(d)
F
, (µ +NP
F
µi )
)
s
i

Lo scambio P2P più rapido è definito dallo scambio torrent, dove un gruppo di dispositivi connessi in
P2P si scambiano pezzi di un file tra loro. Quando vogliamo scaricare un file, accediamo a questa rete
P2P e attendiamo che tutti i pezzi di questo file vengano recepiti dal nostro dispositivo, creando cosı̀ il file
totale. Questi pezzi di file vengono detti chunk (solitamente da 1 kB), e vengono passati casualmente al
nostro dispositivo. La rete torrent è complicata da mantenere in vita, perché dato che i disositivi possono
connettersi (seeder → altruisti) e disconnetersi (leech → egoisti) a piacimento. In alcuni peer posono venire
richieste ai vicini delle liste di chunk per dare una priorità nel download e per trovare quali sono i file più
”rari ” all’interno della rete torrent.
• Ricerca Informazioni: un indice di sistemi P2P da tutte le informazioni all’interno della rete, con relative
posizioni degli host, solitamente visualizzato come una Distribute Hash Table. Nel caso del file sharing
l’indice tiene traccia dimanicamente della posizione del file e a lui vengono condivise tutte le informazioni
di ogni peer. Anche i peer stessi fra loro consultano l’indice, per trovare i chunk a loro mancanti. Nel
caso invece della messaggistica istantanea, l’indice crea l aorrispondenza tra utenti e posizione. Quando
l’utente aprirà il client di messaggistica, l’indice riceve la sua posizione e i signoli peer lo consultano
per trovare l’utente destinatario. La ricerca di informzioni viene svolta all’interno di un’unica directory
centralizzata, quest opuò causare problemi, dato che avremo un unico punto di guasto, che inchioda tutto
il sistema e soprattutto avreo delle prestazioni a collo di bottiglia. Spesso in questo tipo di tecnologie ci
sono stati casi di violazione del copyright.
Per risolvere questi problemi viene usato il query flooding, dove la rete diventa completamente distribuita,
dove i peer sono connessi a meno di 10 peer a loro vicini nella rete di copertura. La copertura è cosı̀ definita
gerarchica, dato che esisono dei peer maggiori detti leader, che vengono connessi ai loro rispettivi peer
minori, detti figli e ne tengono traccia e locazione.

3.10 Cloud Computing


Il cloud computing prevede uno o piò server reali, generalmente organizzati in un’architettura ad alta affidabilità,
collegato ad un data center centrale. Il cloud computing offre vari serizi (mail, calendario, ecc) sfruttando una
VM (Virtual Machine) definite solo per fornire quel singolo servizio. Può anche offrire servzi di storage, dove
una parte del detacenter centrale, facendo pagare il servizio in base allo spazio di memoria che viene occupato.
La pecca principale del Cloud COmputing sta nella migrazione dei dati se per caso vogliamo cambiare servizio,
dato che per ottimizzare gli spazi i nostri file vengono convertiti in file più leggeri, solitamente con estensioni
diverse in base al proprietario del datacenter che abbiamo scelto.

3.11 Content delivery Network


La Content Delivery Network (CDN) costruisce una rete virtuale sopra lala rete internet dove distribuiamo
i contenuti che vogliamo passare. È formata da vari nodi che sono posti in posizioni strategiche, cosı̀ se vengono
uploadati dei file ”lontani” da noi, possiamo lo stesso downloaddarli sul nostro dispositivo senza problemi di
distanza, fornendo un’ottimizzazione della rete e una riduzione della latenza. La difficoltà nella CDN è quella che
bisogna conoscere ogni secondo lo stato della rete (difficile, dato che la CDN ricopre la rete internet e riuscire a
”parlare” con essa risulta complicato), dato che la CDN ricaldcola costantemente gli stati dei troughput, cosı̀ da
consetire ad un solo client di potersi connettere con più server.

11
3.12 Programmazione delle Socket
Se volessimo provare ad accedere alle informazioni che ci fornisce la pila TCP/IP devo utilizzare le socket, cioè
un’interfaccia di host locale controllata dal sistema operativo che invia e riceve messaggi dal processo di
un’altra applicazione, accedendo direttamente al livello di trasporto.
IL client contatta il server il esecuzione, questo apre una ”porta” che da il benvenuto al contatto col client.
Creando una socket TCP si stabilisce una comunicazione, di tipo client-server, col server e ogni volta che se ne
apre un’altra, verrà aperta una ”porta” diversa.

4 Livello Di Trasporto
4.1 Servizi di Trasporto
Forniscono la comunicazione tra processi applicativi di host differenti, eseguiti solitamnete nei sistemi terminali
e ce ne sono due principali UDP e TCP.
Questi servizi offrono una connessione logica tra processi basati sul livello di rete e lo potenziano. Il livello di
trasporto si basa sul sistema che ognuno ha sul proprio client e sulle infomazioni del server a cui è connesso
in quel momento. Il tipo di servizio più usato è il TCP, molto affidabile e consegna i dati in ordine, ma
richiede molte complessità, come la creazione di un collegamenteo logico, una funzione di controllo del flusso e
un setup della connessione.
L’UDP invece è una semplice estensione del servizio di connessione, è inaffidabile e consegna i dati (tutti forse)
in disordine.

12
4.2 Multiplexing e Demultiplexing
Il multiplexing un servizio compreso in UDP e TCP, consiste, tramite delle socket e delle porte, di gestire più
flussi di traffico in una singola connessione di rete. Questo consente al livello di trasporto, anche se apriamo
connessioni multiple, di gestirle tutte assieme.
Al contrario il demultiplexing prende questi segmenti di pacchetti che sono stati portati all’interno di un singolo
flusso e gli spacchetta nei vari flussi. Il multiplexing quindi avviene quando ad un server arrivano più dati e li
impacchetta, poi quando arrivano al client vengono spacchettati dal demultiplexing.
I numeri di porta di TCP e UDP sono definiti statici (se associati a applicazioni standard di rete) o dinamici (se
assegnati al sistema quando viene aperta una connessione), le porte di partenza e arrivo non sono mai le stesse.
Il socket del UDP è identificato da due parametri: l’indirizzo IP di destinazione e la relativa porta. Le
socket TCP, invece, sono identificate da 4 parametri: gli indirizzi IP di destinazione e origine e le relative
porte.

4.3 User Datagram Protocol


L’User Datagram Protocol o UDP, come abbiamo visto, è un protocollo di tranporto a best effort, é caratterizzato
dalla grande possibilità di perdita dei dati e dall’assenza di handshaking tra mittente e destinatario. Il suo
vantaggio è la bassa complessità, e la leggerezza, tuttavia è senza controlli di congestione, quindi non si
regola in base al buffer di ricezione.
Viene spesso però utilizzato in applicazioni multimediali, dove non notiamo la perdita di pochi pacchetti di
dati, in compenso abbiamo una ridotta latenza rispetto al TCP.
In compenso fornisce un servizio al lato client DI Checksum UDP che rileva gli errori (bit alterati ), in due
passaggi:
• Lato Mittente: tratta il contenuto della sequenza di 16 bit, il checksum controlla e somma tutte le parole
in un complemento a 1 e lo pone nel campo di checksum dell’UDP in partenza.
• Lato Ricevente: somma tutte le parole in 16 bit arrivate nel segmento, con il checksum, e controlla se
il risultato è una parola di 16 bit tutti a 1. Se non ci sono 0 allora quasi sicuramente il contenuto è
completo, se c’è almeno uno 0 allora il contenuto ha almeno un errore.

4.4 Principi per un Trasferimento Affidabile


Per rendere affidabile una rete si sfruttano gli Automatic Repeat reQuest o ARQ, che cercano di recuperare
tutte le perdite di pacchetti durante uno scambio UDP, sfruttando gli acknowledgment o ACK, dei pacchetti
speciali che notificano la corretta ricezione di un pacchetto. Se non ricevo l’ACK (lato destinatario) entro un
tempo prestabilito allora significa che il pacchetto presenta degli errori, quindi viene rimandato dal mittente.
L’ARQ più usato è lo stop-and-wait che invia una PDU e imposta automaticamente un timeout sul pacchetto
scambiato, allo scadere del tempo riceve l’ACK e controlla che non ci siano errori.
Quando il ricevitore prende la PDU controlla se ci sono errori (tramite checksum) e se l’ordine e se l’ordine è
corretto passa il package ai livelli superiori, se invece l’ACK non ritorna ci sono errori oppure il pacchetto di
risposta è stato smarrito, in ogni caso la PDU viene eliminata e fa ripartire il passaggio dei dati da capo.
Il tempo minimo per trasmettere un pacchetto è T = RT R T +L
. Questo fa creare un sacco di vuoti nel tempo,
perché posso inviare un solo pacchetto ogni RTT, quindi viene perso tempo.
Se abbiamo RTT molto piccoli possiamo usare questa soluzione, se abbiamo RTT ampli è inutilizzabile per la
troppa latenza.
Possiamo usare al posto della della sop-and-wait dei protocolli di pipelining, dove il trasmettitore accetta che
ci siano diversi pacchetti ”in volo”, cioè per i quali non ha ancora ricevuto il relativo ACK, quindi non
sono controllati, ma ne tiene sempre traccia.
IL troughput di dati in pipeline è definito dalla funzione: T roughput = (RT T N L
+Ttrans ) . Definiamo quindi 4
definizioni fondamentali per i protocolli di pipelining:
• Finestra di Trasmissione (Wd ): insieme delle PDU che il trasmettitore trasmette senza avere ricevuto
le relative ACK.

• Finestra di Ricezione (Wr ): insieme di PDU che il recevitore può accettare.


• Puntatore Low (WLow ): puntatore al primo pacchetto trasmesso (sicuramente confermato nella Wt (a
runtime).
• Puntatore Up (WU p ): puntatore all’ultimo pacchetto trasmesso (probabilmente non ancora confermato)
nella Wt (a runtime).

Gli ACK possono essere di più tipi:

13
• ACK indivuale: inindica la ricezione corretta di un pacchetto ACK(n) (ricevuto il paccehtto n).
• ACK cumulativo: prende in considerazione un insieme di ACK, ACK(n) (in questo caso ha ricevuto tutti
i pacchetti fino a n escluso).
• Piggybacking: inserimento di un ACK nel pacchetto di dati.
Altri tipi di pipeline possono essere possono essere go-back-n, che sfrutta ACK cumulativi o il selective repeat,
che sfrutta ACK individuali dei singoli pacchetti.
Nel primo caso viene associato un timer all’ultimo pacchetto senza ACK e se il timer scade prima che l’ACK
arrivi al mittente, tutti i pacchetti vengono rispediti. Mentre nel secondo caso il timer viene posto nei pacchetti
dove l’ACK non è stato trasmesso e allo scadere del timer se ha ricevuto tutti gli ACK riinvia i pacchetti con
ACK mancante.

4.5 TCP
Il suo formato è uguale dagli anni 80, è formato da un protocollo punto-punto con relativo mittente e desti-
natario, consente un flusso di byte affidabile e in ordine, sfruttando: il pipelining e dei meccanismi controllo
per la congestione, sfruttando degli ACK comulativi. Il controllo della congestione evita di saturare la rete,
sfruttando in full duplex, un flusso bidirezionale nella stessa connessione, con dimensione massima chiamata
MSS. È orientato alla onnessione, infatti lo scambio di dati avviene tramitehandshaking, dato che inizializza sia
lo stato del mittente e del destinatario, prima di effettuare lo scambio di dati.
IL TCP ha una dimensione della finestra di ricezione (RNWD) di 16 bit, che indica il numero massimo di byte
che il ricevitore può immagazzinare, di conseguenza definisce anche la massima quantità di dati trasferibili ogni
RTT.
La procedura di setup del TCP è detta THREE-WAY-HANDSHAKE, dove abbiamo 3 host:
• Host A: host di partenza con sorgente A e destinatario B, con un numero sequenzale x, forinsce un segmento
SYN=1
• Host B: host mediano con porta sorgente B e destinataria A, ritorna un segnmento con SYN e ACK = 1,
con un numero sequenziale y e ACK = x + 1.
• Host A: ritorno della connessiona al mittente, porta un ACK = 1 e numero di ACK = y +1.

La lunghezza massima di un segmento TCP (come detto in precedenza) è definita dalla Maximum Segment
Size (MSS ). Dato che TCP lavora in byte, non vieme mai mandato un singolo byte alla volta, a meno che non
sia forzato. Per quest ol’MSS va scelto bene, per favorire al meglio la fluidità della rete.
L’MSS dipende da un paramentro del livello di rete sottostante (come l’indirizzo IP ad esempio) detto Maximum
Transfare Unit (MTU), che a sua volta dipende dal livello inferiore. L’MSS definisce solo la lunghezza dei singoli
pacchetti (payload) trasportati nel flusso.
La scelta della MSS dipende dalla velocità della pila protocollare, servirebbe infatti che i vari livelli parlino fra
loro, ma è impossibile, solitamente il default value del MSS è 1460 byte, se non funziona si diminuisce fino ad
un minimo di 536 byte.

4.6 Principi del Controllo di Congestione


Definiamo come congestione quando troppi trasmettitori trasmettono troppi dati e la rete non riesce a gestire
tutto.
Solitamente la congestione si manifesta in pacchetti persi e ritardi molto lunghi e definisce delle possibili
situazioni
• due trasmettitori e due ricevitori che ricevono un buffer infinito.

14
• un router e che riceve un buffer finito e il mittente trasmette tutti i pacchetti finiti in timeout.

• il mittente invia dati solo se il router ha spazio (risultato ideale).


• la congestione causa ritardi e se scatta il timeout per un pacchetti il mittente ne invia una seconda copia.
Per sistemare le congestioni solitamete si applica un metodo nel quale si controlla che un pacchetto sia effet-
tivamente perso, quindi si fa un check che il timeout sia molto lungo, oppure vengono applicate delle rotte
multi-salto (che causano però delle perdite).
Questo però applica un costo molto alto dato che tutte le risorse usate per arrivare fino a quel punto vengono
sprecate..

4.7 Controllo di Congestione TCP


Per risolvere i problemi di congestione a livello TCP esistono vari tipi di algoritmi, ognuna per rimuovere le
limitazioni degli algoritmi precedenti. Tutte le implementazioni di TCP dipendono dal sistema operativo in uso.
Il controllo della congestione è una parte principale di TCP, adatta il tasso di trasmissione alle condizioni della
rete, evitandone il congestionamento. Ci sono vari approcci possibili, come:

• Controllo di congestione end-to-end: che non coinvolge direttamente la rete e capisce se c’è congestione
da dalla presetnza di perdite di paccehtti e ritardi.
• Controllo di congestione assistito dalla rete: i router forniscono un feedback agli host di rete sullo
stato.

4.8 Algoritmi di Approccio contro la Congestione


Esistono vari algoritmi con cui sistemare la congestione di TCP. Uno dei fondamentale è l’Addittive Increase
Multiplicative Decrease (AIMD): il mittente aumenta il tasso di trasmissione (cioè la finestra) cercando
di occupare la banda disponibile fino a che non si rilevano delle perdite. Questo tipo di algoritmo fa ottenere
un’equità (fairness), cioè abbiamo K sessioni di TCP che condividono lo stesso link di banda R, allora viene
applicato un collo di bottiglia che fa percepire una banda R/K.
I meccanismi per il controllo della congestione si adattano alla finestra di congestione, (CWND). In TCP
esistono vari modi di adattare le CWND:
• Assenza di perdite

– Slow Start
– Congestion Avoidance
• Con perdite
– Fast retransmit
– Fast recovery
Per Slow start per ogni ACK valido si aumenta di un MSS la CWND, facendola aumentare esponenzialmente.
M SS
Nel Congestion Avoidance invece per ogni ACK ricevuto si aumenta la CWND di M SS · CW ND .
Per evitare la congestione possiamo agire su 4 parametri principali:
• Finestra di congestione: la possiamo aumentare se la rete ha possibilità di gestire il traffico

• Slow start threshold: la possiamo diminuire per ridurre la dirate del slow start e passare più velocemente
al congestion avoidance
• Retransmission timeout: lo possimao aumentare per dare più tempo alla rete di consegnare i pacchetti
• WLOW e WU P : possiamo ritardare lo spostamento

Possiamo sfruttare poi il fast retransmit che gli ACK diplicati in fondo ci dicono che la rete funziona, dando
fiducia alla rete e alla ricezione del terzo ACK duplicato ritrasmetto il pacchetto che non arriva e entro in fast
recovery, il processo nel quale abbasso il threshold e se arrivano altri ACK duplicati abbasso anche la CWND,
quando poi mi arriva un ACK valido posso regolare threshold=CWND.
Con questi metodi possiamo riscontrare problemi di equità. Questo è il motivo per il quale le applicazioni
multimediali sfruttano spesso UDP e non TCP. Le applicazioni parallele (che possono aprire varie connessioni)
invece sfruttano molto spesso TCP.

15
4.9 Metodi odierni di Soluzione alla Congestione
Ad oggi con le nuove connessioni TCP sfruttano le sole indicazioni dei pacchetti persi per attivare degli algoritmi
”anti-congestione”.
Alcune soluzioni sono:
• CUBIC: algoritmo di controllo per la congetione. In paricolare varia la lunghezza della CWND secondo
una funzione cubica nel tempo:
q
CW N Dmax (1−β
CW N Dcubic (t) = C(t − K)3 + CW N Dmax , con K = 3
C , con C = 0.4 e β = 0.7

Dopo la congestione la finestra viene la finestra è scalata di β.

• BBR: risponde alla congestione effettiva, non alla perdita di pacchetti, incentrandosi sul miglioramento
delle prestazioni della rete. Agisce in server side e sfrutta il concetto di pacing, che invece di inserire
nella CWND i tutti pacchetti consentiti, gli inserisco al ritmo con il quale li invia il nodo più lento. BBR
consente le riduzioni significative nella latenza.
• QUIC: progettato da Google nel 2012 e evita fenomeni di Head-of-Line Blocking, dato che usa TUDP
e riduce la latenza delle connessioni TCP. In QUIC il processo di handshake è incorporato, eliminando la
necessità di incorporare una connessione TCP.

5 Livello di Rete
5.1 Obbiettivo Principale
L’obbiettivo principale del livello di rete è quello di spostare pacchetti dal mittente al destinatario. Il
mittente incapsula i segmenti in datagrammi (poi in frame nel livello 2) e il ricevente li recupera e li consegna
al livello di trasporto.
Ci sono protocolli di livello di rete in tutti gli host e router. Gli ultimi ispezionano tutti gli header dei datagrammi
in base alle decisioni di inoltro.
Le due funzioni principali del livello di rete sono:

• Inoltro (o Forwarding): dove un’operazione locale sposta il pacchetto da inviare dall’ingresso all’uscita
del router
• Instradamento (o Routing: un’operazione con scala globale, che determina il percorso tramite degli
algoritmi di routing.

Le due funzioni sono definite da due funzioni principali, la prima è descritta dal Data Plane, una funzione locale
a ogni router che determina come inoltrare un datagramma da una porta di arrivo ad una di uscita tramite fun-
zione di forwarding. La seconda è definita dal Control Plane, che determina come creare un percorso end-to-en
dal mittente al destinatario.

5.2 Come è fatto un Router


Un router è formato da 3 punti principali:
• un livello fisico per il trasferimento dei bit

• un livello di ling che consente la ricezione dei dati all’interno del router
• un sistema di commutazione che in base ai campi dell’header trova il destinatario e con esso la porta di
uscita corretta

Il sistema di commutaione ha un tasso di commutazione, differente per ogni router, che identifica la frequenza
con quale i pacchetti vengono spediti e può avere più strutture:

16
• Commutazione a Memoria: la prima generazione di router formati da porte di ingresso, una memoria
(direttamente del computer) dove venivano copiati i pacchetti, con una commutazione limitata dalla banda
di rete.
• Commutazione a Bus: si usa un bus di dati condiviso interno al router per trasmettere i datagrammi
dagli ingressi alle uscire, dove la velocità è limitata ”solamente” dalla banda del bus stesso (la sua velocità
di trasferimento).

• Commutazione a Matrice: formato da una matrice di punti di interconnessione tra l’ingresso e l’uscita,
sueprando cosı̀ i limiti della commutazione a bus tramite un design avanzato, arrivando ad una commu-
tazione fino a 60 Gbit/s.
In tutti questi casi esiste però ancora il problema del limite di pacchetti che può sostenere il buffer, che solitamente
richiede una memoria raccomandata di: M emoria = RT√TN·C , dove C è la velocità di trasporto (Gbit/s) e N è il
numero di fussi.
Per ovviare agli accodamenti si è deciso di implementare un meccanismo di scheduling, che decide che pacchetti
mandare secondo un algoritmo FIFO (First-Input-First-Output).

5.3 Il protocollo IP
IL protocollo IP è il protocollo fondamentale all’interno del livello di rete che definisce l’indirizzo del desti-
natario di un pacchetto di dati, tramite 4 numeri a 16 bit.
Il protocollo IP è definito da molti campi:
• VER: numero di versione IP (solo 4 o 6).

• Lunghezza Header: indica quante parole a 32 bit sono presenti nell’header del pacchetto.
• Tipo di Servizio/TOS: indica la calsse di servizio del datagramma.
• Lunghezza Totale: indica il numero di byte nel datagramma, includendo l’header.

• Identificazione (ID) del Datagramma: numeri sequenziale assegnato al dataframma in caso di raccolta
di specifici frammenti per riassemblare il datagramma.
• FLAG: campo in cui si specifica se il pacchetto è un datagramma intero o un singolo frammento.
• Offset del Frammento: indica in quale punto del datagramma va inserito quel frammento.

• Time To Live (TTL): numero intero definito dal mittente, diminuisce di 1 per ogni hop che il frammento
fa di router in router. Se raggiunge 0 il pacchetto viene scartato.
• Protocollo Superiore: specifica il protocollo nel livello di trasporto viene usato (UDP o TCP).
• Checksum dell’Header: come in UDP.

• Indirizzi IP Mittente e Destinatario


• Opzioni IP: non sempre presente nell’header, controllano l’instradamento dei datagrammi.
• Padding: aggiunta di 0 se le ipdioni non terminano in un multiplo di 32 bit, in modo che l’header sia
divisibile per 32 bit.

Ciascun tipo di hardware specifica un limite di dati Maximum Transmission Unit (MTU), dove ciascun
datagramma deve contenere un numero di Byte pari al MTU di quel router, se no l’hardware non reisce ad
incapsularlo. Ogni rete ha il suo MTU.
Se vengono persi dei pacchetti nella rete il datagramma non può essere più ricomposto, il ricevitore continuerà
a ricercare i pacchetti, non finendo ma. Per evitare ciò viene specificato un tempo massimo di trasmissione
nel protocollo IP, che se viene superato la trasmissione viene tagliata.
Gli host e router devono usare le stesse convenzioni di indirizzo e ogni indirizzo deve essere UNICO, anche se
ogni interfaccia può contenere più indirizzi. Quando si invia un pacchetto il mittente specifica il suo indirizzo IP
e quello del ricevitore, poi i router prendono decisione di inoltro in base a solo l’indirizzo IP di destinazione.
Genericamente un indirizzo IP è diviso in 2 parti:
• Un prefisso che identifica a quale host la rete è attaccato, detto NetID, unico per ogni rete al mondo in
base alla loro Local Area Network (LAN ).
• Un suffisso che indentifica l’interfaccia a cui è allacciata quella rete, detto HostID, unico per ogni dispos-
itivo nella rete.

17
Il NetID e l’HostID vengono identificati da diverse classi, definite come:

Le classi più affollate sono le prime 3, dato il numero di Host che contengono. Le ultime 2 sono quelle meno
usate.
L’assegnazione di questi indirizzi è definita dalla Internet Corporation for Assigned Names and Numbers (ICANN),
che assegna indirizzi alle aziende o ai singoli per evitare dispute. Non gli assegna direttamente, ma sfrutta dei
registar che danno degli ISP di rete per prendersi direttamente dei blocchi di indirizzi, mai un singolo host.
Il problema che ora abbiamo però è quello di conoscere il limite tra NetID e HostID, per farlo sfruttiamo 32 bit
di memoria, dove quelli a 1 sono quelli del prefisso. In IP questa informazione è chiamata Subnet Mask,
definita mascherà perché permette di estrarre il prefisso e perendere delle decisioni in base a quello (basta solo il
NetID al protocollo IP).
Per identificare questo tipo di scrittura possiamo usare la notazione detta Notazione CIDR che oltre alla solita
notazione decimale dell’indirizzo IP (xxx.xxx.xxx.xxx) aggiunge alla fine un /n dove n indica la quantità di 1
nella maschera:

Il client può fornire all’host più porte sulle quali connettersi, questo manda in confusione l’host stesso, quindi
viene sfruttata una nuova maschera detta netmask, che se ”sommata” all’indirizzo IP ritorna l’IP preciso del
dispositivo al quale connettersi. Esempio:

5.4 Tipi di indirizzi


Gli indirizzi IP possono essere divisi in IP pubblci e privati. La maggioranza è definita da indirizzi pubblici,
cioè indirizzi raggiungibili via internet pubblico. La minoranza è definita da indirizzi privati che sono solitamente
riservati e non possono essere usati come indirizzi di destinazione tramite Internet.
Sono quindi usati per la costruzione di reti private che soddisfano 3 requisiti: non escono dalla rete, sono sempre
univoci nella rete creata e solitamente sono assegnati dinamicamente.
Alcuni indirizzi IP sono considerati ”speciali” dato che non vengono mai assegnati ai singoli host, oppure alcuni
vengono detti Indirizzi di ”tutta la rete” dato che sono IP che non si riferiscono ad un singolo host, ma ad
una rete intera. Per crearli l’HostID è composto da tutti 0 e non possono essere usati come destinazione. Tutti
gli host di quella rete avranno lo stesso indirizzo IP della rete, ma con HostID diverso per ogni macchina.
Un altro indirizzo IP speciale è il Directed Brodcast Address che semplifica l’invio di pacchetti all’interno di
una sola rete. Si genera ponendo a 1 tutto l’HostID.
Questo tipo di indirizzo IP può essere anche di tipo locale, chiamato Limited Broadcast Address e con questo
indirizzo i datagrammi non escono mai dalla rete, perché è un indirizzo di soli 1 (solitamente usato quando l’host
si è appena connesso e non sa cosa fare).
Esistono poi gli Indirizzi Loopback che servono per testare le applicazioni di rete, dove un componente manda
un datagramma ad un’altro contenente l’applicazione. Hanno un IP di riserva: 127.0.0.0/n (n è solitamente 1).
Gli Indirizzi di Multicast inviano invece pacchetti ad un gruppo di host distribuito su Internet (anche global-
mente).
Gli Indirizzi IP link-local formano invece una sottorete per consentire la comunicazione se non si riesce a
trovare un indirizzo IP, mantenendo isolati i pacchetti nella sottorete.
Ad ognirouter sono assegnati due o più indirizzi IP (solitamente almeno uno per interfaccia), cosı̀ che possa
connettersi a più reti. Da ricordare che un indirizzo IP non definisce il singolo router, ma sono le interfacce di
rete che creano la connessione logica tra rete e host.

18
5.5 NAT
Per mandare pacchetti attraverso la rete con indirizzi IP, gli host sfruttano due organismi principali:
• Proxy: definito da un computere che mantiene un indirizzo pubblico e uno privato e ”media” la connessione
tra applicativi specifici
• NAT: apparato allacciato sia alla rete privata sia ad internet che effettua una mappatura tramite gli
indirizzi IP dei pacchetti spediti:

La procedura di NAT o Network Address Translation è stata la soluzione principale al periodo di mancanza di
indirizzi pubblici, che ad oggi è risolta tramite l’IPv6, il nuovo modello di indirizzo IP.
A volte il NAT è l’unico modo di connettere due reti, solo se non si controllano tutti i router tra due host.

5.6 Address Resolution Protocol


L’Address Resolution Protocolo, o Protocollo ARP, si attiva nel caso l’host destinatario di un datagramma
IP si trova sulla mia rete e voglio mandargli un pacchetto. L’ARP permette il riconoscimento dell’host di
destinazione e gli invia direttamente il pacchetto, senza mandare la domanda di riconoscimento a tutti gli host
nella rete.

Questo processo viene fatto solo per comunicazioni punto-punto sulla stessa rete, dato che gli indirizzi IP sorgente
e destinazione non cambiano durante il percorso.
I messaggi ARP sono incapsulati all’interno del datagramma da spedire, definiti da un campo Type nell’header.
Per evitare che un messaggio ARP venga ripetuto per ogni singolo pacchetto, quest’ultimo fornisce un servizio
di caching che mantiene in memoria le risposte ARP ricevute, cancellandole circa ogni 30 secondi.
Più avanzato del semplice ARP è il proxy ARP, dove una vera propria macchina restituisce gli indirizzi MAC
facendo le veci di un host anche se presente in una rete diversa.

5.7 Internet Control Message Protocol


L’Internet Control Message Protocol o Procollo IMCP viene sfruttato per notificare errori nel sorgente
del datagramma. Per funzionare IP ha bisogno dell’indirizzo IP per il controllo di errori, viceversa anche IMCP
ha bisogno di IP per trasportare i messaggi. I messaggi che ritorna IMCP sono divisi in due classi: quelli usati
per segnalare errori e quelli usati per recuperare informazioni perse. Questi funzionano come qualunque
pacchetto IP, senza particolari priorità.

5.8 Dynamic Host COnfiguration Protocol


IL DHCP consente di assegnare un indirizzo IP a un host quando questo si accende, tutto in maniera
automatica, liberando cosı̀ gli indirizzi inutilizzati che possono andare ad altri host.
Il processo avviene tramite l’host che invia un messaggio DHCP al server che gli ritorna se l’indirizzo IP libero

19
con un DHCP ACK.
L’indirizzo IP fornito da DHCP rimane valido per un tempo limitato, che quando finsice il DHCP riposiziona
l’indirizzo tra quelli utilizzabili. Il client può anche richiedere a DHCP di estendere il prestito o di cambiare
indirizzo IP.
DHCP usa UDP anche se poco affidabile, per ovviare il client memorizza l’indirizzo in una cache per evitare
richieste simultanee.
Il messaggio DHCP è formato da:

• OP: specifica se si tratta di una risposta o di una richiesta.


• Hype e HLEN: specificano il tipo di hardware del livello 2.
• FLAGS: specifica se il mittente riceve broadcast o risposte dirette.
• HOPS: specifica quanti server hanno inoltrato una richiesta,

• TRANSACTION IDENTIFIER: si usa per far corrispondere le richieste a lle rispose.


• SECONDS ELAPSED: informa di quanto tempo è passato da quando l’host è stato attivato.
I campi rimasti trasportano le informazioni richieste.
Un DHCP può restituire anche: nome e indirizzo IP di un server DNS, la maschera di rete e altre
informazioni (percorsi file, istruzioni di configurazione,...).
Se DHCP non è presente il client DHCP viene disattivato e si configura un indirizzo IP manualmente. Altrimenti
il client DHCP imposta un indirizzo link-local 169.254.0.0/16.

5.9 Viaggio di un Pacchetto


Il routing è fatto passo-passo da un router A ad un router B:
• A crea il datagramma IP con sorgente A e destinazione B

• Il datagramma vien eincapsulato in un frame di livello 2 con l’indirizzo MAC


• Il frame viene inviato al router (R) da A che estrae il datagramma e lo passa a IP
• R decide come inoltrare il daatagramma creando un frame di livello 2 con destinazione MAC di B
• B riceve il frame, ne estrae il datagramma e lo passa a IP

5.10 IPv6
IPv6 inizialmente era utilizzato per ampliare la quantità degli indirizzi disponibili (dato che stavano finendo quelli
di IPv4). Oggi IPv6 velocizza l’elaborazione dei datagrammi, con una lunghezza fissa di 40byte.
IL datagramma di IPv6 è formato:

• Flow label: etichetta tutti i datagrammi dello stesso ”flusso”.


• Priority: identifica la priorità dei datagrammi che fanno parte dello stesso flusso.
• Next Header: identifica il protocollo di livello 4 incapsulato nei dati.

IPv6 rispetto a IPv4 toglie il checksum e le opzioni.


IPv6 ha indirizzi speciali, come quelli del ”questo computer”, quello del localhost, un indirizzo IPv4
mappato su IPv6, multicast o un link-local unicast. Altri indirizzi sono definiti ”molto speciali” che
aggiungono delle lettere esadecimali da a a f.

5.11 Protocolli di Instradamento - Algoritmo di DIjkstra (link state


Assumiamo che la tipologia di rete e i costi dei link siano noti a tutti i nodi, ritorna in output il percorso a
costo minimo, tramite un algoritmo iterativo entro k iterazioni.
Definiamo:

• c(x,y): costo del link da x a y.


• D(v): costo del percorso verso v.
• p(v): predecessore di v logno il cammino verso v.

20
• N’: insieme dei nodi per cui il cammino è il minimo.

L’algoritmo si definisce:

Esempio:

5.12 Internet, AS, OSPF


Internet, come sappiamo, è una rete di reti, ognuna con le rispettive proprietà. Idealmente ogni rete dovrebbe
essere autonoma e capace di collegarsi alle altre reti, per ovviare a ciò, i router sono organizzati in au-
tonomus systems (ASs), dove ogni gruppo è detto AS ed è sotto lo stesso controllo amministrativo.
Ogni AS è identificato da un numero (RFC 1930) ed i numeri AS sono assegnati centralmente dai registri regionali
ICANN. I protocolli sono definiti in: Intra-AS o Inter-AS.

5.13 Intra-AS
Intra-AS: definiti dal protocollo OSPF (Open Shortest Path First), che dissemina pacchetti con lo stato dei
link e calcola i percorsi migliori sfruttando l’algoritmo di Dijkstra. Implementa 3 procedure:

• Protocollo Hello: manda messaggi di mantenimento per controllare che i link siano funzionanti e a cascata
acnhe quello controllano i link vicini

21
• Protocollo Exchange: informa i router vicini che si sono ”appena conosciuti ” sulla topologia della rete.
• Protocollo Flooding: informa tutti i router di eventuali cambi di stato nella rete.
Il flooding è detto flooding controllato e invia i messaggi ricevuti su un’interfaccia a tutte le altre. Se esitono
connessioni dirette tramite dei messaggi link, se invece è una rete broadcast usa un messaggio di dominio broad-
cast. OSPF è di tipo gerarchico, infatti viene usato in reti con molti router e si divide in dorsale e reti di area.
I messaggi con i link state circolano nelle reti di area, la dorsale conta come una vera e propria area e quindi i
router fanno girare OSPF solo sulla dorsale. I router di bordo si occupano invece delle connessioni con gli altri AS.

5.14 Distance Vector: Bellman-Ford


Il routing gestisce le distanze con il distance vector, un algoritmo distribuito che non richiede la conoscenza
della topologia della rete, ma richiede che ogni nodo di rete conosca: i propri vicini e il costo dei link verso
questi vicini. La presenza di altri nodi posizionati oltre i propri vicini viene notificata con dei messaggi. Per
usare il distance vector viene sfruttato l’algoritmo di Bellman-Ford:
Consideriamo i router: ognuno fa girare l’algoritmo, tutti conoscono la rete e le proprie interfacce. Definiamo:
• N: insieme dei vicini → Nx è l’insieme dei vicini del router x.
• R: tabella di intorno → Rx è la tabella di intorno del router x, con:
– R[d].cost: costo per raggiungere d
– R[d].nexthop: nodo coi inoltrare il pacchetto per andare verso d
– R[d].time: tempo al quale il percorso è impostato
• D: vettore con tutte le distanze → Dx distance vector del router x.
• I costi dei link si chiamano distanze o metriche.
L’algoritmo si inizializza selezionando tutti i vicini di ogni router e ogni T secondi si invia un Dx con il costo del
x-esimo router per arrivare a d. Quando si riceve il vettore Dy dal vicino y si controlla se il costo il costo per
arrivare a y sia minore di quello per arrivare a d e se y è il R[d].nexthop. Se tutte le richieste sono soddisfatte,
si aumenta il costo, si rende R[d].nexthop = y e si setta il time al tempo presente.
Un problema di questo algoritmo è che se si rompe un collegamento tra i router avremo un passaggio
infinito di pacchetti attraverso la rete che non trova più un router, questo problema è detto cout-to-infinity.
Una soluzione per il cout-to-infinity potrebbe essere impostare un numero massimo di hop che un pacchetti
può fare. Si può applicare uno split horizon, cioè che quando un nodo manda aggiornamenti al nodo vicino
si accorge del collegamento rotto e omette le rotte verso quel router. Oppure si applica un posioned reverse,
dove finché un nodo x raggiunge un nodo z attraverso y, con z collegamento rotto, il nodo x si accorge del tempo
infinito per arrivarci e lo comunica a y che toglie tutte le rotte.
Se i costi dei link cambiano e abbiamo costi minori, quindi una minore latenza, ma se aumentano ovviamente la
latenza aumenterà.
Ora che consociamo i distance-vector possiamo definire un altro protocollo sfruttato da Intra-AS: il Routing
Information Protocol (RIP), che implementa distance vector e rende semplice la gestione, ma rende lenta la
convercenza e limita la rete. In questo protocollo il costo di un link è il numero di hop, limitato a 15 (oltre di va
ad ∞) e ogni 30 secondi il RIP invia i distance vector che comprendono 25 sottorerti di destinazione (all’interno
dell’AS). Per funzionare usa UDP alla porta 520.
Se un router non riceve informazioni dal vicino per più di 180 secondi il nodo viene considerato guasto e RIP
modifica la tabella di instradamento e contatta i router vicini che a loro volta cambieranno la tabella e manderanno
le informazioni ai vicini. Dato che RIP è implementato a livello applicazione, può mandare messaggi tramite
delle socket.

5.15 Broder Gateway Protocol


L’utlimo ”ingrediente” per interconnettere tutto è il BGP, che fa parlare i router di bordo tra loro per realizzare
la connessione tra diversi AS.
Gli AS comunicano tra loro per condividere le info di raggiungibilità e ogni AS decide automaticamente i propri
punti di ingresso e uscita e decidere se condividere le info o no (se non le condividono sono detti Transit AS).
Al mondo ci sono più di 60000 AS interconnessi.
Il BGP è l’unico protocollo standard per comunicare informazioni , è un Path Vector Protocol ed è molto com-
plicato perché deve adattarsi a tutte le possibilità di interconnessione.
Ogni AS ha un certo numero di router detti BGP Speaker e possono parlare tra loro attraverso una connessione
TCP. Le informazioni che si passano sono formate non solo dalla raggiungibilità di un certo router, ma anche dal
percorso per raggiungerlo.

22
Ongi interconnessione tra AS è controllata da policies, definite Ingress Policies per quelle applicate alle rotte
che voglio importare nel mio sistema, oppure Egress Policies per le rotte prima che vengano esportate.
Il best path per BGP è diverso da quello di OSPF o RIP, che cercavano il percorso più breve, infatti abbiamo
un concetto di ”preferito” in BGP molto vago che dipende dalle policy degli AS. Il best path può variare in
base anche ad un solo cambiamento nelal policy. Ogni speaker BGP condivide solamente il proprio best path
per raggiungere una destinazione, anche se non è detto che il best path di BGP sia il più veloce.
BGP usa 4 messaggi principali:

• Open: usato epr aprire una connessione BGP. Se viene accettato viene madnato un messaggio di conferma
con un hold time che definisce il tempo di validità della connessione.
• Notification: se ci sono errori invia 6 error codes in base al tipo di errore e 20 error subcodes in base
a dove avviene l’errore.

• KeepAlive: sono i messaggi di conferma inviati da OPEN e devono essere inviati entro il tempo dell’hold
time. Possono essere disattivati impostando un hold timer = 0.
• Update: contengono le informazioni di raggiungibilità e sono responsabili della disseminazione di infor-
mazioni. Le informazioni sono definite aditive se portano info riguardo a nuovi percorsi, o sottrattive se
le informazioni sono sulla rimozione di percorsi.

• Withdraw: l’azione di rimozione di una rotta, che viene effettuata quando non c’è più nessun percorso
disponibile verso un certo AS. Nel caso in cui un nodo BGP conoscesse un percorso alternativo viene
mandato un update + withdraw che elimina il percorso e lo sostituisce con quello definito in update.
• Implicit Withdraw: si sostituisce alla coppia di pacchetti update+withdraw, mandando un singolo mes-
saggio di aggiornamento del percorso migliore.

Per risparmiare informazioni all’interno dei pacchetti generalmente le rotte vengono aggregate. Abbiamo poi
l’uso di filtri che controllano ingressi e uscite della connessione BGP, possono essere generici o molto precisi.
Un pacchetto che non supera i filtri viene scartato.
BGP sfrutta 3 tabelle per le rotte:

• una per contenere le rotte accettate in ingresso e valutare vari percorsi alternativi
• una per contenere i best path attuali
• una per contenere le rote cha hanno superato i filtri
Queste tabelle sono le informazioni base per BGP e sono dette Routing Information Base o RIB.

6 Livello di Collegamento/Data Link


6.1 Introduzione
Il livello di collegamento è a sua volta formato da altri livelli. UN percorso può avere link di tipi di versi e
attraverso questi viene trasferito un datagramma, anche attraversando reti con protocolli di livello 2 differenti.
A livello data link vengono definiti diversi servizi:

• Creazione di un frame di livello 2 (accesso al link), che incapsula un datagramma in un frame aggiun-
gendoci header o trailer, fornendo un meccanismo di accesso al canale tra dispositivi tramite indirizzi
di livello 2 (detti indirizzi MAC) negli header dei frame.
• Consegna affidabile tra nodi adaicenti, tramite un basso tasso di errore se usiamo un collegamento fisico,
alto se usiamo un collegamento wireless

• COntrollo di flusso che adatta la velocità di trasmissione alle possibilità del ricevitore
• Rilevamento di errori, solitamente causati da atenuazione del segnale. Rileva la presenza di errori e
avverte il mittente o scarta il pacchetto.
• Half-duplex e Full-duplex che collegano i nodi, cosı̀ da farli passare informazioni da entrambi i lati

Il livello di data link è implementato da tutti gli host, solitamente sulle schede ethernet di questi, dato che sono
collegate direttamente al bus di sistema dell’host.
La comunicazione fra due adattatori di rete è definita da un lato dal mittente che ha il compito di incapsulare il
datagramma in un frame, mentre il destinatario, oltre a dover estrarre il datagramma deve anche cercare
eventuali errori durante il passaggio.

23
6.2 Rilevamento e Correzione di Errori
Gli errori vengono rilevati tramite dei bit ridondanti inseriti nel datagramma, detti EDC che definiscono se c’è
stato un errore o no. Non sono affidabili al 100%, perchè il protocollo potrebbe non accorgersi dell’errore, ma
maggiore è la ridondanza, migliore è la cattura degli errori.

Per definire quando un errore c’è stato all’interno di una sequenza di data bits, il numero di 1 deve essere pari,
se è dispari è probabilmente avvenuto un errore durante il passaggio di dati.
Per correggere eventuali errori si applica una procedura di interleaving, che consiste nel riordinamento dei bit
e fornisce una protezione contro errori a raffica (burst).. Più efficiente è l’algoritmo di Cyclic Redoundancy
Check (CRC), che considera i bit di dati come un numero binario di e sceglie una sequenza di r+1 bit (detta
generatore) e numero G, componendo il CRC scegliendo r bit in modo da:
• I dati d siano divisibili per G (modulo 2) con resto R
• Il ricevitore conosce G, quindi se divide < D, R > per G e ha resto !=0, allora c’è stato un errore

• Può rilevare errori a raffica se abbiamo meno di r bit alterati consegcutivi.


Per concatenare D ed R (¡D,R¿) si applica: < D, R >= (D · 2r ) XOR R, con D i bit da proteggere e R gli r bit
del CRC.

6.3 Protocolli e Tecnologie per l’Accesso Multiplo al Canale


Esistono vari modi per connettersi al canale, tramite un collegamento punto a punto, solitamente tra switch
e un host, o il Broadcast, che viene sfruttato ancora dalle vecchie versioni di Ethernet.
Un canale broadcast può essere condiviso in due o più trasmissioni simultanee che portano a nodi diversi. Si
crea però un interferenza perché un nodo può rivevere due segnali contemporaneamente. Per avviare connessioni
multiple si opta allora per un protocollo di accesso multiplo, un algoritmo distrubuito che determina lo stato
dei nodi del nostro canale (possibilità o imossibilità di trasmissione), creando un canale broadcast condiviso
che sfrutta il canale principale, oltre per il flusso di dati, anche per lo scambio di informazioni sui nodi.
Al giorno d’oggi per ovviare a questi metodi si sfruttano il protocollo MAC (Multiple Access Protocol), dove
dato un canale broadcast capace di supportare R bit/s, possiamo trasmettere dati proporzionalmente alla velocità
del sistema, semplicemente e con un sistema centralizzato.
Il protocollo MAC si divide in 3 classi:
• A ripartizione delle risorse di canale: divide il canale in sotto-canali più piccoli, allocando su ognuno
un nodo esclusivo.
• Ad accesso casuale: il canale non viene suddiviso e si accettano collisioni, minimizzandole.

• A ”turni” intelligenti: i nodi accedono al canale a turno. I nodi che trasportano più dati avranno più
turni degli altri.

6.4 Ripartizione delle Risorse


Si divide in vari protocolli. Il primo è il TDMA (TIme Division Multiple Access), dove ogni nodo ottiene uno
slot di durata fissa ogni round di accesso e gli sloto inutilizzati rimangono comunque liberi. Il round viene
solitamente chiamato frame.
Un altro tipo di protocollo è FDMA (Frequency Division Multiple Access), dove lo spettro del canale è diviso
in sottobande e ogni stazione ne ha una assegnata. Quando una sottobanda non è utilizzata per trasmettere, la
risorsa rimane inutilizzata.
Il terzo e ultimo protocollo di ripartizione è il CDMA (Code-Division Multiple Access), dove abbiamo una
ripartizione delle risorse tramite l’assegnazione di un codice diverso per ogni nodo.

24
6.5 Protocolli ad Accesso Casuale
Quando un nodo ha un pacchetto da trasmettere deve farlo con un data rate massimo R e senza coordinarsi con
gli altri nodi.
Se due o più nodi trasmettono contemporaneamente si verifica una collisione che possono esserr rilevate e i dati
persi verranno recuperati.
Esistono molti protocolli ad accesso casuale, il più famoso è ALOHA dove quando un nodo ha qualcosa da
inviare lo passa immediatamente al successivo e se non ci sono collisioni anche questo lo passerà al successivo e
cosı̀ via. Se c’è collisione il nodo ritrasmette il pacchetto finché non avrà successo. I vantaggi di questo tipo di
connessione sono sicuramente la semplicità e la decentralizzazione, ma anche che se un nodo è attivo può usare
sempre il canale. Gli svantaggi sono ben maggiori, dato che le collisioni sprecano risorse e molti slot potrebbero
rimanere vuoti, si può rilevare la collisione senza aspettare la fine di una trasmissione e richiede un coordinamento
tra nodi.
k −G
Sul piano di calcolo dell’efficienza notiamo dalla formula: P [k] = G k! e
, una distrubuzione di Poisson, che
1
otteniamo un throughput massimo pari a e ≈ 0.368.
ALOHA ha una versione ancora più pura nella quale aumenta la semplicità, il frame non viene trasmesso subito
appena arrivo e la probabilità di collisione aumenta. Rifacendo lo stesso calcolo sul piano dell’efficienza abbiamo
1
un throughput pari a ≈ 2e .
Un altro protocollo importante è il CSMA (Carrier Sense Multiple Access) che ha la particolarità di ”ascoltare
prima di parlare”, cioè se il canale è vuoto si trasmette in un frame, se è occupato aspetta e ritarda la trasmissione.
CSMA ha diverse versioni:
• non-persistente: il tempo di attesa quando il canale è occupato è molto più lungo di quello di trasmissione.

• 1-persistente: il tempo di attesa quando il canale è occupato è definito dalla sola attesa fino a che si
libera, poi trasmette subito.
• p-persistente: se il canale è occupato aspetta e quando si libera ha una probabilità p di trasmettere il file
e con una probabilità 1-p attende un tempo casuale molto più lungo del tempo di trasmissione.

Nel CSMA esiste un periodo di vulnerabilità che dipende dal tempo di propagazione τ , definito come:
Tv = τ + Ta , con τ << T . Anche il CSMA ci possono essere delle collisioni, infatti due nodi potrebbero
dilevare in ritardo i rispettivi segnali. La collisione sprega il tempo di trasmissione, quindi tutto il peso del
trasporto va in mano alla distanza, che gioca un ruolo importante nel determinare le probabilità di colli-
sione. Per evitare la collisione esiste un collision detector, il CSMA/CD, che posticipa le trasmissioni come
in CSMA, ma permette di rilevare le collisioni in breve tempo e interrombe le trasmissioni quando è sicuro di
queste, facendo risparmiare un sacco di tempo. La collision detection è molto semplice nelle LAN cablate, infatti
si confronta semplicemente la potenza ricevuta con quella trasmessa dal nodo e si capiscono le eventuali perdite,
in reti wireless è più complicato.

6.6 Protocolli a ”Turni”


Vengono sviluppati tramite due servizi:
• Polling: un nodo master ”invita” gli altri nodi a trasmettere a turno e viene usato di solito se i dispositivi
hanno poche risorse. I problemi principali sono l’occupazione dl canale, la latenza elevata e che esiste un
singolo punto centralizzato dove si generano gli errori.
• Token Passing: il diritto di trasmettere è rappresentato dal possesso di un token che passa sequenzial-
mente da un nodo all’altro. Un token è un vero e proprio pacchetto di dati. I problemi principali sono
l’occupazione del canale dovuta al token, l’alta latenza e sepre l’unico punto di rottura centralizzato.

6.7 IEEE ed Ethernet


IEEE è uno standard di rete che definisce come va costruita quest’ultima. Nasce negli anni ’80 con la LAN
Interworking. Lo standard dominante però di reti cablate rimase l’ethernet, la prima tecnologia LAN di uso
massivo, con un singolo chip si supportano varie velocità in modo semplice ed economico.

25
Ethernet diventa uno standard di rete con IEEE 802, con una velocità di 10Mbit/s e come mezzo di comuni-
cazione viene usato un cavo coassiale con estensione massima fino a 4 trasmettitori. I doppini all’interno del
cavo ethernet sono incrociati e si dividono in shielded, unshielded e foiled. Permettono di risolvere molti problemi
legati alla gestione e alla installazione.
Un frame passato per ethernet è definitop da indirizzi a 6 byte per indirizzi MAC di sorgente e destinazione. Se
la scheda di rete riceve un frame diretto a se o diretto ad un indirizzo di broadcast passa tutte le informazioni al
livello di rete, altrimenti scarta il frame. Il tipo indica il protocollo di livello superiore (solitamente IP) utulizzato
ed è definito infine da una CRC (cyclic redundant check) che rileva gli errori.
La connessione ethernet è connectionless, non c’è nessuno scambio di messaggi tra interfacce di rete di mittente
e destinatario e è una connessione non affidabile, dato che non si usano ACK o NACK, solo il CRC, quindi i
dati nei payload se vanno perduti si recuperano solo con protocolli di livelli più alòti (come TCP).
Ethernet usa un algoritmo di CSMA/CD nel quale la scheda di rete dopo aver ricevuto il datagramma comincia a
trasmettere solo se il canale non è occupato, se la trasmissione termina senza rilevare altre trasmissioni il processo
è terminato con successo. Se si rileva una collsisione si riceve un messaggio abort, e per ogni collisione la scheda
di rete sceglie a caso il backoff.

6.8 Switch Ethernet


Lo switch è un dispositivo di livello 2 che ha un ruolo più attivo nello stabilimento di una connessione. Memorizza
e inoltra frame ethernet e esamina l’indirizzo MAC dei frame che arrivano. È una parte definita trasparente
nel sistema, infatti gli host non sanno della sua esistenza nemmeno se ci sono collegati.
La tipologia può essere a bus, dove tutti i nodi sono nello stesso dominio di collisione (ognuno può condividere
con chi vuole a rischio di collisione) o a stella, dove al centro della stessa c’è uno switch o un hub di rete che
determina il flusso dei pacchetti per tutti.
In una rete con degli switched ogni host ha un canale dedicato e su ogni link si sfrutta un protocollo ethernet.
Questo permette di non avere collisioni e ogni link è un dominio di collisione a parte. Lo switch per sapere quali
nodi sono raggiungibili tra loro sfrutta una tabella definita da 3 proprietà principali:
• Autoapprendimento:lo switch impara quali host possono essere raggiunti tramite una specifica interfac-
cia, annotando sulla tabella l’indirizzo da cui proviene un frame e l’indirizzo MAC dell’host.
• Aggiornamneto delle corrispondenze quando si ricevono nuovi frame: quando si rivece un frame
la tabella viene aggiornata, si inoltra il frame e si trova una riga nella tabella che indica come raggiongere il
destinatario. Se la destinazione si trova su una porta diversa da quella del mittente il frame viene inoltrato,
se uguale viene scartato. Se non c’è nessuna riga sulla tabella si cerca in tutte i nodi, eccetto quello di
arrivo.
• Calcellazione delle righe vecchie:
Nel caso una rete abbia switch multipli, anche in questo caso ognuno di essi è dotato di autoapprendimento anche
per tipologie di rete più complesse. Solitamente una rete è formata da switch, router e hub, dove i primi due
sono rispettivamente i dispositivi di livello rete e link, mentre l’hub è un semplice ripetitore di segnale. Router e
Switch usano delle tabelle, il router con algoritmi di routing, mentre lo switch per autoapprendimento e flooding.

26

Potrebbero piacerti anche