Esplora E-book
Categorie
Esplora Audiolibri
Categorie
Esplora Riviste
Categorie
Esplora Documenti
Categorie
Reti di Telecomunicazione
CdL Ingegneria Informatica e dell’Automazione
Politecnico di Bari
Documento a cura di
Massimo TUMOLO
Anno 2015/2016
Le immagini presenti in quest’opera sono tratte dalle dispense del Prof. Boggia, estratte dal libro di
riferimento o create dall’autore, salvo dove specificato diversamente.
Tutti i contenuti derivano dagli appunti presi a lezione e dal successivo confronto con il libro di testo
Reti di telecomunicazione Networking e Internet Seconda edizione di Achille Pattavina. L’autore non
fornisce alcuna garanzia sulla validità del contenuto.
Grazie a Velon Massimo e Cucumazzo Vincenzo per aver contribuito con correzioni e approfondimenti.
Scritto in
LAT XE
INDICE
Indice vi
1 Introduzione 1
1.1 Reti di telecomunicazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 Definizione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.2 Configurazione di un servizio . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.3 Direzione della comunicazione . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Topologia di una rete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Sezioni di accesso e transito . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4 Classificazione delle reti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5 Commutazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5.1 CS - Circuit Switching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5.2 PS - Packet Switching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5.2.1 Datagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5.3 Algoritmi di instradamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.5.3.1 Tassonomia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.5.3.2 Tabella di routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.5.3.3 Metriche di costo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.5.3.4 Distance vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.5.3.5 Link state . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.5.4 Virtual Circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2 Modello ISO/OSI 11
2.1 Modello ibrido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4 Livello 3 - IP 27
4.1 Datagramma IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.2 Frammentazione e riassemblaggio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.3 Indirizzo IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.3.1 Approccio CIDR - Classless Interdomain Routing . . . . . . . . . . . . . . . . . 30
4.3.2 Approccio classful . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.3.3 Indirizzi IP Pubblici e Privati . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.3.4 Indirizzi IP speciali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.4 Subnet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.4.1 VLSM - Variable Length Subnet Mask . . . . . . . . . . . . . . . . . . . . . . 35
4.5 NAT e NAPT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.5.1 NAT - Network Address Translation . . . . . . . . . . . . . . . . . . . . . . . . 37
4.5.2 NAPT - Network Address Port Translation . . . . . . . . . . . . . . . . . . . . 37
4.5.3 Limiti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.6 DNS - Domain Name System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.7 DHCP - Dynamic Host Configuration Protocol . . . . . . . . . . . . . . . . . . . . . . 38
4.8 Struttura di un router commerciale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.9 ARP - Address Resolution Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.10 ICMP - Internet Control Message Protocol . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.10.1 Ping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.10.2 Traceroute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.11 Protocolli di instradamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.11.1 AS - Autonomous System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.11.1.1 RIP - Routing Information Protocol . . . . . . . . . . . . . . . . . . . 40
4.11.1.2 OSPF - Open Shortest Path First . . . . . . . . . . . . . . . . . . . . 41
4.11.2 BGP - Border Gateway Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5 Livello 2 ISO/OSI 43
5.1 Rilevazione e correzione di errori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.1.1 Stop & Wait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.1.2 Go-Back-N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
iv
INDICE
v
INDICE
6.5.2.3 DCF con RTS e CTS - Distributed Coordination Function con Request
To Send e Clear To Send . . . . . . . . . . . . . . . . . . . . . . . . 69
6.6 Divisione in canali (802.11b) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
vi
INDICE DEGLI ESERCIZI
vii
CAPITOLO 1
INTRODUZIONE
• Comunicazione Unicast ha un solo destinatario ed un solo mittente (Ad esempio una telefonata).
La classificazione dipende molto da cosa si cataloga, ovvero quali aspetti di una certa rete si con-
siderano. Ad esempio quando in radio si possono ricevere telefonate, si può catalogare il canale di
comunicazione come broadcast half-duplex, composto dal canale radio che è simplex, e dalle telefonate
che sono half-duplex.
1. Chain
Tutti i nodi sono collegati ad al più altri due nodi tranne i nodi iniziale e finale.
2. Ring
Evoluzione chiusa della catena.
Vantaggi:
2
Chapter 1: Introduzione
Svantaggi:
Esempi di ring sono la fibra ottica, che è ad anello ai quali nodi sono collegati alberi di nodi o
altri anelli.
3. Tree
Sono composti da nodo radice, nodi intermedi, nodi foglia.
Vantaggi:
Svantaggi:
4. Mesh
Collegamento di nodi senza struttura fissa, sono affidabili ma esistono più percorsi possibili.
• Mesh completa Garantisce la massima affidabilità, risulta molto costosa in quanto per N nodi
N(N − 1)
sono necessari collegamenti.
2
5. Bus
Mezzo condiviso da tutti i nodi.
Vantaggi:
Svantaggi:
3
Chapter 1: Introduzione
Ad esempio il Wi-Fi è un unico canale su cui poggiano tutti gli apparati, quindi è un bus.
6. Star
Tutti i nodi collegati al nodo centrale. Il nodo centrale fa da bus. È facile crearla e aggiungere nodi,
i percorsi sono sempre ben definiti cosı̀ come la lunghezza massima del percorso è sempre pari a 2.
4
Chapter 1: Introduzione
ma banda molto bassa e costosa. Una rete WAN è quella dell’operatore che copre l’intera Italia, o
le reti che collegano Europa e America attraverso le dorsali oceaniche. Le università si connettono
a internet attraverso il GAN, un provider ministeriale.
1.5 Commutazione
Scelta una via e preso un certo canale, come si smista l’informazione tra i nodi, ovvero come si
switcha da un nodo all’altro?
1.5.2.1 Datagram
Una modalità molto usata di utilizzo dei pacchetti è il Datagram. In questo metodo, nell’header è
contenuto almeno il destinatario e ciascun nodo sceglie la strada migliore su cui inviare il pacchetto.
Ciascun nodo ripete l’operazione pacchetto per pacchetto, anche della stessa comunicazione. IP si basa
sulla modalità datagram.
Vantaggi:
5
Chapter 1: Introduzione
1. Se cede un nodo si sceglie un altro percorso. Questo deriva dall’uguale importanza dei vari nodi
che consente di aumentare l’affidabilità;
2. Mentre nel Circuit Switching ho solo commutazione, nel Packet Switching ho anche instradamento.
Svantaggi:
1. Ripetitivo, c’è un costo per ogni pacchetto;
2. Ritardo non noto a priori in quanto non si conosce la strada e soprattutto non si può sapere ciascun
nodo che coda avrà nel proprio buffer;
3. I pacchetti possono prendere strade diverse e non arrivare in sequenza.
Il ritardo end-to-end da un nodo A ad un nodo B con N nodi nel percorso (fig.1.3) sarà dato da
N
Datagram
Tend2end = TtA + τA + ∑ (Te + Tti + τi + Tqi )
i=1
Per la commutazione di circuito, la determinazione del ritardo è più semplice perché, stabilito il
circuito, il nodo intermedio non è in grado di instradare i pacchetti. Quindi:
N
CS
Tend2end = ∑ (T f i + τi ) + Te
i=1
6
Chapter 1: Introduzione
Un algoritmo di instradamento viene usato nel nodo di una rete a commutazione di pacchetto per
determinare il nodo successivo cui inviare il pacchetto ricevuto sulla base dell’indirizzo di destinazione
del pacchetto stesso. L’algoritmo viene attivato solo se il nodo che valuta il pacchetto non è proprio il
nodo destinatario.
1.5.3.1 Tassonomia
La tassonomia degli algoritmi di instradamento può essere schematizzata come segue:
1. Instradamento senza tabella
Algoritmi semplici che non prevedono la memorizzazione di una tabella. Si suddividono in:
1.1. Random
Il nodo successivo viene scelto casualmente. È efficace in reti piccole e molto connesse.
Possono giungere più copie di uno stesso pacchetto al nodo destinatario. È l’algoritmo più
semplice, ma non garantisce che il pacchetto giunta effettivamente a destinazione e soprattutto
ha un tempo non prevedibile di varianza molto alta.
1.2. Flooding
Ciascun nodo invia il pacchetto su tutte le porte tranne sulla porta in cui ha ricevuto il pac-
chetto. Il nodo è quasi certo arrivi, questo lo rende molto affidabile, ma il pacchetto arriverà
in numerose repliche (al massimo tanti quanti sono i percorsi) e il rischio di congestione è
molto alto. Si usa per pochi pacchetti di cui si ha necessità che arrivino.
7
Chapter 1: Introduzione
2.1. Dinamico
Le voci in tabella sono sia inserite manualmente sia dinamicamente inserite in modo automa-
tico seguendo i seguenti due algoritmi:
2.1.1. Distance vector vedere 1.5.3.4
2.1.2. Link state vedere 1.5.3.5
2.2. Statico
Le voci nella tabella sono inserite manualmente e rimangono staticamente. È comodo per
piccole reti, ma risulta scomoda la modifica della rete.
3. Instradamento gerarchico
Ogni router parla con il router al livello superiore nella gerarchia. Utile nelle reti complesse
suddivise in più sotto-reti.
Una tabella di routing tiene traccia delle reti conosciute. È composta da tre campi: destinazione,
costo, next-hop. La destinazione è l’IP del router per il quale si stima il corrispondente costo, valutato
secondo le metriche nel paragrafo 1.5.3.3. Il next hop è l’indirizzo IP del prossimo router a cui mandare
il pacchetto. Un metodo per ottimizzare la tabella è memorizzare non ogni singola destinazione ma la
rete di appartenenza, in modo da evitare di dover memorizzare tutte le destinazioni di quella rete.
Se il router trova la destinazione nella tabella la utilizza, altrimenti se non la trova si rivolge ad un
gateway predefinito, normalmente quello di livello superiore.
8
Chapter 1: Introduzione
• Delay: il tempo necessario ad ogni pacchetto per andare dalla sorgente alla destinazione
• Load: il carico di lavoro degli elementi della rete come i router o i link
• Hop count: il numero di router che un pacchetto deve attraversare per raggiungere la destinazione
• Cost: un valore arbitrario, generalmente basato sulla banda, sul costo economico di un link, o su
altre misure stabilite dall’amministratore di rete
9
Chapter 1: Introduzione
10
CAPITOLO 2
MODELLO ISO/OSI
Il vecchio approccio alla creazione di una rete prevedeva una singola figura che si occupasse intera-
mente della sua progettazione, dalla progettazione fisica alle applicazioni.
L’associazione ISO sviluppò lo standard OSI (Open System Interconnection) chiamato ISO/OSI. Ori-
ginariamente questo standard era un insieme di regole molto rigide e complesse e per questo non fu ado-
perato. Ciò che rimane del modello ISO/OSI è l’approccio metodologico, ovvero quello di suddividere il
problema in sotto problemi. Ciascun sotto problema fa parte di una successione a livelli di sotto problemi.
In una struttura siffatta, detta struttura a layer o layerizzata, ciascun livello prende come input l’output
del livello inferiore e fornisce il proprio output al livello superiore attraverso opportune interfacce che
quindi nascondono la particolare implementazione interna al livello. Nella comunicazione attraverso una
rete in caso di trasmissione i layer si percorrono dal più alto al più basso, in caso di ricezione dal più
basso al più alto.
Un pacchetto che ”sale” nella struttura viene decapsulato, ovvero viene ridotto in modo da privarlo
di informazione non necessaria ai livelli superiori. Un pacchetto che ”scende” viene incapsulato, ovvero
vengono aggiunte al payload informazioni necessarie alla gestione del pacchetto.
Chapter 2: Modello ISO/OSI
1. Livello 1 - Physical
Il livello 1 è il livello fisico, ovvero il livello in cui si trasmettono/ricevono bit codificati come forme
d’onda, che non vengono interpretati ma solo trasmessi in quanto tali. In questo rientra l’hardware.
Un livello fisico comunica sempre con un altro livello fisico.
2. Livello 2 - Datalink
Il livello 2 impacchetta i bit ricevuti in dimensioni dipendenti dal protocollo.
Le funzioni svolte dal livello 2 sono:
Un pacchetto di livello 2 è chiamato Frame. Nell’header contiene il destinatario del nodo succes-
sivo, in virtù della connessione diretta. Inoltre in testa e in coda contiene dei bit di controllo che
consentono di eseguire la rilevazione di errori. Prima di passarlo al livello 3 (nel caso quindi di
ricezione), il pacchetto viene decapsulato e trasmette solo il payload.
3. Livello 3 - Network
Il livello 3 si occupa dell’instradamento, quindi deve scegliere la miglior strada su cui trasmettere
il pacchetto. Se il nodo in cui il pacchetto è proprio il nodo destinatario, il pacchetto viene inviato
al livello superiore, altrimenti viene instradato al successivo nodo.
4. Livello 4 - Transport
In ricezione, un pacchetto che giunge al livello 4 è un pacchetto rivolto a quel particolare nodo,
ovvero a livello 4 il nodo ha coscienza di esserne il destinatario.
Il livello 4 è il primo livello end-to-end, ovvero immagina di comunicare con la controparte
ignorando la presenza di eventuali nodi intermedi.
Al livello 4 i pacchetti potrebbero giungere in disordine.
12
Chapter 2: Modello ISO/OSI
5. Livello 5 - Application
Strato applicativo di alto livello. Per il modello classico ISO/OSI è diviso in 3 sottolivelli che
comunque riguardano sempre sfumature del livello applicativo.
13
CAPITOLO 3
Il livello 4 è il primo livello end-to-end, ovvero non ha cognizione dei livelli inferiori. A livello 4
giunge un flusso di byte rivolti ad una o più applicazioni, il primo compito è quindi quello di smistare i
flussi di byte attraverso il demultiplexing o in caso di trasmissione di fare l’operazione opposta ovvero il
multiplexing. In base al protocollo scelto, il livello 4 può fornire controllo di errori e riordinamento dei
pacchetti, operazioni che rendono più affidabile la ricezione ma anche più lenta la gestione dei pacchetti.
Il meccanismo di rilevamento di errori fa sı̀ che venga richiesta la ritrasmissione qualora vi sia una
trasmissione incompleta o corrotta. Non esiste però una tecnica che assicura la trasmissione al 100%
priva di errore. Non essendo quindi possibile ritrasmettere infinitamente il pacchetto, è necessario fissare
un limite superiore (numero massimo di ritrasmissioni) per evitare situazioni di stallo.
1. Porta locale
2. IP Host mittente
3. Porta remota
4. IP Host destinatario
5. Protocollo di trasporto
1,3: Le porte sono indirizzi a livello di trasporto che servono a smistare i flussi tra i diversi processi. Ci
sono 3 intervalli di numeri di porta:
• Well-known ports (0-1023) assegnate su base universale ad applicazioni specifiche (Ad esempio
FTP, SMTP, DNS). Gli standard sono decisi da IETF (internet engineering task force). Lo IANA,
legata all’IETF ha deciso di assegnare le prime 1023 porte a servizi well known;
Chapter 3: Livello 4 - TCP, UDP
• Reserved ports (1024-49151) il cui uso può essere registrato allo IANA ma sono comunque porte
utilizzabili;
2,4: Un indirizzo IP (livello 3) individua univocamente un apparato nella rete, ma un certo apparato
può trasmettere più flussi se ci sono più applicazioni.
Un socket è la coppia indirizzo + porta. E’ una astrazione che consente di definire l’interfaccia tra le
applicazioni e la rete.
Figura 3.2: Datagramma UDP utilizzando la rappresentazione tipica TCP/IP con righe da 32 bit. Le
prime due righe sono l’header, da 8 byte.
16
Chapter 3: Livello 4 - TCP, UDP
1. Source Port: Porta del mittente, essendo un campo da 16 bit la porta può variare da 0 a 65535.
2. Destination Port: Porta del destinatario.
3. Length: Grandezza del datagramma in byte. È un campo da 16 bit, quindi può variare da 0 a
65535. Questo significa che un datagramma UDP può essere al più grande 65535 byte, ovvero
64kB.
4. Checksum: Necessario per la rilevazione di errori. Nel caso un errore venga rilevato, il pacchetto
può essere scartato o passato al livello superiore comunicando che il pacchetto è corrotto. Se il
campo è impostato a 0, il checksum non viene eseguito.
Per la rilevazione di errori, si somma tutto il datagram e lo pseudoheader (parte dell’header di
livello 3 che non viene decapsulato ma viene trasmesso al livello 4) 16 bit per 16 bit. Nel campo
checksum viene memorizzato il complemento a 1 della somma. In ricezione viene eseguita la
stessa somma, poi il risultato viene sommato al campo checksum calcolato in trasmissione. Poichè
A + A = 1, se risulta Somma + Somma = 1 (dove con Somma si intende il complemento a 1) allora
il pacchetto è corretto.
Figura 3.3: Datagramma TCP utilizzando la rappresentazione tipica TCP/IP con righe da 32 bit. Le prime
sei righe sono l’header, di cui le prime cinque sono obbligatorie. Un segmento TCP è quindi di almeno
20 byte.
17
Chapter 3: Livello 4 - TCP, UDP
3. Sequence number(32 bit): Numero del primo byte del payload. Il TCP vede lo stream dati pro-
venienti dal livello 5 come uno stream di byte e li numera, scegliendo un numero casuale come
0 e numerando tutti i byte a partire da quel numero. Dopo aver preso un certo numero di byte, li
inserisce in DATA e mette in sequence number il numero del primo byte. Non si pone il problema
dell’overflow in quanto prima di poter tornare sullo stesso numero sarebbero necessari 4GB di dati
inviati. TCP quindi NON numera i pacchetti, ma i BYTE!
4. Acknowledgment number(32 bit): Successivo byte che si aspetta di ricevere. Il TCP adotta un
meccanismo di riscontro cumulativo, ovvero invia un solo ack per annunciare la ricezione di più
byte, questo risultato si ottiene intendendo il riscontro su un byte come il riscontro non solo sul byte
stesso, ma anche su tutti i precedenti byte. Il TCP adotta inoltre un meccanismo di piggybacking,
ovvero in uno stesso pacchetto non solo riscontra i pacchetti ricevuti, ma include anche il numero
del prossimo byte che si aspetta e i dati da inviare.
5. HLEN(4 bit): Indica la lunghezza dell’header. Si esprime in numero di righe (quindi in multipli di
4 byte), dunque la lunghezza massima è (24 − 1) · 4 = 60 byte.
6. -(6 bit): bit vuoti per implementazioni future, possono essere sfruttati dai progettisti.
7. Flags(6 bit):
8. Advertised window(16 bit): Contiene la dimensione in byte del rimanente spazio nel buffer. Ne-
cessario a gestire il controllo di flusso, affinchè il destinatario non invii più di quello che il buffer
può contenere.
10. Urgent pointer(16 bit): Spiazzamento in byte rispetto al primo byte, che indica dove finiscono i
dati urgenti (questi sono sempre in testa al payload).
18
Chapter 3: Livello 4 - TCP, UDP
1. La connessione è iniziata dal client verso la porta su cui il server è in ascolto. Il client invia un
segmento vuoto con flag SYN=1 per indicare che vuole stabilire la connessione e con il sequence
number impostato allo zero casuale scelto.
2.1. Se la porta non è aperta, ovvero il server non accetta connessioni, si può rispondere con un
RST per rifiutare la connessione o ignorare la richiesta. La seconda soluzione è più consiglia-
bile in quanto non si danno indicazioni al richiedente sullo stato del server in modo da evitare
attacchi malevoli.
2.2. Se la porta è aperta, il server risponde con un pacchetto con flag SYN=1 e flag ACK=1, l’ack.
number sarà impostato al seq. number comunicato dal client+1 in modo da comunicare quale
byte vuole, ed inoltre imposterà il proprio sequence number pari allo zero casuale scelto.
3. Il client, ricevuto il pacchetto di risposta, deve avvisare il server con un segmento ”normale”,
ovvero con syn=0 e ack=1 e ack number pari al seq. number comunicato dal server+1. Questo
terzo pacchetto ha ancora il payload vuoto anche se potrebbe iniziare a inviare dati. Questa è una
scelta imposta dallo standard.
19
Chapter 3: Livello 4 - TCP, UDP
Quando la connessione è stabilita, client e server allocano le risorse quindi i relativi buffer per
effettuare la comunicazione.
Un tipico problema legato ai server è che potrebbero ricevere troppe richieste di connessioni e termi-
nare le risorse in quanto vengono allocate a ciascuna connessione. Gli attacchi DOS (Denial of service)
sfruttano questo limite per bloccare le connessioni in ingresso ai server.
Esistono diverse procedure per chiudere una connessione, la seguente è la più tipica:
3. Il server invia un segmento con FIN=1 (I mezza chiusura, ovvero il server chiude la connessione);
4. Il client riscontra il segmento e rimane in attesa di eventuali pacchetti ”in volo” (on the fly) inviati
dal server prima della chiusura ma non ancora ricevuti. Dopo un certo tempo, il client chiude la
connessione (II mezza chiusura, ovvero il client chiude la connessione).
20
Chapter 3: Livello 4 - TCP, UDP
3. Established: il client ha ricevuto l’ACK con SYN=1 dal server e gli ha inviato l’ack. La connes-
sione è quindi stabilita e inizia lo scambio dati vero e proprio;
4. Fin Wait 1: il client ha stabilito di voler chiudere la connessione, quindi invia il FIN al server;
5. Fin Wait 2: il client riceve l’ack dal server e attende il FIN ricevendo gli ultimi pacchetti;
6. Time Wait: il client riceve il FIN, invia l’ack, e si prepara a chiudere la connessione. Questa fase
prevede di rimanere con la connessione aperta per un certo tempo (pari a 2MSL) per impedire al
server di aprire altre connessioni sulla stessa porta, che potrebbero portare il server a interpretare
pacchetti della vecchia connessione come appartenenti alla nuova connessione.
TCP server Un server in listen è un server in ascolto su una determinata porta in attesa di un mes-
saggio SYN da qualche client. In fase di Syn Rcvd il server inizia ad allocare le risorse necessarie per la
comunicazione. In fase di CLOSE WAIT il server aspetta il riscontro della chiusura. Last ack indica la
fine della chiusura. Per un server, chiudere una connessione non significa non accettarne altre. Un server
che chiude una connessione rimane comunque in ascolto per poterne stabilire altre.
21
Chapter 3: Livello 4 - TCP, UDP
W byte
Il rate del trasferimento dati è pari a RT T [ s ], dove RTT (Round Trip Time) è il tempo di trasferi-
mento di un pacchetto, dato dalla somma del tempo di andata + il tempo di ritorno, e W è la dimensione
della sliding window.
Un segmento può essere perso o corrotto. In questo caso, essendo TCP affidabile, è necessario un
meccanismo che sia in grado di rilevarlo. Ne esistono due, il 3DUPACK e RTO. 3DUPACK prevede
il rinvio di un pacchetto dopo che sono stati ricevuti 3 ack duplicati. Questo implica che il pacchetto
verrà reinviato dopo che i pacchetti successivi sono stati inviati, quindi l’invio non sarà in sequenza. Se
dopo il reinvio il receiver riceve sia il pacchetto originale che quello reinviato, scarta l’ultimo arrivato.
L’RTO (Retransmission Timeout) è un meccanismo di timeout che alla scadenza richiede il rinvio. La
stima dell’RTO è essenziale per un corretto funzionamento e dipende dal RTT.
22
Chapter 3: Livello 4 - TCP, UDP
e la deviazione standard istantanea, ovvero lo scostamento quadratico medio dalla media, è:
Dove per |SRT Tk − RT Tk | si intende il campione di deviazione standard attuale. Da un punto di vista
analitico, la stima dell’RTT è lo spettro dell’RTT campionato filtrato passa basso con un filtro ad un polo,
infatti la media di un segnale è rappresentata dal valore in continua.
In genere a ≈ 0.825, b ≈ 0.75.
RT Ok = SRT Tk + 4DEVk
Se un RTO scade, ovvero se per un dato pacchetto non ricevo il riscontro, si raddoppia il RTO calcolato.
Se il RTO raggiunge un certo valore massimo, la connessione viene chiusa. Per fare questi calcoli si usa
un solo RTT per finestra.
L’advertised window viene indicata dal receiver ogni volta che invia un pacchetto al sender. Il sender
deve ponderare la propria finestra di trasmissione in base all’advertised window (awnd), infatti non
23
Chapter 3: Livello 4 - TCP, UDP
avrebbe senso per il sender trasmettere più byte di quelli che il receiver può ricevere, in quanto andrebbero
persi. Seguendo le seguenti regole, il receiver può regolare il rate del sender in base al proprio buffer.
Per il receiver:
LastbyteRcvd − LastByteRead ≤ RcvBu f f er
e
awnd = RcvBu f f er − [LastByteRcvd − LastByteRead]
Dove RcvBuffer è la dimensione del buffer del receiver, awnd è la dimensione dell’advertised window,
LastByteRcvd è l’ultimo byte ricevuto dal receiver, LastByteRead è l’ultimo byte letto dal processo
applicativo del receiver.
Per il sender:
W = LastByteSent − LastByteAcked ≤ awnd
Dove W è la finestra di trasmissione, LastByteSent è l’ultimo byte inviato dal sender e LastByteAcked
è l’ultimo byte riscontrato.
24
Chapter 3: Livello 4 - TCP, UDP
Figura 3.10: Zone di Slow Start e Congestion Avoidance utilizzando l’algoritmo AIMD.
• TCP Tahoe
Avvenuto un 3DUPACK o scaduto un RTO, viene impostato sstresh=cwnd/2, in cui con cwnd si
intende il valore della finestra nel momento in cui è avvenuta la perdita del pacchetto. Viene poi
impostata cwnd=1 e si riprende in slow start con le nuove variabili. Ha il difetto di non distinguere
i due eventi, 3DUPACK e RTO.
• TCP Reno
Distingue 3DUPACK e scadenza RTO.
(a) TCP Tahoe (b) TCP Reno (c) TCP new Reno
25
CAPITOLO 4
LIVELLO 3 - IP
Figura 4.1: Supponiamo A, B e il Router abbiano IP compatibili, mentre C per quanto sia connesso
fisicamente alla rete, non abbia un IP compatibile con la rete. Se A invia un pacchetto broadcast, il
pacchetto arriva a B e anche a C, ma C lo scarterà in quanto in una rete diversa. Questo non toglie però
che C possa comunque leggerlo in qualche modo, in quanto comunque lo ha ricevuto.
Tutto ciò che verrà spiegato in questo capitolo si riferisce al protocollo IPv4.
Chapter 4: Livello 3 - IP
4.1 Datagramma IP
1. Version(4 bit): Indica la versione, la più utilizzata è IPv4 ma si sta sviluppando IPv6, che rappre-
senta un protocollo diverso che può comunicare con IPv4 tramite opportuni meccanismi.
2. Header Length(4 bit): Numero di righe dell’header (minimo 5). È espresso in multipli di 32 bit.
3. Type of Service(8 bit): Distingue le esigenze dei flussi applicativi in modo da poter dare priorità
a determinati flussi. Originariamente non fu molto usato ed era composto da 3 bit che servivano a
definire 7 livelli di priorità e 3 bit per definire la terza delay, output, reliability. Di recente è stato
rivalutato e i primi 6 bit si usano per definire codici (Differentiated Service Code Point) che non
hanno ancora una interpretazione univoca quindi sono problematici. Il ToS distingue diversi tipi
di pacchetti e, quindi, i requisiti di Quality of Service (QoS) richiesti dal flusso del datagramma.
Il campo ToS quindi è utilizzato per definire il livello di QoS con cui trattare il pacchetto di un
determinato flusso.
Secondo l’uso classico del ToS (4.3), c’è un campo per indicare la precedenza del pacchetto (3
bit), seguito da D (delay minimo), T (throughput massimo), R (affidabilità massima) e C (costo
minimo). Questi campi si riferiscono all’attraversamento del path.
L’uso moderno del ToS invece prevede due campi:
28
Chapter 4: Livello 3 - IP
DSCP, Differentiated Service Code Point (6 bit) e si riferisce alle modalità di invio del datagramma:
fowarding behaviour. In base al DSCP si usano politiche differenti di gestione del pacchetto. ECN,
Explicit Congestion Notification, avverte il livello TCP di una congestione incipiente. Se si manda
un pacchetto con distanza molto lunga, si deve essere sicuri che la QoS e il campo ToS per quel
pacchetto siano settati nella stessa maniera.
6.1. unused;
6.2. DF (Don’t Fragment): impostato in fase di trasmissione indica che il pacchetto non può
essere frammentato. Un router che ha necessità di frammentarlo per trasmetterlo, lo scarta e
avvisa il mittente;
6.3. MF (More Frament): se impostato a 1 ci sono altri frammenti dopo di lui, se impostato a 0
è l’ultimo frammento.
8. TTL(8 bit): Time To live. Impostato dal sender, viene decrementato da ciascun nodo che reinstrada
in pacchetto. Il nodo che lo imposterà a 0 lo scarterà in quanto il pacchetto potrebbe essere finito
in un loop. Dopo averlo scartato avviserà il mittente (TTL expired). In genere la decrementazione
è di 1.
9. Protocol(8 bit): Viene specificato il protocollo di livello 4 incapsulato nel payload. Non è neces-
sariamente TCP o UDP.
10. Header checksum(16 bit): Funziona analogamente a TCP e UDP, ma controlla errori solo nel-
l’header. Deve essere ricalcolato ogni ritrasmissione perché sicuramente il TTL cambia.
13. Options: campo poco usato perché appesantisce i calcoli. Devono essere righe intere.
29
Chapter 4: Livello 3 - IP
4.3 Indirizzo IP
L’indirizzo IP è definito da 32 bit, è espresso normalmente in forma decimale x.y.z.w con ciascuna
cifra di 1 byte quindi da 0 a 255 oppure in forma binaria come sequenza di bit.
L’obiettivo dell’indirizzo IP è definire un host. Per definirlo è necessario conoscere due informazioni:
la rete in cui è presente l’host e individuata la rete, quale è l’host al suo interno. I 32 bit vanno quindi
organizzati per indicare entrambe le informazioni. Esistono due approcci, Classless e Classful, ma il
risultato è equivalente.
x.y.z.w/N
La maschera è di 21 bit, quindi i primi 2 byte sono sicuramente parte del netmask, mentre so-
lo una parte del terzo byte sarà del netmask. Traducendo in notazione binaria, l’indirizzo è
30
Chapter 4: Livello 3 - IP
In ogni rete due indirizzi sono sempre riservati: l’indirizzo di rete e l’indirizzo di broadcast. Sia N
la maschera, l’indirizzo di rete è quell’indirizzo con gli ultimi 32-N bit posti a 0, l’indirizzo di broadcast
è quell’indirizzo con gli ultimi 32-N bit posti a 1. Presi due indirizzi IP, ponendo a 0 tutti i bit che non
siano nella netmask è quindi possibile capire se appartengono alla stessa rete. Inviando un pacchetto al-
l’indirizzo di broadcast tutti gli host in rete lo riceveranno. A causa della presenza di questi due indirizzi,
la netmask è al più 30, infatti se fosse 31 rimarrebbe solo un bit, che basterebbe solo a indirizzare la rete
stessa.
La netmask si rappreenta come una sequenza di N 1 e 32-N zeri in quanto eseguendo un AND logico
con l’indirizzo IP si ottiene esattamente l’indirizzo di rete. In ambiente Windows la netmask è chiamata
Subnet Mask. In una rete domestica tipica, la netmask è di 24 bit ovvero 255.255.255.0.
31
Chapter 4: Livello 3 - IP
L’approccio classico, denominato classful in contrasto con l’approccio moderno, suddivide l’IP in
classi. Il primo byte indica la rete, quindi esiste un numero di maschere predefinito. Le classi sono:
• Classe A: Il primo byte inizia con 0, quindi è compreso tra 0 e 127. Ha maschera 8 bit. Può
indirizzare 224 host. Se x.y.z.w è un IP di classe A, nell’approccio classless verrebbe scritto come
x.y.z.w/8.
• Classe B: Il primo byte inizia con 10, quindi è compreso tra 128 e 191. Ha maschera 16 bit. Può
indirizzare 216 host. Se x.y.z.w è un IP di classe B, nell’approccio classless verrebbe scritto come
x.y.z.w/16.
• Classe C: Il primo byte inizia con 110, quindi è compreso tra 192 e 223. Ha maschera 24 bit. Può
indirizzare 28 host. Se x.y.z.w è un IP di classe C, nell’approccio classless verrebbe scritto come
x.y.z.w/24.
• Classe D: Il primo byte inizia con 1110, quindi è compreso tra 224 e 239. Ha maschera 32 bit. È
utilizzata solo per il multicast.
32
Chapter 4: Livello 3 - IP
La classe con maschera più vicina è la classe C, che però ha maschera 24 bit. Con l’IP della
traccia, si possono indirizzare 211 host, mentre con una classe C se ne possono indirizzare 28 . Per
avere 211 indirizzi servono 23 classi C, infatti 28 ∗ 23 = 211 . Si nota che 3 è proprio la differenza
tra la maschera classful e la maschera classless, 24 − 21 = 3.
Per avere lo stesso numero di IP, ho bisogno di 8 classi C con in comune i primi 21 bit, ovvero 8
classi C contigue. Questo è un meccanismo di subnetting (vedere 4.4).
2. S I SUPPONGA DI AVERE L’ INDIRIZZO IP 172.16.0.0/14, ESPRIMERLO COME IP CLASSFUL .
La classe subito maggiore è la classe B, con maschera 16. Servono 2(16−14) = 22 classi B. Tutti
gli IP devono avere in comune i primi 16 bit, quindi le 4 sotto-reti avranno i seguenti IP:
1. 172.16.0.0/16
2. 172.17.0.0/16
3. 172.18.0.0/16
4. 172.19.0.0/16
3. S I IP 172.10.10.128/25,
SUPPONGA DI AVERE L’ INDIRIZZO ESPRIMERLO COME IP CLAS -
SFUL COME COMBINAZIONE DI CLASSI B.
33
Chapter 4: Livello 3 - IP
• Da 10.0.0.0/8 a 10.255.255.255/8
• Da 172.16.0.0/16 a 172.31.255.255/16
• Da 192.168.0.0/24 a 192.168.255.255/24
• 0.0.0.0 è un indirizzo IP generico che si auto-assegna un host prima che il DHCP (Dynamic Host
Configuration Protocol, serve ad assegnare dinamicamente un IP) gli assegni un IP. Quando un
host vuole ricevere un IP invia un pacchetto broadcast (non conosce infatti l’indirizzo di rete o del
DHCP) utilizzando questo IP come mittente in modo che il DHCP possa catturarlo e assegnargli
un IP.
• 127.x.y.z è l’indirizzo di loopback. Ogni host crea una interfaccia virtuale di loopback che identi-
fica l’host stesso. Inviando quindi un pacchetto al loopback lo si invia a sé stesso. Questo indirizzo
ha una duplice utilità: può essere utilizzato sia per inviare pacchetti di controllo sia per poter si-
mulare la presenza di un server remoto e inviare pacchetti, per poi riceverli in locale e verificare
che il meccanismo utilizzato funzioni, ovvero serve per verificare il funzionamento di un servizio
generico.
4.4 Subnet
Si supponga che alla propria rete sia stato assegnato un certo IP pubblico. Vogliamo però poter
mappare la rete in più sotto-reti per una serie di ragioni. Una motivazione può essere la dislocazione della
propria azienda in più edifici, oppure si vuole separare le reti tra i vari dipartimenti in modo da impedire la
comunicazione o applicare determinati controlli in base al dipartimento, oppure per ragioni più tecniche,
ovvero ridurre la quantità di traffico broadcast generato da pacchetti inviati dal livello 5. Partizionare una
rete, per quanto possa garantire questa flessibilità, richiede l’aggiunta di hardware, ovvero di router, per
poter far comunicare le varie partizioni. Una buona pratica prevede di assegnare ad ogni router il primo
indirizzo IP disponibile.
34
Chapter 4: Livello 3 - IP
Le partizioni sono dette subnet, ovvero sotto-reti. Il concetto di subnet non è insito a livello 3, IP
vede infatti solo reti, non sottoreti, ma è un meccanismo comunemente attuato in modo da poter avere una
flessibile gestione interna anche se all’esterno le varie partizioni verranno comunque viste come un’unica
rete.
Si supponga che la propria rete abbia l’IP x.y.z.w/N. Di questo IP, i primi N bit non possono essere
modificati in quanto identificano la rete, infatti sono la porzione di bit che consente alla rete di essere
trovata dall’esterno. Per poter partizionare, bisogna utilizzare i restanti 32-N bit. Di questi 32-N bit se ne
prende un certo numero per indirizzare le sottoreti. Si supponga di volere Y sottoreti, saranno necessari
almeno Z bit, con Z scelto in modo che 2Z ≥ Y . Si prendono quindi Z bit successivi alla netmask per
indirizzare le sottoreti ed i restanti 32-(N+Z) saranno i bit necessari a indirizzare gli host. Internamente
l’indirizzo IP risulterà quindi con maschera di dimensione N+Z (chiamata subnet mask) e ciascuna
sottorete sarà individuata dall’indirizzo di rete ottenuto come in 4.3.1.
35
Chapter 4: Livello 3 - IP
Il primo passo è individuare le varie reti. Per farlo si utilizzano i domini di broadcast, ovvero si
analizza in caso un host invii un messaggio broadcast quali host lo riceverebbero, questi sono gli
host appartenenti alla rete.
Figura 4.6: Esercizio 6 dopo aver individuato i domini di broadcast. Da notare che le linee comprendono
anche i router, in quanto l’interfaccia appartiene alla rete.
Dalla figura 4.6 si nota che ci sono 5 subnet, quindi saranno necessari almeno 3 bit per indirizzarle.
Le reti sono cosı̀ fatte: A ha 81 host (80+Router); B ne ha 26; C ne ha 16; D ne ha 2; E ne ha 4.
36
Chapter 4: Livello 3 - IP
La rete più grande è A, quindi è A che pone vincoli sul numero di bit. Per indirizzare A servono
almeno 7 bit.
Per poter indirizzare questa rete sono necessari almeno 7+3=10 bit nella porzione di host. Si può
utilizzare un IP classless di maschera 22 o un IP classful di classe B.
4.5.3 Limiti
Sia il NAT che il NATP presentano un limite, ovvero poiché poggiano su una tabella che mantiene le
corrispondenze, questa tabella sarà limitata dalla memoria ma anche dal tempo stesso necessario alla sua
consultazione in caso abbia dimensioni notevoli.
37
Chapter 4: Livello 3 - IP
38
Chapter 4: Livello 3 - IP
• Se hanno lo stesso indirizzo di rete, appartengono alla stessa rete e si seguono i seguenti passi:
1. Si invia un pacchetto ARP in broadcast a tutti i livelli 2, che lo passeranno al livello 3. Questo
messaggio conterrà l’indirizzo hardware e l’indirizzo IP del mittente.
2. Solo un ricevitore riconoscerà il proprio IP e risponderà in unicast al mittente, includendo il
proprio indirizzo IP e il proprio indirizzo hardware.
3. Il MAC del destinatario viene salvato in cache e mantenuto finché lo scambio è attivo. Anche
il destinatario può salvare il MAC del mittente in quanto è probabile che la comunicazione
sia duplex.
• Se hanno indirizzi di rete diversi, appartengono a reti diverse e si seguono i seguenti passi:
• (8,0) - Echo Request: Consente di inviare una richiesta ad una certa destinazione per capire se
questa è attiva;
• (0,0) - Echo Replay: Risposta data da un nodo che abbia ricevuto una Echo Request;
• (11,0) - TTL Expired: Pacchetto inviato dal router che scarta un pacchetto in quanto il TTL è 0 al
mittente.
39
Chapter 4: Livello 3 - IP
4.10.1 Ping
Ping è una funzione offerta da alcuni applicativi e da alcuni sistemi operativi che si basa sui messaggi
ICMP Echo. Selezionato un host destinatario, Ping invia una echo request, aspetta la echo replay e se-
gnala il RTT.
4.10.2 Traceroute
Traceroute (tracert in Windows) consente di seguire il percorso dei singoli pacchetti. Si inviano
pacchetti con TTL crescenti, in modo che il primo pacchetto (TTL=1) possa arrivare solo al router (che
risponderà con un TTL expired), il secondo al successivo router e cosı̀ via. Grazie ai TTL expired si può
risalire al percorso dei pacchetti e al tempo impiegato. Traceroute può non funzionare qualora alcuni
router avessero disattivato la funzione di trace, in questo caso traceroute porrà un * per indicare l’errore.
Capita frequentemente di trovare ”seabone” come router nel traceroute, esso è un operatore che offre
la connessione tra operatori.
40
Chapter 4: Livello 3 - IP
oltre il conteggio diventa infinito. Da questo è evidente che l’algoritmo può essere utilizzato solo per reti
di dimensioni limitate.
Un pacchetto RIP viene incapsulato in un pacchetto UDP (trasmessi sulla porta riservata 520) e
consente di comunicare un numero massimo di 25 elementi nel distance vector.
È il più semplice algoritmo di instradamento.
Nel RIP 2 i pacchetti sono autenticati, ovvero consentono di riconoscere se una sorgente è affidabile
per poter evitare attacchi. Consente di specificare la Subnet mask in modo da poter supportare gli indirizzi
CIDR.
L’algoritmo può risultare pesante nel caso ci siano molti nodi nella stessa rete. Per poter gestire questa
situazione, si può suddividere la rete in sotto-reti. Ciascun nodo conoscerà la tassonomia solo della sotto-
rete di appartenenza, mentre vedrà tutti gli altri router come collegati ad un unico router, detto di bordo.
Tutti i router di bordo formano tra loro una rete centrale che collega le varie sotto-reti e si occuperà
di inviare il pacchetto al router di bordo corretto che a sua volta invierà il pacchetto al nodo della sua
sotto-rete. Questo meccanismo complica il protocollo e porta un calo di prestazioni, ma è accettabile in
confronto all’oneroso carico computazione che si avrebbe in sua assenza.
41
Chapter 4: Livello 3 - IP
in path vector, ovvero in vettori di percorsi costituiti dai router da seguire per raggiungere una rete di
destinazione. I path vector e le tabelle di instradamento sono costituiti in base a scelte politiche (si può
ad esempio voler impedire ai propri pacchetti di passare per A.S. di imprese rivali.
42
CAPITOLO 5
LIVELLO 2 ISO/OSI
2. Delimitazione, ovvero dotare il frame di campi per rilevare il primo e l’ultimo bit;
3. Indirizzamento, ovvero ogni frame contiene un campo che specifica la destinazione della trama;
4. Controllo e correzione degli errori, principale funzione di questo livello, consente di svincola-
re i livelli superiori da un controllo minuzioso evitando che l’eventuale richiesta di trasmissione
impieghi troppo tempo;
• FEC - Forward Error Correction: viene aggiunto un numero variabile di bit in coda al frame
per poter consentire la rilevazione di errori e l’eventuale correzione di una precisa classe di errori.
Questo non solo provoca un consumo della capacità del canale per trasmettere bit di controllo, ma
richiede anche molta computazione.
• ARQ - Automatic Repeat Request: se viene rilevato un errore, non si prova a correggere ma si
richiede la ritrasmissione.
Chapter 5: Livello 2 ISO/OSI
Figura 5.1: Protocollo Stop & Wait in assenza di errori, dove Tf è il tempo di trasmissione, pari a
lunghezza trama
f requenza ci f ra , τ è il tempo di propagazione, Tp il tempo di elaborazione.
• Il pacchetto viene riscontrato, quindi si è perso un tempo pari a T f + Tack + 2τ + 2Tp ed in questo
tempo la memoria viene mantenuta occupata dal pacchetto in attesa di riscontro.
• Il pacchetto non viene riscontrato entro un certo timer. Questo può essere la conseguenza del
pacchetto perso, del pacchetto scartato, o dell’ack perso, non ha importanza in quanto il timer non
da questo tipo di informazione e si procede semplicemente a reinviarlo. Per evitare stallo, si pone
un limite al numero di ritrasmissioni.
Per poter gestire le ritrasmissioni e consentire al receiver di sapere se sta ricevendo il pacchetto successivo
a quello desiderato (quindi da scartare) o una ritrasmissione del pacchetto di interesse, si adotta una
numerazione dei frame. Essendo la finestra di trasmissione e ricezione pari a 1, è sufficiente un bit di
numerazione.
Questo algoritmo risulta poco efficiente in quanto durante la fase di ”stop” rimane inattivo, quindi
non si sta impegnando al massimo il canale.
44
Chapter 5: Livello 2 ISO/OSI
5.1.2 Go-Back-N
L’algoritmo Go-Back-N è una estensione dello Stop & Wait che prevede di utilizzare una finestra di
trasmissione non unitaria, inviando quindi più frame in sequenza.
La finestra di ricezione (Wt ) è unitaria. Questo significa che il ricevitore può aspettare un solo frame
alla volta quindi deve riceverli in sequenza. Ricevuto (correttamente) il frame atteso, la finestra si sposterà
sul successivo. Per ottimizzare le prestazioni, viene utilizzato anche un meccanismo di N-ack (negative
acknowledgment), inviato ogni qualvolta si riceva un frame fuori sequenza. Il frame in questione viene
scartato, ma consente al ricevitore di sapere che il pacchetto atteso è stato perso, quindi lo notifica con
un n-ack al trasmettitore che può spostare la sua finestra di trasmissione fino al pacchetto segnalato e
riprendere la trasmissione da quello.
Nei frame vengono aggiunti b bit di numerazione, potendo coprire quindi l’intervallo [0, 2b ]. Posto
2b = N, la finestra di trasmissione(Ws ) potrà essere al più grande N. Si supponga di avere una finestra
Ws = N, il sender invia N pacchetti(0, 1, 2, ...N), il receiver li riceve tutti, invia gli ack, sposta la sua fine-
stra di ricezione al successivo frame (0). Se il sender non riceve nessun ack, procederà alla ritrasmissione,
ma il receiver avrà già spostato la finestra al successivo (0) confondendo quindi una ritrasmissione per un
nuovo pacchetto. Questo problema è risolvibile utilizzando una finestra di trasmissione Ws ≤N-1, quindi
Ws +Wt = N.
Questo algoritmo utilizza quindi i riscontri cumulativi, infatti un n-ack può essere visto come ack
cumulativo per tutti i pacchetti precedenti, cosı̀ come un ack implica che tutti i precedenti pacchetti siano
stati ricevuti (in quanto arrivano in sequenza).
Anche in questo caso si utilizza nel trasmettitore un timer associato al singolo frame in modo da poter
procedere alla ritrasmissione.
L’algoritmo Go-Back-N consente di utilizzare il canale al 100% senza periodi di inattività. L’efficien-
za non potrà essere effettivamente unitaria in quanto si ha comunque uno spreco in caso di perdita di un
pacchetto, ma risulta comunque più efficiente dell’algoritmo Stop & Wait.
45
Chapter 5: Livello 2 ISO/OSI
Tf 1
η= =
Ns T f Ns
Il problema è quindi determinare Ns , ottenibile come media di una variabile aleatoria discreta,
definita da x = ∑ pi xi . Supponiamo che si sbagli sempre sullo stesso pacchetto, dalla tabella 5.1 si
può ricavare l’espressione di Ns , quindi la sua media sarà
∞ ∞
d 1 1− p 1
Ns = ∑ i ∗ pi−1 (1 − p) = (1 − p) ∑ i ∗ pi−1 = (1 − p) ( )= 2
=
i=1 i=1 dp 1− p (1 − p) 1− p
η = 1− p
Ns P(Ns )
1 1-p
2 p(1-p)
3 pi (1-p)
... ...
i pi-1 (1-p)
Tabella 5.1: Valutazione probabilità di un certo numero di ritrasmissioni per un dato frame
46
Chapter 5: Livello 2 ISO/OSI
5.1.4.2 Go-Back-N
– Caso in cui gli ack arrivino nella finestra Il meccanismo è molto simile al Selective Repeat,
ma con la differenza che in caso di errore non viene ritrasmesso un singolo pacchetto, ma
anche tutti i successivi della finestra. Si supporrà che K sia il numero di pacchetti ritrasmessi
(quindi se una finestra è da 0 a 7 e c’è un errore sul pacchetto 2, k sarà 6). Valutando la
tabella 5.2 si può ricavare il numero medio di ritrasmissioni come
∞ ∞ ∞ ∞ ∞
i i i
Ns = ∑ (ik + 1)P (1 − P) = ∑ (ikP (1 − P)) + ∑ (P (1 − P)) = (1 − P)[k ∑ (iP ) + ∑ (Pi )]i
i=0 i=0 i=0 i=0 i=0
è evidente che in questo caso non si Può utilizzare la convergenza della derivata della serie
geometrica in quanto l’indice non parte da i=1 ma da i=0. È quindi necessario moltiplicare e
dividere per P. Risulta
kp kp + 1 − p p(k − 1) + 1
Ns = +1 = =
1− p 1− p 1− p
Il tempo perso è dato da Tf (pacchetto inviato) + Tf (pacchetto reinviato) + 2τ tempo di attesa
prima del nack, oppure si può valutare come k ∗ T f , quindi 2T f + 2τ = kT f . L’efficienza risulta
1− p
η=
1 + p(2a + 1)
Ns P(Ns
1 1-p
k+1 p(1-p)
2k+1 pi
... ...
ik+1 pi (1-p)
Tabella 5.2: Valutazione probabilità di un certo numero di ritrasmissioni per un dato frame e tutti i frame
successivi. Prendendo la seconda riga, k+1 è dato dal pacchetto normalmente inviato + il pacchetto
reinviato perchè perso + i k pacchetti successivi.
47
Chapter 5: Livello 2 ISO/OSI
– Caso in cui gli ack arrivino fuori dalla finestra Il calcolo è analogo al Selective Repeat con
la differenza che sono k i pacchetti da ritrasmettere. Supponendo il caso peggiore, ovvero
k = Ws , si ottiene che
(1 − p)Ws
η=
[1 + (Ws − 1)p](1 + 2a)
Per l’algoritmo Stop & Wait non si pone il problema dell’ack interno o esterno alla finestra.
1
Risulta Ns = come nel selective repeat, ma questa volta il tempo totale perso è dato sia
1− p
dalla ritrasmissione sia dal tempo di attesa prima che il timeout scada e si proceda al reinvio,
il Timeout minimo deve essere 2τ altrimenti scatterebbe sempre necessariamente, ovvero Ttot =
(Ns − 1) · (Ttimeout + T f ) + 2τ + T f = Ns (T f + 2τ). L’efficienza sarà data da
Tf 1− p
ηs&w = =
Ns (T f + 2τ) 1 + 2a
. Si nota come anche per P → 0 non diventa 1, ma diminuisce al diminuire della distanza.
Dalla tabella 5.3 sembra chiaro nel primo caso che il primo algoritmo sia buono in assenza di
errori, l’ultimo sia sempre il migliore, mentre il secondo non abbia particolare utilità. In realtà
considerando il caso più generale, ovvero il secondo, risulta molto difficile una valutazione ma a
parità di a, con è piccolo il go-back-n risulta molto più efficiente perché per quanto perda tempo
nella ritrasmissione (raro per ipotesi), nella trasmissione è più rapido.
Inoltre, prima di avere il NACK nel caso Ws = 1 + 2a passa un tempo pari a 2T f + 2τ. Il canale
viene usato per:
Ws T f Ws
=
T f + 2τ 1 + 2a
1−p
Quando K = Ws allora η = 1+(Ws −1)p .
48
Chapter 5: Livello 2 ISO/OSI
5.2.1 ALOHA
ALOHA è un protocollo caratterizzato dall’estrema semplicità. È un protocollo ad accesso casuale,
ovvero non vi sono preassegnazioni di banda alle singole stazioni ma ognuna di queste accede al canale
indipendentemente dalle altre senza nessuna verifica sul mezzo trasmissivo.
Il funzionamento di ALOHA è molto semplice e si articola nei seguenti step:
1. Trasmissione unità dati
4. Trasmissione completata
La trasmissione usando il protocollo ALOHA prevede che l’arrivo dei pacchetti sia casuale, con tem-
po di interarrivo indipendente. Questo fa pensare di poterlo modellare con un processo di Poisson sotto
l’ipotesi che il numero di stazioni che trasmettono sia infinito. Supponendo un intervallo di trasmissione
Tf e λ numero medio di pacchetti al secondo, la probabilità che durante la trasmissione di un pacchetto
ne arrivino altri k è espressa come
(λ T f )k −λ T f
Pk = e
k!
Supponendo ancora che il periodo di trasmissione sia Tf , per l’ALOHA l’intervallo di vulnerabilità è
2Tf , infatti avverrà una collisione se qualcuno stava trasmettendo prima dell’inizio della trasmissione o
se qualcuno trasmetterà durante.
Si definisce traffico offerto dalla rete (G)
G = λ T f [pacchetti]
Si può valutare la probabilità che una trasmissione non abbia collisioni come probabilità che nessun
altro trasmetta contemporaneamente, ovvero come probabilità che arrivino 0 pacchetti durante l’intervallo
di vulnerabilità (2Tf ):
(λ 2T f )k −λ 2T f
P0 = e = e−2λ T f
0!
49
Chapter 5: Livello 2 ISO/OSI
pacchetti bit
Sia λ [ ] la frequenza di sorgente, L[ ] la dimensione del pacchetto, si può definire
secondo pacchetto
il Throughput come
bitRicevuti
Γ = λ LP0 [ ]
secondo
ed il throughput normalizzato (considerando c il throughput massimo, ovvero la capacità del canale)
come
Γ
S = = λ T f P0 = GP0 = Ge−2G
c
Da uno studio di funzione di S(G) ne risulta il grafico in figura 5.2 dal quale risulta evidente non solo
che il massimo throughput è al più 0.18, ovvero il 18% della capacità del canale, ma che con l’aumentare
del traffico offerto diminuisce fino ad azzerarsi l’effettivo throughput (collassa la rete).
Figura 5.2: Andamento del throughput normalizzato al variare del traffico di rete per un protocollo
ALOHA.
3. Attesa ack
4. Pacchetto riscontrato?
50
Chapter 5: Livello 2 ISO/OSI
Questo richiede quindi una sincronizzazione tra le stazioni in quanto per tutte gli slot devono essere
collocati negli stessi istanti, risulta una procedura complessa.
Con questo protocollo è possibile dimezzare rispetto ad ALOHA l’intervallo di vulnerabilità che
consisterà unicamente nell’intervallo di trasmissione successivo a quello in cui si vuole trasmettere in
quanto più stazioni potrebbero voler trasmettere contemporaneamente, ovvero l’intervallo di validità è
Tf .
Ripetendo i conti eseguiti con ALOHA considerando l’intervallo di vulnerabilità Tf , si ottiene che la
probabilità che la trasmissione riesca è
P0 = e−λ T f
e che il throughput normalizzato è
S = G ∗ e−G
.
Dalla figura 5.3 si può notare la differenza tra ALOHA e Slotted ALOHA. Il secondo offre un th-
roughput maggiore, ma soffre come il primo del problema del collasso della rete al crescere del traffico
offerto.
Figura 5.3: Andamento del throughput normalizzato al variare del traffico di rete per un protocollo
ALOHA e Slotted ALOHA.
51
Chapter 5: Livello 2 ISO/OSI
Per quanto detto, è evidente che una stazione potrebbe non accorgersi che il canale è già occupato.
In questo caso avviene la collisione ed esistono diverse politiche di reazione, normalmente ci si basa sul
non riscontro dopo un tempo di 2τ per la ritrasmissione.
La collisione viene gestita con la ritrasmissione dopo un tempo casuale.
In caso si trovi il canale occupato, esistono tre possibili modi di procedere:
1. 0-persistent: si smette di ascoltare (con conseguente risparmio energetico) e si riprende dopo
un certo tempo scelto casualmente. In questo modo le stazioni che stanno ascoltando in attesa
di trasmettere è probabile che scelgano tempi diversi e non riprovino insieme a trasmettere con
eventuale collisione.
2. 1-persistent: si continua ad ascoltare finché il canale si libera. Quando si libera, si trasmette.
3. p-persistent: soluzione ibrida delle due precedenti: si sceglie di rimanere in ascolto (politica
1-persistent) con probabilità p, si sceglie di aspettare un tempo casuale (politica 0-persistent) con
probabilità 1-p. Nella pratica, si genera un numero casuale n ∈ [0, 1], se n < p si sceglie 1-persistent,
se n > p si sceglie 0-persistent.
52
Chapter 5: Livello 2 ISO/OSI
Poiché si suppone che ci siano diversi nodi allacciati al canale condiviso, ha senso pensare che ci siano
più nodi in ascolto che non hanno cognizione dell’eventuale collisione in quanto non possono sapere cosa
si sta trasmettendo e se c’è o meno collisione con altro. Per poter comunicare a tutti i nodi che è stata
rilevata una collisione, il trasmittente invia un segnale di jam e i nodi che lo ricevono scartano l’ultima
lettura in quanto è corrotta, se invece la ricezione è ancora in corso fermano la ricezione, quindi al rete
viene resettata (si ripulisce il canale).
53
Chapter 5: Livello 2 ISO/OSI
Il sistema prevede che non ci sia accesso casuale al mezzo nella comunicazione. È un protocollo semplice
per la gestione dell’accesso multiplo ma il master (stazione primaria) rappresenta il collo di bottiglia.
Esistono due tipi di configurazione di linea:
1. Configurazione sbilanciata, in cui sono presenti una stazione primaria e una o più stazioni secon-
darie;
1. Asynchronous Balanced Mode, utilizzato in configurazioni bilanciate, in cui ognuna delle due
stazioni combinate può iniziare a trasmettere senza dover attendere alcuna autorizzazione dall’altra
stazione;
2. Normal Response Mode, utilizzato in configurazioni sbilanciate, in cui solo la stazione primaria
può iniziare a trasmettere sul collegamento;
3. Asynchronous Response Mode, usato in configurazioni sbilanciate, in cui una stazione secondaria
può iniziare a trasmettere senza esplicita autorizzazione da parte della stazione primaria.
1. Flag (8 bit): contiene il valore binario ”01111110” (in esadecimale, 0x7E). Essendo la trasmis-
sione asincrona, questo campo è necessario per delimitare l’inizio e la fine del frame al costo di
uno spreco di banda per dati che non contengono reale informazioni. Può comunque accadere che
la configurazione nei flag si presenti all’interno del frame, quindi questo porterebbe una configu-
razione errata. Si ricorre al bit stuffing, ovvero in trasmissione dopo una sequenza di cinque 1
si introduce uno 0, in ricezione viene eseguita l’operazione inversa. Questo non impedisce che a
causa di errori si formi comunque una configurazione uguale a quella del flag portando unione o
54
Chapter 5: Livello 2 ISO/OSI
separazione dei frame. Uno svantaggio del bit stuffing è che si perde la molteplicità a 8 di quello
che trasmetto, costringendo il ricevitore a dover elaborare i singoli bit.
• La stazione secondaria ricevente nel caso di comandi emessi dalla stazione primaria;
• La stazione secondaria trasmittente nel caso di risposte emesse dalle stazioni secondarie;
• Codice speciale costituito da soli 1 per invio in broadcast.
• Information (I): primo bit posto a 0. Indica che la trama porta informazione dell’utente. Il
campo N(S) indica il numero della trama corrente che viene trasmessa, utile poiché HDLC
utilizza Go-Back-N o Selective Repeat (3-7 bit), N(R) il numero della prossima trama che la
stazione aspetta di ricevere, riscontrando tutte le trame precedenti (piggybacking e riscontro
cumulativo fino a N(R)-1), utile poichè la comunicazione è bidirezionale o full duplex.
• Supervisory (S): primi due bit posti a 10. Utilizzata per gestire i riscontri di trama e segnalare
l’eventuale stato fuori servizio della stazione. Il numero N(R) indica la prossima trama che la
stazione trasmittente si aspetta di ricevere e può indicare riscontro delle trame precedenti. I
due bit S possono indicare:
– 00: Receive Ready
– 01: Receive Not Ready
– 10: ACK negativo (Go-back-n)
– 11: ACK negativo (Selective Repeat)
• Unnumbered (U): primi due bit posti a 11. Svolge funzioni di gestione e collegamento dati
quali inizializzazione, chiusura, reset.
Il bit P/F serve quando posto a 1 o a sollecitare una risposta o a segnalare una risposta.
55
Chapter 5: Livello 2 ISO/OSI
4. Information (8 bit o multipli): contiene i dati utente sempre contenuto in trame di tipo I, assente
in trame di tipo S, definito in alcune trame di tipo U.
5. FCS (Frame Check Sequence (16 o 32 bit): svolge funzioni di rilevazione degli errori usando
l’algoritmo CRC (vedere 5.3.2
56
Chapter 5: Livello 2 ISO/OSI
1. Flag (1B): serve a riconoscere inizio e fine frame. Contiene 0x7E. Poichè la sequenza di bit 0x7E
potrebbe ricorrere nel payload, è necessario un meccanismo di controllo. Si usa la tecnica del byte
stuffing, ovvero si sostituisce al posto di 0x7E una sequenza di controllo 0x7D seguita dal risultato
di una XOR tra 0x7E e il carattere 0x20 (ovvero 0x5E). Per proteggere anche la sequenza 0x7D, si
sostituisce anche questa con 0x7D seguita dal risultato della XOR tra 0x7D e 0x20 (ovvero 0x5D).
In sintesi, utilizzando il byte stuffing, nel payload non potranno apparire le sequenze 0x7E, 0x7D,
0x03.
3. Control (1B): valore di default 0x03, corrispondente all’unnumbered HDLC in quanto il protocollo
non numera né i bit né i frame, infatti normalmente è utilizzato su cavo quindi il BER è molto basso.
57
Chapter 5: Livello 2 ISO/OSI
• PAP: consente di inviare nel pacchetto username e password, sono quindi entrambi inviati in
chiaro, nonostante in remoto la password sia in hash.
• CHAP: consente di inviare l’username, ricevuta una risposta dal server si invia un codice calcolato
in base alla password. Il server, che conosce la password corrispondente all’username, calcola a
sua volta il codice e confronta se sono uguali. La password non viene trasmessa in chiaro ma sarà
memorizzata in chiaro sul server remoto.
58
CAPITOLO 6
IEEE (Institute for Electrical and Electronics Engineers) è un ente che si occupa di standard e proto-
colli. In particolare lo standard 802 è stato sviluppato per reti LAN ma in seguito è stato utilizzato anche
in reti MAN e WAN. Questo standard si propone di risolvere il problema del livello 2 nella pila ISO/OSI
che lo rende accoppiato con lo strato fisico e variabile con esso. Per fare questo, suddivide il livello 2 in
altri due livelli, MAC (Medium Access Protocol) e LLC (Logical Link Control. MAC si occupa delle
procedure di accesso al mezzo trasmissivo che nelle reti LAN è condiviso tra tutte le stazioni connesse
alla rete (accesso multiplo) e fornisce al livello superiore una interfaccia fissa di accesso al mezzo fisico,
LLC si occupa dei collegamenti logici tipici del livello 2.
Lo strato LLC fornisce una interfaccia unificata verso lo strato di rete e mascera ai livelli superiori
il modo in cui si accede al mezzo trasmissivo. Può essere connectionless senza riscontro, connection-
oriented, connectionless con riscontro.
Chapter 6: Livello 2 IEEE 802
• Destination Address (1B), Source Address (1B): Sono usati per distinguere i protocolli del livel-
lo superiore. L’indirizzo è in realtà composto da 7 bit. Per protocolli proprietari o protocolli non
riconosciuti dalla ISO si utilizza il SNAP Frame (figura 6.3, si impostano i Source e Destination
address a 0xAA e si specifica l’organizzazione ed il tipo del protocollo all’interno dell’organizza-
zione. Ad esempio IP non appartiene a nessuna organizzazione, quindi viene posto Org. Code a
0x00 e Type a 0x800, quindi i primi 8 byte del pacchetto che incapsula IP sono sempre uguali.
LLC non utilizza flag in testa e in coda, infatti il controllo di errore e la delimitazioni sono demandati al
livello inferiore (MAC), per la stessa ragione il pacchetto ha solo le sezioni di header e payload ma non
quella di tail.
60
Chapter 6: Livello 2 IEEE 802
3. Information (6B): contiene i dati di utente del protocollo di livello superiore e quindi la PDU di
livello LLC.
Il MAC gestisce mezzi intrinsecamente condivisi, deve quindi utilizzare politiche di gestione dell’ac-
cesso multiplo. Utilizza il CSMA/CD (vedere 5.2.4) e utilizza un algoritmo di Exponential backoff ogni
qualvolta venga rilevata una collisione. Questo algoritmo prevede di ritrasmettere dopo un tempo random
calcolato come
T = Tslot · [0, 2m − 1]
61
Chapter 6: Livello 2 IEEE 802
con Tslot il tempo necessario a trasmettere il frame di lunghezza minima e m = min(nr Collisioni Consecutive, 10).
Si nota quindi come T aumenti al ripetersi delle collisioni o ogni qualvolta si trovi il canale occupato.
• 10Base5: conosciuta come thick Ethernet, utilizza un cavo coassiale spesso. Ha una estensione
massima di 500m e può supportare fino a 100 stazioni distanziate almeno di 2.5 m;
• 10Base2: conosciuta anche come Thin Ethernet, utilizza un cavo coassiale sottile. L’accesso è
gestito direttamente dalla scheda Ethernet senza bisogno di dispositivi esterni.
• 10Base-T: viene utilizzato come mezzo trasmissivo il doppino non schermato UTP (Unshielded
Twisted Pair, ovvero Doppino non schermato incrociato) oppure il STP (Shielded Twisted Pair).
• 10Base-F: viene utilizzata come mezzo trasmissivo la fibra ottica. È analoga alla 10Base-T.
Con le tecnologie 10Base-T e 10Base-F viene introdotto a livello 2 un dispositivo chiamato hub che
consente di connettere più stazioni tra di loro (vedere 6.4.1).
Nell’Ethernet a 10Mbit/s: Tslot = 51.2µs, IFG = 9.6µs. Dove IFG indica l’Inter Frame Gap.
62
Chapter 6: Livello 2 IEEE 802
Questa evoluzione prevede una frequenza di cifra 10 volte superiore a quella della Ethernet originale,
cosı̀ che la rete opera a 100 Mbit/s. L’apparecchiatura che funge da centro stella è lo switch (vedere
6.4.3).
Poichè Fast Ethernet è a 100Mbit/s, si riduce di 10 volte il tempo per poter rilevare le collisioni, quindi
il protocollo CSMA/CD impone che la distanza massima sia di 500 metri. Si possono avere inoltre due
tipologie di cavi: straight e cross, dove gli incroci, twisting si fa tra coppie in TX e RX, trasmissione e
ricezione.
Nell’Ethernet a 100Mbit/s: Tslot = 5.12µs, IFG = 0.96µs.
• Carrier extension, ovvero estendere la lunghezza minima della trama con un campo Extension in
modo da conservare la retrocompatibilità;
• Frame bursting o Jumbo frame, ovvero consentire alla stazione di trasmettere più frame consecutivi
senza interporre l’IFG tra esse.
1. Preamble (7 byte): consente trama per trama la sincronizzazione sul segnale in ricezione. Sono
bit che si ripetono alternativamente del tipo ”101010”. Questo campo non fa parte del livello MAC
e comporta una lieve perdita di tempo nella trasmissione per permettere il sincronismo.
2. SFD - Start Frame Delimiter (1 byte): contiene il codice 10101011 ed è 1 byte utile per far
capire che sta iniziando la trasmissione. In questo modo però c’è la violazione di una proprietà
della codifica Manchester (avviene il campionamento di bordo dello slot).
63
Chapter 6: Livello 2 IEEE 802
6. Data: rappresenta il campo informativo della trama e contiene il pacchetto di livello superiore.
7. Pad: serve a garantire una lunghezza minima della trama di 64 byte. Varia da 0 a 46 essendo 18 i
byte sempre presenti nella trama (senza contare preamble e SFD che non contribuiscono). Ethernet
capisce che il pacchetto termina grazie al silenzio tra due frame, ≈ Tslot .
Non essendoci un delimitatore a fine trama, dopo ogni frame si attente l’IFG (Interframe Gap), ovvero
un tempo tra la fine della trasmissione di una trama e l’inizio della successiva. La durata minima è pari a
Tslot .
6.4.2 Bridge
Un bridge è un dispositivo di livello 2 che fa da ponte tra due porzioni di una rete LAN anche con
tecnologie diverse (eterogenee), quindi è in grado di leggere i pacchetti in ingresso ed adattarli alla
tecnologia della rete destinataria.
La principale funzione del bridge è quello di switchare i pacchetti in ingresso sulla corretta porta di
uscita al quale è collegato un dispositivo con un dato mac address. Potendo leggere il pacchetto di livello
2, il bridge può crearsi una tabella di routing detta Filtering Database o MAC Table (figura 6.7) con i
seguenti campi:
64
Chapter 6: Livello 2 IEEE 802
3. Ageing Time: Tempo di validità dell’entry nella tabella. Quando scade, l’informazione è con-
siderata non più valida e viene cancellata. Questo è un approccio per consentire un adattamento
dinamico alla rete;
5. Type: indica se l’entry è statica o dinamica. Ci sono alcune applicazioni in cui è necessario
associare manualmente il MAC address ad una determinata porta.
Il bridge può imparare quali dispositivi sono connessi a quale porta e memorizzarlo dinamicamente nella
tabella, questo viene detto meccanismo di Learning. Poichè è probabile che ciascuna stazione invii subito
un pacchetto (ad esempio appena accesa richieda l’indirizzo del router), l’apprendimento è piuttosto
rapido dunque lo è il transitorio di riempimento.
65
Chapter 6: Livello 2 IEEE 802
I processi di Learning e Forwarding del bridge possono essere articolati come descritto nel flow chart
di figura 6.8. In particolare: il bridge riceve il frame e controlla il FCS per evitare di trasmettere frame
errati. Viene controllata quindi se la porta mittente è in forwarding, se è abilitata il frame è passato poi
al destinatario, altrimenti il dato è comunque utile per il processo di learning. Si controlla quindi se il
Destination MAC Address è presente in tabella, se presente sulla stessa LAN mittente il frame viene pas-
sato al learning, se la LAN è diversa il frame viene inoltrato ad una porta diversa. Se il Destination MAC
Address non è in tabella invio il frame in flooding; ad una eventuale risposta potrò capire il destinatario.
Il meccanismo di learning invece fa sı̀ che il Source MAC Address venga inserito in tabella con
Ageing-Time=0 qualora non fosse già presente. L’Ageing-Time viene posto a zero ogni volta in cui la
macchina risulta attiva. Se invece la macchina è inattiva, il suo MAC Address viene cancellato dalla
memoria.
Il bridge isola di domini di collisione e rappresenta un unico dominio di broadcast.
6.4.3 Switch
Lo switch è un dispositivo che funge da commutatore e non da semplice ripetitore, ovvero è in grado
di leggere il pacchetto MAC, leggerne il MAC Address e mettere in comunicazione porta mittente e
porta destinatario creando una connessione 1 a 1. Questo richiede che lo switch sia dotato di un proprio
buffer sia per i dati da trasferire sia per memorizzare una tabella contenente i vari MAC address e le
corrispondenti porte. Il buffer potrebbe cadere in congestione, problema gestito ai livelli superiori. È
importante che lo switch può commutare solo su reti Ethernet, ovvero su reti dello stesso tipo (omogenee)
con lo stesso protocollo e questa è la principale caratteristica che lo distingue da un bridge, poiché i
meccanismi di gestione MAC Table, Learning e Forwarding sono analoghi.
Lo switch elimina le collisioni perché a parte il primo frame, i successivi hanno noto mittente e
destinatario.
Lo switch può funzionare secondo le seguenti modalità:
• Store and Forward: lo switch leggere l’intero rame, verifica il campo FCS e nel caso lo scarta, lo
memorizza temporaneamente nel bugger associato alla porta d’uscita e quando questa è libera lo
trasmette.
• Cut and Through: lo switch leggere solo l’header del frame e lo inoltra immediatamente senza
memorizzazione intermedia, questo può rappresentare un problema in caso di trasmissione di pac-
chetti corrotti. Il ritardo di elaborazione è indipendente dalla dimensione del frame. Se privo di
errori, questa modalità è la più efficiente;
• Fragment Free: lo switch legge solo i primi 64 byte del frame (dimensione minima del frame
Ethernet) all’interno dei quali possono avvenire le collisioni. Se il frame è minore di 64 byte viene
scartato. È una modalità efficace per porzioni di rete con hub. Tipicamente usato da CISCO.
Solitamente in una rete gli switch sono organizzati gerarchicamente, con più switch collegati ad uno
switch centrale, detto centrostella, collegato ad un router di frontiera. Alcuni switch consentono una
separazione logica tra le porte in modo da separare due reti. Si distinguono switch di piano e di edificio,
dove questi ultimi si collegano al centrostella.
66
Chapter 6: Livello 2 IEEE 802
67
Chapter 6: Livello 2 IEEE 802
in ascolto setta il proprio NAV e non effettua ”carrier sensing” finchè il NAV non è zero (Virtual Carrier
Sensing).
Figura 6.9: Problema dell’”Hidden Terminal” con relativa soluzione usando i frame CTS e RTS.
68
Chapter 6: Livello 2 IEEE 802
6.5.2.3 DCF con RTS e CTS - Distributed Coordination Function con Request To Send e Clear
To Send
DCF è un protocollo 802.11. Quando un nodo vuole inviare, aspetta un certo timer DIFS (DCF Inter
Frame Space). Se il nodo percepisce durante questo intervallo che qualche altro nodo sta usando il canale,
ferma il conteggio. Quando il timer scade, il nodo ascolta il canale per capire se è libero, nel caso aspetta
un tempo DIFS e invia una richiesta RTS. Il ricevente, se acconsente, risponde con un permesso CTS
dopo un tempo SIFS (Short Inter Frame Space). Il mittente dopo un tempo SIFS invia il frame. Dopo
un tempo SIFS il ricevente risponde con un ACK. Tutti gli altri nodi in ascolto impostano il loro NAV
leggendo i pacchetti RTS e CTS.
Figura 6.11: Distributed Coordination Function con Request To Send e Clear To Send.
69