Sei sulla pagina 1di 79

Appunti del corso di

Reti di Telecomunicazione
CdL Ingegneria Informatica e dell’Automazione
Politecnico di Bari

Docente del Corso:


Prof. Gennaro BOGGIA

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.

Quest’opera è soggetta alla licenza Creative Commons


”Attribuzione - Non commerciale 3.0 Italia (CC BY-NC 3.0 IT)”

Grazie a Velon Massimo e Cucumazzo Vincenzo per aver contribuito con correzioni e approfondimenti.

Scritto in
LAT XE
INDICE

Indice vi

Indice degli esercizi vii

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

3 Livello 4 - TCP, UDP 15


3.1 Porte e Socket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2 UDP - User Data Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
INDICE

3.2.1 Segmento UDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16


3.3 TCP - Transmission Control Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.3.1 Segmento TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.3.2 Gestione della connessione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.3.2.1 Creazione della connessione . . . . . . . . . . . . . . . . . . . . . . . 19
3.3.2.2 Chiusura della connessione . . . . . . . . . . . . . . . . . . . . . . . 20
3.3.2.3 Diagrammi a stati . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.3.3 Scambio dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.3.3.1 Stima RTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.3.3.2 Stima RTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.3.4 Controllo di flusso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.3.5 Controllo di congestione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

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

5.1.3 Selective Repeat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45


5.1.4 Efficienza degli algoritmi di rilevazione di errore . . . . . . . . . . . . . . . . . 45
5.1.4.1 Selective Repeat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.1.4.2 Go-Back-N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.1.4.3 Stop & Wait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.1.5 Confronto tra gli algoritmi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.2 Accesso multiplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.2.1 ALOHA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.2.2 Slotted ALOHA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.2.3 CSMA - Carrier Sense Multiple Access . . . . . . . . . . . . . . . . . . . . . . 51
5.2.4 CSMA/CD - Carrier Sense Multiple Access Collision Detection . . . . . . . . . 52
5.2.5 CSMA/CA - Carrier Sense Multiple Access Collision Avoidance . . . . . . . . . 53
5.3 HDLC - High level Data Link Control . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.3.1 Struttura del frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.3.2 CRC - Cycle Redundancy Check . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.4 PPP - Point to Point Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.4.1 Struttura del frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.4.2 LCP - Link Connection Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.4.3 NAP - Network Control Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . 58

6 Livello 2 IEEE 802 59


6.1 LLC - Logical Link Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
6.1.1 Frame LLC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
6.2 MAC - Medium Access Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
6.2.1 Frame MAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
6.2.2 MAC Address . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6.2.3 Gestione accesso multiplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6.3 Ethernet (802.3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
6.3.1 Ethernet a 10Mbit/s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
6.3.2 Fast Ethernet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
6.3.3 Gigabit Ethernet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
6.3.4 Struttura del frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
6.3.5 Accesso multiplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.4 Hub, switch, bridge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.4.1 Hub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.4.2 Bridge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.4.3 Switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
6.4.4 Spanning Tree (802.1d) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
6.5 Wireless (802.11) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
6.5.1 Struttura di rete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
6.5.2 Gestione dell’accesso multiplo . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
6.5.2.1 Hidden Terminal Problem . . . . . . . . . . . . . . . . . . . . . . . . 68
6.5.2.2 Exposed Terminal Problem . . . . . . . . . . . . . . . . . . . . . . . 68

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

Indice degli esercizi


Esercizio 1 Netmask con approccio classless . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Esercizio 2 Indirizzo di rete e di broadcast . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Esercizio 3 Host nella stessa rete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Esercizio 4 Da classless a classful . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Esercizio 5 Subnet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Esercizio 6 Piano di indirizzamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

vii
CAPITOLO 1

INTRODUZIONE

1.1 Reti di telecomunicazione


1.1.1 Definizione
Una rete è una interconnessione di nodi che comunicano tra di loro. In una rappresentazione a grafo,
si può vedere il primo nodo come mittente e l’ultimo nodo come destinatario, mentre i nodi intermedi
prendono l’informazione dal nodo precedente e la passano al successivo (hop-by-hop). Gli archi tra i no-
di rappresentano il canale di comunicazione (canale radio, fibra ottica, cavi). La rete può essere quindi
definita come
R ETE = SERVIZIO + MODALIT À + CANALE
Dove per servizio e modalità si intende l’insieme di protocolli scelti affinché l’informazione giunga a
destinazione come desiderato. Un esempio di scelta di questi fattori può riguardare il tipo di instradamen-
to, infatti non esiste una strada (serie di nodi e archi) oggettivamente migliore ma la scelta va effettuata
in base al servizio. Nei servizi real-time vocali, si può accettare al più un ritardo di 200-300ms. Il ri-
tardo può avere una certa varianza detta jitter. Nei video on-demand si accetta un ritardo iniziale anche
notevole, ma si richiede che non ci sia il buffering durante la visione.

1.1.2 Configurazione di un servizio


Lo scambio di informazioni può prevedere che esistano più destinatari o più mittenti, ovvero che le
comunicazioni siano 1 ←→ 1, 1 ←→ N, N ←→ N.

• Comunicazione Unicast ha un solo destinatario ed un solo mittente (Ad esempio una telefonata).

• Comunicazione Multicast ha come destinatario solo un particolare sottoinsieme dei possibili


destinatari (Ad esempio i gruppi Whatsapp, che hanno come destinatari solo una parte dei contatti).

• Comunicazione Broadcast è rivolta a tutti i possibili destinatari. È in genere unidirezionale (Ad


esempio la televisione).
Chapter 1: Introduzione

1.1.3 Direzione della comunicazione


La comunicazione può essere

• Duplex ovvero bidirezionale, può essere

– Half-Duplex in caso la bidirezionalità non sia contemporanea ((e.g. le note vocali)


– Full-Duplex in caso la bidirezionalità sia contemporanea (Chiamate)

Può inoltre essere

– Simmetrico se i flussi hanno gli stessi parametri


– Asimmetrico se i flussi hanno parametri diversi

• Simplex ovvero unidirezionale

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.2 Topologia di una rete


La topologia di una rete è il modo in cui i nodi sono collegati ed è importante per la rete stessa.
esistono diverse topologie, con i relativi pro e contro.

Figura 1.1: Topologie di rete.

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

2.1. Numero di passi fisso tra una coppia mittente-destinatario;


2.2. Si conosce a priori la strada dell’informazione;
2.3. È semplice da realizzare;
2.4. Tanti rami quanti sono i nodi.

Svantaggi:

2.1. Se si rompe un nodo si interrompe l’anello;


2.2. Una informazione può continuare a girare nell’anello, è quindi necessario predisporre i nodi
affinché possano rimuoverla.

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:

3.1. Può essere valutata la profondità dell’albero;


3.2. Non ha anelli;
3.3. N-1 rami, cresce linearmente con N.
3.4. Molto semplice da creare, ciascun nodo è connesso a qualunque altro nodo.

Svantaggi:

3.1. Se un nodo cade tutti i figli sono sconnessi;


3.2. Esistono più strade possibili per percorrerlo.

Un esempio di albero è la linea telefonica.

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:

5.1. Facile l’aggiunta di nuovi nodi.

Svantaggi:

5.1. Essendo condiviso da tutti i nodi, il bus risulta essere un bottleneck;

3
Chapter 1: Introduzione

5.2. Se si rompe il bus, cade qualunque comunicazione;


5.3. Se due nodi trasmettono al bus in tempi prossimi si verificherà una collisione. È necessario
utilizzare regole di accesso multiplo.

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.

È difficile che una rete abbia una topologia unica.

1.3 Sezioni di accesso e transito


Comunque si prenda una rete si possono distinguere due sezioni: la sezione di accesso e la sezione di
transito (core network).
La sezione di accesso serve ad accedere alla rete (e.g. dispositivo+router).
La sezione di transito serve a far sı̀ che l’informazione giunga a destinazione (e.g. il provider o la
rete del provider).
Ogni sezione ha i suoi problemi e le sue tecnologie.

Figura 1.2: Sezioni di accesso e transito.

1.4 Classificazione delle reti


Nella classificazione è interessante notare come estensione e banda siano inversamente proporzionali.

• LAN - Local Area Network


Rete di area locale, ovvero limitata. La limitata distanza crea meno problemi e presenta costi
più bassi. Normalmente hanno banda larga. Ad esempio la rete LAN di una azienda o di un
dipartimento.

• MAN - Metropolitan Area Network


Reti a livello metropolitano che connettono più reti LAN. Non devono fornire l’accesso ma devono
collegare più reti. Normalmente sono reti il cui utilizzo è a pagamento.

• WAN - Wide Area Network


Collegano MAN e a volte anche LAN, ha estensione geografica. Hanno velocità maggiori ma
banda limitata. Hanno tecnologie complesse. Ad esempio la rete dati è WAN e ha elevate velocità

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.

• PAN - Personal Area Network


Estensione limitata a 10-20 metri, Ad esempio il bluetooth.

• BAN - Body Area Network


Utilizzo personale, come ad esempio i dispositivi wearable.

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.1 CS - Circuit Switching


Un circuito è un percorso, ovvero un insieme di nodi e archi.
Sistemi a commutazione di circuito (il nome deriva dallo switch che prima era fatto manualmente).
In questa commutazione il percorso è deciso a priori nella fase di setup, poi avviene lo scambio vero e
proprio, poi nella fase finale (detta di tear down) avviene il rilascio delle risorse. Sono molto efficienti
soprattutto per il real-time in quanto il ritardo è contenuto e noto a priori. Si conosce anche la banda.
Il circuito allocato è esclusivo ovvero i nodi possono essere coinvolti al più in un circuito, quindi se
l’utilizzatore non lo utilizza c’è spreco (questo spiega perché le tariffe come quella telefonica sono basate
sul tempo di utilizzo), inoltre se tutti i circuiti sono occupati è necessario attendere.
Un esempio tipico di commutazione di circuito è la linea telefonica. Quando si compone il numero si
sceglie il percorso tra i nodi, l’ultimo nodo sceglie se il circuito può chiudersi o meno ed invia la risposta
al nodo di partenza che inizia a squillare. Questo ritardo nella fase di setup porta a non far squillare se
il telefono viene chiuso troppo presto.
Il ritardo end-to-end nella fase di trasferimento sarà dato dalla somma dei ritardi di propagazione a
cui si aggiunge il ritardo di trasmissione.

1.5.2 PS - Packet Switching


Si divide la sequenza di bit in pacchetti (segmenti) di dimensioni note. Un pacchetto è composto da
header e payload. Esistono due modalità: datagram e virtual circuit.

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

distanza Lunghezza in bit


con τi = velocita nel mezzo il ritardo di propagazione, Tti = f requenza di trasmissione , Te tempo di elaborazione,
poco significativo in quanto i nodi sono dotati di CPU veloci, Tqi tempo di accodamento, molto variabile
in base al buffer del nodo i-esimo, Tti ritardo di trasmissione.

Figura 1.3: Ritardi nella modalità datagram.

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

Dove Te è molto trascurabile, mentre Tq , tempo di accodamento, non è presente.


Nella commutazione di pacchetti a circuito virtuale ho una situazione ibrida, con la presenza di Tq .
Quest’ultima tecnica è più veloce del Datagramma poiché non vi sono i ritardi dovuti all’instradamento.

1.5.3 Algoritmi di instradamento

Figura 1.4: Tipologie di algoritmi di instradamento.

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

1.3. Source routing


La sorgente scrive nell’header quali nodi dovranno essere percorsi fino al destinatario. Per
poter conoscere i nodi normalmente invia prima un pacchetto di scouting che tracci i vari
router (normalmente usando la politica flooding). Ottimo per reti piccole e reti con più nodi
mobili che le fanno cambiare topologia.

2. Instradamento con tabella


I nodi conservano informazioni sul destinatario, sul costo della comunicazione con il destinatario,
sul prossimo nodo, in una tabella. Ci sarà quindi un percorso a costo minore.

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.

1.5.3.2 Tabella di routing

Figura 1.5: Tabella di routing.

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

1.5.3.3 Metriche di costo


Si possono utlizzare diverse metriche per definire il costo dei percorsi (path) verso una data destina-
zione:
• Bandwidth: la capacità di un link (es. generalmente un link a 10 Mbps è preferibile rispetto ad
una linea a 64 kbps)

• 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

• Reliability: l’affidabilità è generalmente riferita al tasso di errore di ogni singolo link

• Hop count: il numero di router che un pacchetto deve attraversare per raggiungere la destinazione

• Ticks: il ritardo un un collegamento dati in multipli di un IBM PC clock tick (approssimativamente


55 ms)

• Cost: un valore arbitrario, generalmente basato sulla banda, sul costo economico di un link, o su
altre misure stabilite dall’amministratore di rete

1.5.3.4 Distance vector


L’algoritmo prevede che ciascun nodo invii ai nodi adiacenti il vettore delle distanze (distance vector),
ovvero le colonne ”Destinazione” e ”Costo” della propria tabella. Ciascun nodo inserirà nella propria
tabella le destinazioni ricevute dai nodi adiacenti e ne valuterà il costo come costo comunicato + costo
con il nodo che lo ha comunicato. Se ad un nodo viene comunicata una destinazione che ha già nella
propria tabella, mantiene solo quella con costo minore, se hanno lo stesso costo normalmente mantiene
la più recente. Questo algoritmo quindi consente a tutti i nodi di conoscere gli altri nodi della rete ed
i relativi costi ma non la topologia della rete, ovvero non è possibile per un nodo tracciare il grafo che
descriva la rete.

Figura 1.6: Distance Vector.

9
Chapter 1: Introduzione

Un limite di questo algoritmo è il tempo necessario affinché l’algoritmo converga, ovvero n ∗ δ ,


dove n è il numero di salti e δ l’intervallo di aggiornamento. In altre parole è il tempo necessario per far
aggiornare tutte le tabelle di tutti i nodi. Un altro limite è il tempo di riallineamento dell’algoritmo in caso
venga tolto o cada un nodo della rete. Per come è fatto l’algoritmo, una destinazione caduta verrebbe tolta
dalla tabella del nodo comunicante ma rimarrebbe negli altri nodi che gliela insegnerebbero nuovamente,
provocando un loop in cui il costo verso la destinazione continua ad aumentare.

Figura 1.7: Loop nel Distance Vector.

Esistono due soluzioni:


1. Split horizon: Si impedisce che un nodo possa inviare l’informazione su una distanza al nodo che
lo ha istruito a riguardo.
2. Split horizon with poisoned reverse: Si lascia che un nodo trasmetta tutto il distance vector ma
ponendo a infinito le distanze che gli sono stati insegnate dal nodo destinatario.

1.5.3.5 Link state


L’algoritmo di link state prevede che ciascun nodo comunichi a tutti gli altri nodi della rete attraverso
un algoritmo flooding (da qui la necessità di numerare i pacchetti, detti LSP) a quali nodi è collegato e
con quale costo. Ciascun nodo può cosı̀ delineare la topologia della rete e utilizzare un apposito algoritmo
(normalmente quello di Dijkstra) per valutare la strada migliore. Il vantaggio rispetto al distance vector
non è tanto la bontà della strada trovata quanto la velocità di computazione e la reattività in caso di caduta
di un nodo.

1.5.4 Virtual Circuit


Alternativa al datagram, è una tecnica sofisticata che avvicina il datagram al circuit switching. È
diviso in tre fasi come il circuit switching, nella prima fase il primo pacchetto viene instradato ed i
successivi pacchetti dalla seconda fase in poi avranno nell’header già l’instradamento. Consente quindi
di non ricalcolare per ogni pacchetto la strada e di condividere il percorso in caso ci siano più pacchetti.
Vantaggi:
1. Il circuito è condiviso;
2. Si può stimare la banda - fare una stima dell’informazione.
Svantaggi:
1. Se un circuito cade, va ricostruito. Ciascun pacchetto può fare il controllo affinché il successivo al
pacchetto si possa ricostruire il circuito;
2. La gestione è molto complessa.

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.

2.1 Modello ibrido


Il modello ibrido si basa sulla struttura a layer del modello ISO/OSI, ma prevede di utilizzare 5 livelli.
I livelli sono numerati dal basso verso l’alto.
L’informazione è strutturata in pacchetti chiamati PDU (Protocol Data Unit), l’header si chiama
PCI (Protocol Control Information) e il payload si chiama SDU (Service Data Unit). La quantità di
pacchetti da trasmettere è data dal tipo di protocollo che stiamo considerando. In particolare PCI è la
Protocol Control Information, ovvero l’informazione che serve a gestire al meglio il payload.

Figura 2.1: Pacchetto PDU per ISO/OSI.

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

Figura 2.2: Modello ibrido.

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:

• Rilevazione di errori. In base al protocollo si sceglie se scartare, correggere, chiedere il rinvio


di pacchetti corrotti.
• Gestione del rate (controllo di flusso). Si gestisce il tasso di pacchetti trasmessi per evitare di
saturare il buffer del ricevente.
• Comunica direttamente con il nodo successivo, ovvero è direttamente connesso e non deve
cercare un nodo remoto.

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

LIVELLO 4 - TCP, UDP

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.

3.1 Porte e Socket


Ciascun flusso di dati è caratterizzato da 5 parametri che lo determinano univocamente:

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;

• Dynamic ports totalmente libere.

Figura 3.1: Esempi di Well Known Ports.

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.

3.2 UDP - User Data Protocol


UDP è un protocollo di livello 4 di tipo inaffidabile, ovvero esegue solo il multiplexing e facoltati-
vamente il controllo errori, ma non controlla l’ordine dei pacchetti o se eventualmente ci sono pacchetti
persi e non richiede quindi la trasmissione. È utile quando si vuole un livello 4 il più veloce possibile e si
rimanda al livello applicativo il controllo dei pacchetti. È un protocollo fondamentale quando l’obiettivo
è il tempo ridotto per la trasmissione. I servizi streaming generalmente usano protocolli UDP.

3.2.1 Segmento UDP

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.

3.3 TCP - Transmission Control Protocol


TCP è un protocollo affidabile, ovvero prevede un meccanismo di riscontro (acknowledgment), e la
richiesta di ritrasmissione in caso di pacchetti persi o corrotti. A differenza di UDP, stabilisce una con-
nessione tra mittente e destinatario in fase di setup, quindi TCP è in grado di eseguire solo comunicazioni
1 a 1, mai broadcast. Per fare un multicast è necessario aprire N connessioni unicast. La comunicazione
è full-duplex, ovvero i flussi dati sono contemporanei tra loro e contemporanei agli acknowledgment.
TCP offre inoltre il controllo di flusso, ovvero evita di saturare il buffer del ricevente, ed il controllo di
congestione, ovvero evita che un nodo destinatario sia saturato per i troppi flussi aperti.

3.3.1 Segmento TCP

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

La dimensione minima di un segmento TCP è di 20 byte. La dimensione è sempre un multiplo di 4


in quanto a prescindere dal numero di OPTIONS, esse saranno righe intere. Esso è cosı̀ strutturato:

1. Source port(16 bit): Porta mittente;

2. Destination port(16 bit): Porta destinatario;

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

7.1. URG: indica se i dati sono urgenti, è poco usato;


7.2. ACK: indica che il flusso è monodirezionale, quindi se ACK=0 la riga acknowledgment
number non ha significato;
7.3. PSH: chiede di passare immediatamente i dati a livello 5 senza tenerli nel buffer.
7.4. RST: per rifiutare una connessione;
7.5. SYN: necessario a creare la connessione;
7.6. FIN: necessario a chiudere la connessione.

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.

9. Checksum(16 bit): Come UDP.

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

11. Options(16 bit): delicate, non molto utilizzate.

18
Chapter 3: Livello 4 - TCP, UDP

3.3.2 Gestione della connessione


3.3.2.1 Creazione della connessione
Per stabilire una connessione, TCP utilizza il meccanismo di Three-way Handshake, composto di tre
passaggi. La connessione si stabilisce solo se tutti i passaggi hanno successo.

Figura 3.4: Creazione di una connessione con il meccanismo di Three-way Handshake

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. Il server può trovarsi in due condizioni: porta aperta o porta chiusa:

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.

3.3.2.2 Chiusura della connessione

Figura 3.5: Rilascio di una connessione TCP.

Esistono diverse procedure per chiudere una connessione, la seguente è la più tipica:

1. Il client invia un pacchetto con FIN=1;

2. Il server invia l’ack di riscontro;

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

3.3.2.3 Diagrammi a stati


TCP client Un client TCP può trovarsi nei seguenti stati:

1. Closed: la connessione non è attiva;

20
Chapter 3: Livello 4 - TCP, UDP

2. Syn Sent: il client ha inviato la richiesta di connessione (SYN=1) al server;

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.

Figura 3.6: Diagramma di stati semplificato del TCP lato client.

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

Figura 3.7: Diagramma di stati semplificato del TCP lato server.

3.3.3 Scambio dati


Per poter gestire la quantità di dati scambiata, si utilizza il meccanismo di sliding window. Questa
finestra, le quali dimensioni sono dichiarate dal receiver al sender in base ai meccanismi di controllo di
flusso e congestione, indica quanti e quali byte devono essere inviati. Ogni volta che dei byte vengono
riscontrati, la finestra si sposta sui byte successivi (il primo è indicato dall’ack. number) facendo quindi
self-clocking.

Figura 3.8: Meccanismo di sliding window.

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

3.3.3.1 Stima RTT


Non si può conoscere a priori il RTT, quindi è necessario ricorrere ad una stima per trovarne la media.
Sia SRTT la stima dell’RTT, risulta che

SRT Tk = a ∗ SRT Tk−1 + (1 − a) ∗ RT Tk

e la deviazione standard istantanea, ovvero lo scostamento quadratico medio dalla media, è:

DEVk = b ∗ DEVk−1 + (1 − b) ∗ |SRT Tk − RT Tk |

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.

3.3.3.2 Stima RTO


Per stimare l’RTO ci si basa sulla stima dell’RTT, ed ogni qualvolta questo viene calcolato (quindi
ogni ricezione di un riscontro) viene ricalcolato. Il RTO è valutato con la seguente espressione:

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.

3.3.4 Controllo di flusso

Figura 3.9: Modello del controllo di flusso del TCP.

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.

3.3.5 Controllo di congestione


Il controllo di congestione nel TCP regola il tasso di trasmissione dei segmenti al fine di utilizzare
pienamente la banda disponibile, evitando un collasso di rete. La congestione può essere un problema
piuttosto grave, infatti non è detto che sia il destinatario a congestionare ma potrebbe essere anche un
nodo intermedio che, in quanto tale, farebbe cadere in caso di congestione tutte le connessioni. Il server
utilizza una variabile di ambiente (cwnd, congestion window) valutata in base ad un certo algoritmo
(non è infatti nota la banda disponibile essendo una informazione disponibile a livello 3) e misurata in
MSS (Maximum Segment Size, vincolo imposto dal livello 2). La finestra di trasmissione è impostata a
W = min(cwnd, awnd).
L’algoritmo tipico per valutare la cwnd è l’AIMD (Additive Increase Multiplicative Decrease).
Questo algoritmo si basa sull’idea che se la connessione va bene si aumenta il rate di trasmissione len-
tamente, mentre se questa va male la si riduce drasticamente dividendo per un certo fattore, infatti può
essere proprio il nodo in questione a provocare la congestione, quindi è necessario rapidamente ridurre
il rate. Nella fase di Addittive Increase si incrementa progressivamente cwnd fino ad arrivare ad un
episodio di congestione. Nella fase di Multiplicative Decrease si riduce drasticamente cwnd per evitare
il collasso della rete. In particolare la congestione della rete può verificarsi quando vengono ricevuti
3ACK duplicati (3DUPACK) o scade un RTO. In altre parole, il TCP provoca la congestione e agisce di
conseguenza.
Precisamente esistono due zone separate dalla soglia SSTRESH (Slow Start Treshold):
1. Slow Start: Incremento esponenziale della cwnd, ovvero poichè viene incrementata di 1 ogni
riscontro, per ogni RTT viene raddoppiata.
1
2. Congestion Avoidance: Incremento lento, viene incrementata di cwnd ogni riscontro, ovvero di 1
ogni RTT.
Creata la congestione, la si potrà rilevare a causa di un 3DUPACK o della scadenza dell’RTO. Si ricorrerà
ad uno tra i seguenti algoritmi per reimpostare le variabili d’ambiente e si seguiranno nuovamente i
meccanismi di incremento in Slow Start e Congestion Avoidance:

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.

– 3DUPACK: meno grave, quindi si imposta sstresh=cwnd/2, e cwnd=sstresh. Si dimezza sol-


tanto la finestra senza ripartire dal low start. Può però accadere che arrivino in un unico RTT
più 3DUPACK insieme, provocando una notevole riduzione della finestra.
– Scadenza RTO: come TCP Tahoe, si imposta sstresh=cwnd/2 e cwnd=1, riprendendo dal low
start.

• TCP New Reno


Come TCP Reno, ma la cwnd è dimezzata solo una volta nell’ambito di una stessa finestra, a
prescindere dal numero di 3DUPACK.

(a) TCP Tahoe (b) TCP Reno (c) TCP new Reno

Figura 3.11: TCP Tahoe, Reno, new Reno.

25
CAPITOLO 4

LIVELLO 3 - IP

Il protocollo IP è un protocollo di livello 3, quindi si occupa di instradare i pacchetti. È un proto-


collo di tipo connectionless e non affidabile, l’unico obiettivo di IP è far giungere il prima possibile al
destinatario, senza fornire nessun meccanismo di ack (best effort).
Il protollo IP prevede che due reti possano comunicare solo se entrambe utilizzano il protocollo IP. Si
definisce host un nodo che appartiene ad una determinata rete IP.
Il livello 3 è anche il massimo livello raggiunto da un pacchetto nei nodi intermedi. Questi nodi si
chiamano router e hanno almeno due interfacce, ciascuna rappresentante un host e quindi dotata di un
proprio IP. Ciascuna interfaccia si affaccia su una rete in modo da poter reinstradare il pacchetto da una
rete all’altra.
Per una comunicazione broadcast, IP prevede che i pacchetti nascano e muoiano in una stessa rete,
quindi un pacchetto broadcast viene inviato solo a tutti gli host che appartengono alla rete dell’host che
ha generato il pacchetto. Questo meccanismo si chiama isolamento dei domini di broadcast e consente
di individuare tutte le macchine collegate ad una rete.

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

Figura 4.2: 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.

Figura 4.3: Uso classico del ToS

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.

4. Total Length(16 bit): Dimensione totale in byte, la dimensione massima di un pacchetto IP è


quindi 65536 byte, header incluso. La dimensione non è ”stretta” in quanto condizionata dal livello
2.

5. Identification(16 bit): Numero progressivo che consente di identificare un datagramma. Partico-


larmente utile in caso di frammentazione, infatti tutti i frammenti hanno lo stesso id.

6. Flag(3 bit): 3 flags.

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.

7. Fragment Offset(13 bit): Se il segmento è un frammento, identifica lo spiazzamento del payload


nel frammento originale, espresso in multipli di 8 byte (dimensione minima del frammento). Se un
frammento viene riframmentato, l’offset non partirà da 0 ma dall’offset attuale.

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.

11. Source address(32 bit): indirizzo IP dell’host sorgente in notazione binaria.

12. Destination address(32 bit): indirizzo IP dell’host destinatario in notazione binaria.

13. Options: campo poco usato perché appesantisce i calcoli. Devono essere righe intere.

14. Data: contiene header di livello 4 + payload.

29
Chapter 4: Livello 3 - IP

4.2 Frammentazione e riassemblaggio


La frammentazione si rende necessaria nei router per comunicazioni tra reti eterogenee. Infatti la
dimensione massima del payload (MTU, Maximum Transmission Unit) è dettata dal livello 2, quindi
IP deve preparare i frammenti affinché rispettino questa dimensione. La frammentazione non è fatta
quindi in fase di trasmissione, in cui i pacchetti vengono già predisposti per poter essere trasmessi al
livello 2, ma solo nei router.
La frammentazione riguarda unicamente il payload. Giunto un pacchetto troppo grande, il payload
viene suddiviso in pezzi più piccoli di dimensioni multiple di 8 byte (tranne l’ultimo pacchetto, con
quello che rimane). Ciascun payload frammentato sarà reincapsulato in un nuovo pacchetto dotato di
proprio header, con l’offset definito in base alla posizione del frammento nel payload originale e l’id del
frammento originale in modo che tutti i frammenti possano essere ricondotti ad un unico frammento.
L’ultimo frammento avrà il flag MF=0, per indicare di essere il frammento finale.
La ricostruzione avviene solo dal destinatario. Ricevuto il primo frammento, vengono salvati tutti i
successivi frammenti con lo stesso ID e ordinati in base all’offset. Se non si ricevono tutti i frammenti
entro un certo tempo, quelli ricevuti vengono scartati e il mittente viene avvisato. Se si ricevono tutti i
frammenti, vengono uniti in base all’offset e al flag MF.

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.

4.3.1 Approccio CIDR - Classless Interdomain Routing


L’approccio CIDR è l’approccio moderno. Si utilizzano N bit per individuare la rete ed i restanti per
l’host. Accanto all’indirizzo ip si specifica il numero N di bit utilizzati. Un indirizzo di tipo classless sarà
quindi nella forma:

x.y.z.w/N

il numero N prende il nome di netmask e risulta 1 6 netmask 6 30.

Esercizio 4.1 - Netmask con approccio classless


1. DATO L’ INDIRIZZO IP 192.168.10.3/21, TROVARE LA SEZIONE DEL NETMASK E QUELLA DI
HOST.

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

|11000000.10101000.00001|010.00000011 di cui la parte tra i |rappresenta la porzione di net-


mask.

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.

Esercizio 4.2 - Indirizzo di rete e di broadcast


1. DATO L’ INDIRIZZO IP 192.168.10.3, TROVARNE L’ INDIRIZZO DI RETE E L’ INDIRIZZO DI
BROADCAST.

Traduzione dell’indirizzo in forma binaria:


11000000.10101000.00001|010.00000011
Quindi l’indirizzo di rete è:
11000000.10101000.00001000.00000000 in forma decimale: 192.168.8.0/21
L’indirizzo di broadcast è:
11000000.10101000.00001111.11111111 in forma decimale: 192.168.15.255/21
2. L’ INDIRIZZO IP 192.168.8.0/20 È UN HOST O UNA RETE ?
I primi due byte appartengono sicuramente alla netmask, l’ultimo byte è 0 quindi potrebbe essere
di una rete. Valutiamo solo il terzo byte: 00001000 di cui i primi 4 bit appartengono alla netmask.
Poichè il quinto bit è 16=0, risulta essere un host appartente alla rete 192.168.0.0/20 con broadcast
192.168.255.255/20.

Esercizio 4.3 - Host nella stessa rete


1. P RESI I SEGUENTI DUE HOST, APPARTENGONO ALLA STESSA RETE ?
192.168.10.3/21 E 192.168.9.155/21
Bisogna valutare l’indirizzo di rete corrispondente a entrambi. I primi due byte sono uguali,
quindi basta convertire in notazione binaria gli ultimi due byte.
Per il primo risultano: 00001|010.00000011

31
Chapter 4: Livello 3 - IP

Per il secondo risultano: 00001|001.10011011


I due host appartengono alla stessa rete.

2. P RESI I SEGUENTI DUE HOST, APPARTENGONO ALLA STESSA RETE ?


172.16.10.129/25 E 172.16.10.128/25
I primi 3 byte sono uguali, valutiamo solo l’ultimo byte.
Per il primo risulta: 10000001
Per il secondo risulta: 10000000
I due host appartengono alla stessa rete, inoltre il secondo host identifica la rete stessa!

4.3.2 Approccio classful

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.

• Classe E: Riservata per usi futuri.

32
Chapter 4: Livello 3 - IP

Figura 4.4: Rappresentazione delle classi nell’approccio classico.

Esercizio 4.4 - Da classless a classful


1. S I SUPPONGA DI AVERE L’ INDIRIZZO IP 192.168.8.0/21, ESPRIMERLO COME IP CLASSFUL .

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.

Essendo 25 > 16, non è possibile effettuare la scomposizione richiesta.

33
Chapter 4: Livello 3 - IP

4.3.3 Indirizzi IP Pubblici e Privati


Esistono due tipi di indirizzi IP: gli indirizzi pubblici e gli indirizzi privati.
Gli indirizzi pubblici sono assegnati dallo IANA e servono ad accedere a Internet. Non esistono due
indirizzi IP pubblici uguali.
Gli indirizzi privati servono per comunicare internamente in una LAN. Per poter accedere a internet è
però necessario che gli indirizzi privati vengano tradotti in pubblici, funzione ricoperta dal NAT. Esistono
3 classi di indirizzi riconosciuti dallo IANA come privati, e sono:

• 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

4.3.4 Indirizzi IP speciali


Esistono alcuni indirizzi IP riservati per utilizzi speciali:

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

• 255.255.255.255 è un generico indirizzo IP di broadcast utilizzato come destinatario del pacchetto


di richiesta IP, serve a consentire al DHCP di assegnare all’host richiedente 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.

4.4.1 VLSM - Variable Length Subnet Mask


Il meccanismo classico di subnetting prevede di creare subnet a maschera fissa e questo risulta sven-
taggioso qualora esistano più subnet con quantità di host molto diversa, che quindi portano per le reti più
piccole un grande spreco di IP.
Con il VLSM si può definire all’interno di una stessa rete netmask di diversa lunghezza, al costo di
una maggiore complessità delle tabelle di instradamento.

Esercizio 4.5 - Subnet


1. A SSEGNATO AD UNA RETE L’IP 172.20.0.0/16, SI SUPPONGA DI VOLERE 5 SOTTO - RETI .
T ROVARNE GLI INDIRIZZI IP.
Si vogliono 5 sottoreti, sono quindi necessari almeno 3 bit, infatti 23 = 8. Poichè la maschera di
rete è da 16 bit, si deve lavorare sugli ultimi 2 byte. Del penultimo byte, i primi 3 bit sono dedicati
alle subnet, che possono essere quindi 8 (000, 001, 010, 011, 100, 101, 110, 111). Supponendo di
prendere i bit 001, 010, 011, le sottoreti avranno al seguente struttura:

1. 10101100.00010100.001|0000.00000 ovvero N: 172.20.32.0/19 B:172.20.63.255/19


2. 10101100.00010100.010|0000.00000 ovvero N: 172.20.64.0/19 B:172.20.95.255/19
3. 10101100.00010100.011|0000.00000 ovvero N: 172.20.96.0/19 B:172.20.127.255/19
4. 10101100.00010100.100|0000.00000 ovvero N: 172.20.128.0/19 B:172.20.159.255/19

2. A SSEGNATO AD UNA RETE L’IP 192.168.18.0/24, SI SUPPONGA DI VOLERE 3 SOTTO - RETI .


T ROVARNE GLI INDIRIZZI IP.
Sono necessari almeno 2 bit. Rimangono quindi 32-26=6 bit per indirizzare gli host, quindi 64
indirizzi per sotto-rete. Le reti sono:
1. x.y.z.01|000000 ovvero N:192.168.18.64/26 B: 192.168.18.127/26

35
Chapter 4: Livello 3 - IP

2. x.y.z.10|000000 ovvero N:192.168.18.128/26 B: 192.168.18.191/26


3. x.y.z.11|000000 ovvero N:192.168.18.192/26 B: 192.168.18.255/26

Esercizio 4.6 - Piano di indirizzamento


1. A SSEGNARE GLI IP ALLE RETI IN FIGURA 4.5. S I SUPPONGA LO SWITCH NON ABBIA UN
PROPRIO IP.

Figura 4.5: Esercizio 6.

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 NAT e NAPT


Normalmente all’interno di una organizzazione si ha un numero n di indirizzi IP pubblici ed un nu-
mero k di indirizzi IP pubblici organizzati secondo qualche criterio interno con nk. È quindi necessario
mappare gli indirizzi IP privati con quelli pubblici per consentire al generico host di accedere a internet.
Per questo scopo si utilizzano due software che facciano da interfaccia tra l’intranet e l’internet: il NAT
e la sua evoluzione NATP.

4.5.1 NAT - Network Address Translation


NAT è una funzione offerta normalmente dal ROUTER che consente di mappare gli indirizzi pubblici
disponibili con gli indirizzi privati. È necessario che sia installato solo sul router di frontiera e non su ogni
singolo router che funzioni da collegamento tra le subnet. Si basa sulla semplice gestione di una tabella
che mantenga le corrispondenza tra IP pubblici e IP privati e che sostituisca in ogni pacchetto in uscita
all’IP privato mittente quello pubblico e ad ogni pacchetto in ingresso l’IP pubblico con il corrispondente
privato. Questo meccanismo è limitato perché consente l’accesso contemporaneo a internet solo ad un
numero di host pari al numero di indirizzi IP disponibili.

4.5.2 NAPT - Network Address Port Translation


NATP è una versione modificata di NAT più efficiente ma ristretta ai soli protocolli TCP e UDP (in
questo senso, viola la struttura a strati di ISO/OSI). Piuttosto che mappare solo gli indirizzi mappa sia
l’indirizzo IP privato del mittente sia la porta mittente, sostituendo al pacchetto in uscita l’IP pubblico
ed una porta casuale ma che identifichi univocamente l’host mittente. Quando giunge un pacchetto in
ingresso, la porta scelta dal NATP viene sostituita con l’effettiva porta del mittente e con il suo indirizzo
IP privato. In questo modo si può consentire a più host l’accesso simultaneo a internet.

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

4.6 DNS - Domain Name System


Il DNS è un meccanismo di identificazione alfabetico degli indirizzi IP che serve a tradurre la rap-
presentazione alfabetica dei link con i rispettivi indirizzi IP (numerici) di difficile memorizzazione. La
struttura degli indirizzi definiti dal DNS è strettamente gerarchica e si articola a livelli (root, primo, se-
condo, terzo, quarto), gli indirizzi vengono composti unendo gli identificatori dei vari livelli dall’ultimo
al primo. Il trasferimento dei messaggi inviati e ricevuti dai name server si basa su UDP.
Quando si cerca un link nel browser, questo prima invia un pacchetto UDP al DNS che gli risponde
con l’IP corrispondente al link e poi usa questo IP per connettersi.

4.7 DHCP - Dynamic Host Configuration Protocol


In molte situazione si rende necessario riassegnare dinamicamente gli indirizzi di rete. Viene utilizza-
to un server, normalmente installato nel router, chiamato DHCP che attraverso il protocollo di trasporto
UDP assegna gli IP alle stazioni che ne fanno richiesta. L’assegnazione può essere manuale (riserva spe-
cifici indirizzi a specifiche macchine), automatica (riserva permanentemente indirizzi scelti dal server),
oppure dinamica (gli indirizzi sono assegnati alle stazioni solo per un determinato intervallo di tempo).
Il server DHCP non deve trovarsi necessariamente nella stessa rete dell’host che richiede un IP. In
caso di subnetting, i messaggi DHCP possono attraversare più router a patto che questi implementino il
DHCP relay che consentano di inoltrare il pacchetto al router su cui risiede il DHCP.
Se il DHCP cade o non si vuole attivare in quanto non si vuole accedere a internet si può usare la Zero
Configuration Networking. Quando una macchina richiede un indirizzo al DHCP server, se non riceve
risposta pensa che non stia funzionando e attiva il meccanismo per comunicare con le altre macchine
assegnandosi un indirizzo pubblico ma riservato compreso tra 169.254.1.1 e 169.254.254.254 estratto
casualmente. Come seme si sceglie il proprio MAC ADDRESS in quanto unico. Si usa poi l’ARP per
chiedere in broadcast chi abbia l’indirizzo IP selezionato, se nessuno risponde significa che l’indirizzo
scelto è unico nella rete quindi è utilizzabile, altrimenti bisogna estrarne un altro.

4.8 Struttura di un router commerciale

Figura 4.7: Struttura di un router.

38
Chapter 4: Livello 3 - IP

4.9 ARP - Address Resolution Protocol


Ogni dispositivo è identificato univocamente da un indirizzo MAC a livello 2.
L’ARP consente di associare l’indirizzo IP di un dispositivo al suo indirizzo MAC. Il primo MAC
richiesto sarà quello del router, che consentirà di interfacciarsi ad internet.
Si supponga di voler inviare un pacchetto ad un host con un dato IP. Si deve verificare se l’host è nella
stessa rete, per farlo si usa l’AND logico tra il proprio IP e l’IP destinatario:

• 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:

1. Si utilizza come destinatario il MAC del router.


2. Ciascun pacchetto ricevuto dal router viene modificato sostituendo il mittente con il proprio
MAC e il destinatario il MAC del nodo successivo.

4.10 ICMP - Internet Control Message Protocol


Il protocollo ICMP serve a gestire messaggi di controllo nella rete IP per segnalare eventi. Viaggia
su rete IP quindi è incapsulato in pacchetti IP (l’essere incapsulato da IP non implica che ICMP sia
un protocollo di livello 4, ma solo che è un protocollo di ausilio per rete IP). Per indicare che IP sta
incapsulando un pacchetto di tipo ICMP il campo Type viene impostato a 1.
I campi interessanti del pacchetto ICMP sono Type e Code. In base alla combinazione si ottengono
vari tipi di messaggi corrispondenti a più eventi, di particolare interesse sono le seguenti tre denotate da
coppie (Type, Code):

• (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.

Troubleshooting di una rete


Supponendo ci sia in una certa rete un problema di connessione ad internet, si può utilizzare ping
per poter risalire alla causa del problema.
Si può provare ad effettuare un ping all’indirizzo di loopback. Se non funziona, il problema è interno al
dispositivo.
Se funziona, si prova a inviare ping gerarchicamente fino a risalire al router non funzionante. Si parte
dal router locale, si procede al router di frontiera, poi ad un indirizzo esterno. L’indirizzo esterno va
formulato prima simbolico, poi numerico. Se numerico funziona ma simbolico no, allora è un problema
di DNS. Se non funzionano entrambi, è un problema del provider.

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.

4.11 Protocolli di instradamento


4.11.1 AS - Autonomous System
Internet è suddivisa in un insieme di sistemi autonomi (Autonomous System), ognuno dei quali com-
prende un certo numero di sottoreti connesse tra loro per mezzo di router di tipo omogeneo e gestiti da
una stessa entità amministrativa.
In quest’ottica si dividono gli algoritmi di intra ed inter AS come segue:

• RIP: Routing Information Protocol

• OSPF: Open Short Path First

• BGP: Border Gateway Protocol

4.11.1.1 RIP - Routing Information Protocol


Il protocollo RIP si basa sull’algoritmo distance vector. Come metrica di costo viene utilizzato l’hop
count (numero di router da attraversare per raggiungere la destinazione), considerando come limite 15,

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.

4.11.1.2 OSPF - Open Shortest Path First


Il protocollo OSPF prevede di utilizzare l’algoritmo di instradamento link state. I pacchetti utilizzati
sono l’LSU per inviare le informazioni sui router adiacenti, l’LSA come acknowledgment, i Link State
Request per poter richiedere ad un nodo informazioni. L’IP multicast riservato per l’invio dei pacchetti è
224.0.0.5.

Figura 4.8: Organizzazione in sotto-reti per il protocollo OSPF

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.

4.11.2 BGP - Border Gateway Protocol


Il protocollo BGP permette a router appartenenti a sistemi autonomi diversi di scambiarsi le infor-
mazioni necessarie a determinare l’instradamento dei pacchetti attraverso la rete Internet per raggiungere
una determinata rete di destinazione.
Solo alcuni dei router di un sistema autonomo sono configurati per gestire il protocollo BGP. Due
router che sono connessi alla stessa rete possono scambiarsi informazioni i instradamento, che consistono

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

Il livello 2 è lo strato di collegamento. Un datagramma di livello 2 è detto frame (trama). Il livello 2 è


il primo livello in cui i nodi sono fisicamente e direttamente connessi, ovvero non ci sono nodi intermedi.
Le principali funzioni svolte dal livello 2 sono:

1. Gestione del collegamento dati, ovvero consentire lo scambio di frame;

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;

5. Controllo di flusso, ovvero si evita la saturazione.

5.1 Rilevazione e correzione di errori


Vengono aggiunti in coda al frame dei bit per la rilevazione di errore. Qualunque metodo non può
assicurare l’assenza di errori. Esistono due metodi:

• 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

5.1.1 Stop & Wait


L’algoritmo Stop & Wait è un algoritmo della classe ARQ. Prevede di trasmettere un pacchetto
e aspettare di ricevere un ACK (un pacchetto apposito molto piccolo) prima di inviare il pacchetto
successivo.

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.

Inviato un pacchetto, possono presentarsi due situazioni:

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

5.1.3 Selective Repeat


L’algoritmo Selective Repeat è una estensione del Go-Back-N in cui la finestra di ricezione non è
unitaria.
Essendo la finestra di ricezione non unitaria, si accettano i frame anche non in sequenza, quindi è
necessario dotare il ricevitore di un buffer. Anche in questo caso il ricevitore utilizza un meccanismo
di ack cumulativi, infatti un ack sull’i-esimo pacchetto implica che tutti i pacchetti prima dell’i-esimo,
questo incluso, sono stati ricevuti. Il riscontro negativo non è invece cumulativo, infatti non essendo i
pacchetti ricevuti in sequenza un n-ack può solo indicare la mancata ricezione di un singolo pacchetto.
Anche in questo algoritmo ci sono vincoli sull’apertura delle finestre. Deve infatti risultare Ws +Wt ≤N
e la soluzione migliore prevede che Ws =Wt =N/2.

5.1.4 Efficienza degli algoritmi di rilevazione di errore


L’efficienza di un algoritmo di rilevazione si definisce come
Tf
η=
Ttot

45
Chapter 5: Livello 2 ISO/OSI

con T f il tempo utile usato, Tt ot il tempo totale.


L’efficienza verrà calcolata sotto l’ipotesi che l’ack e l’elaborazione siano istantanei in quanto Tack 
T f e Telab  τ, e considerando i frame di dimensione fissa. Il calcolo verrà fatto prima supponendo che
per ogni pacchetto l’ack arrivi all’interno della finestra a cui appartiene, poi che possa arrivare all’esterno.
Matematicamente, affinché sia verificata la prima ipotesi deve risultare Ws ∗ T f ≥ T f + 2τ ⇒ Ws ≥ 1 +
2 Tτf = 1 + 2a con a = Tτf ritardo di propagazione normalizzato.
Inoltre si definisce Frame Error Rate (P), dato L f il numero di bit per frame, La il numero degli ack
e p la bit error rate,
P = 1 − (1 − p)(L f + La )

5.1.4.1 Selective Repeat


Il tempo utile di utilizzo canale è quello per inviare il singolo pacchetto, ovvero Tf , il tempo totale di
utilizzo è invece Ns *Tf , dove Ns è il numero medio di trasmissioni del singolo pacchetto.

• Caso in cui gli ack arrivino nella finestra


Poichè prima di ricevere un Nack si stanno trasferendo frame, il tempo perso è dato solo dal dover
ritrasmettere un frame già trasmesso. Si può quindi definire l’efficienza come

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

in cui si è usata la derivata di una serie geometrica. Dunque l’efficienza sarà

η = 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

• Caso in cui gli ack arrivino fuori dalla finestra


In caso l’ack possa arrivare fuori dalla finestra, il canale potrebbe non essere impiegato per un
certo tempo, infatti finché non arriva l’ack la finestra non può essere spostata. Il canale viene
Ws T f Ws
usato per una frazione di tempo pari a T f +2τ = 1+2a , infatti Ws T f è il tempo in cui si trasmettono
tutti i pacchetti nella finestra, mentre T f + 2τ è il massimo intervallo che può impiegare un ack ad
arrivare. Usando questo fattore per correggere l’efficienza, si ottiene
(1 − p)Ws
η=
1 + 2a

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)

5.1.4.3 Stop & Wait

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.

5.1.5 Confronto tra gli algoritmi

ηs&w ηGBN ηSR


1− p 1− p
Ws ≥ 1 + 2a 1− p
1 + 2a 1 + p(2a + 1)
1− p (1 − p)Ws (1 − p)Ws
Ws < 1 + 2a
1 + 2a [1 + (Ws − 1)p](1 + 2a) 1 + 2a

Tabella 5.3: Confronto tra gli algoritmi.

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 Accesso multiplo


Il livello 2 si occupa di gestire la condivisione del mezzo, nel caso questo sia condiviso. La condi-
visione può provocare problemi in quanto una collisione tra due frame potrebbe portare una interferenza
distruttiva e la perdita di pacchetti.
Per un dato algoritmo di controllo d’accesso multiplo si definisce Intervallo di vulnerabilità l’in-
tervallo in cui, trasmettendo, si verificherà una collisione.

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

2. Attesa ack (2τ)

3. 3.1. Se si riscontra il frame, la trasmissione è completata


3.2. Se non si riscontra il frame
3.2.1. Si calcola un ritardo casuale (in modo che le sorgenti non continuino a ritrasmettere
contemporaneamente ogni intervallo fisso) entro cui ritrasmettere
3.2.2. Si invia torna al punto 1

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.

5.2.2 Slotted ALOHA


il protocollo Slotted ALOHA prevede di suddividere in time slot di durata Tf la trasmissione e di
consentire alle stazioni di trasmettere solo al timeslot successivo a quello in cui si vuole trasferire.
Precisamente:

1. Attesa inizio slot

2. Trasmissione unità dati

3. Attesa ack

4. Pacchetto riscontrato?

(a) Sı̀: trasmissione completa


(b) No: attesa di un ritardo casuale e ritrasmissione

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.

I telefoni utilizzano il protocollo slotted ALOHA e si sincronizzano attraverso la rete. Questo è il


motivo per cui quando ci sono molti telefoni che fanno richieste (G → inf) la rete collassa e nessuna
richiesta viene servita (S → 0), ovvero il canale rimane libero in quanto ci sono solo collisioni.

5.2.3 CSMA - Carrier Sense Multiple Access


Il protocollo CSMA prevede di ascoltare il canale prima di procedere ad una trasmissione e trasmet-
tere solo se il canale risulta libero, questo si rende necessario in quanto si suppone un accesso multiplo
ad un canale intrinsecamente condiviso. Questa possibilità di ascoltare può portare l’efficienza anche al
doppio rispetto ad ALOHA. Il principale campo di applicazione di questo protocollo è per reti piccole,
infatti per reti grandi il tempo di propagazione potrebbe essere lungo e un messaggio potrebbe non essere
rilevato in quanto ancora lontano.

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.

5.2.4 CSMA/CD - Carrier Sense Multiple Access Collision Detection


Il CSMA/CD si basa sempre sull’ascolto del canale ma introduce un meccanismo di controllo di
collisione. Esso prevede che il nodo che trasmette ascolti il canale durante la trasmissione stessa, se ciò
che viene letto è ciò che sta venendo trasmesso allora la trasmissione sta andando a buon fine, altrimenti
si sta verificando una collisione quindi la trasmissione viene sospesa. Questo protocollo può essere
applicato solo per mezzi cablati o per cavi coassiali.
Il CSMA/CD ha un forte limite, ovvero supponendo che in un mezzo condiviso tra più nodi comuni-
chino le due reti più lontane (supponiamo A e B), ovvero A invii ad un certo istante un frame e B prima di
ricevere il primo bit da A inizi a trasmettere. B rileverà immediatamente la collisione, A lo potrà rilevare
solo dopo 2τ secondi (vedere figura 5.4). Questo significa che se A ha già smesso di trasmettere non
sarà più in ascolto e non potrà rilevare la collisione. Questo protocollo impone quindi un limite inferiore
sulla durata della trasmissione e dunque sulla lunghezza minima del frame. Ovvero, sia T f il tempo per
trasmettere un frame, c[ bits ] la frequenza di cifra, τ il tempo di propagazione, d la distanza dei nodi, v la
velocità di propagazione nel mezzo, deve risultare:
L 2d 2dc
T f ≥ 2τ ⇒ ≥ ⇒L≥
c v v
A livello 2 quindi tutti i protocolli che usano CSMA/CD hanno un frame di dimensione minima.

Figura 5.4: Valutazione della durata di un frame per CSMA/CD.

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

5.2.5 CSMA/CA - Carrier Sense Multiple Access Collision Avoidance


Anche questo protocollo si basa sull’ascolto del canale prima di procedere alla trasmissione. Per
quanto il nome sia ”Congestion Avoidance”, esso non è in grado di impedire che ci siano collisioni ma
solo di ridurle il più possibile.
Il protocollo prevede che un nodo che voglia trasmettere debba prima comunicare agli altri nodi per
quanto tempo impiegherà il canale. Questa esigenza sorge dalla variabilità della frequenza di cifra per
alcuni protocolli (ad esempio nel Wireless in cui riducendo la frequenza di cifra si può ridurre l’inter-
ferenza intersimbolica e trasmettere a distanze maggiori) e dalla diversità dei protocolli di gestione di
errore utilizzati. Le altre stazioni leggono il tempo comunicato dalla stazione trasmittente e settano un
timer NAV (Network Allocation Vector). Fin quando non scade, la stazione fa virtual sensing ovvero non
ascolta il canale e non chiede la trasmissione in quanto non avrebbe senso.
Per lo Stop & Wait, ad esempio, si trasmette il pacchetto e si dice che per una certa quantità di tempo
il canale è occupato considerando anche il tempo di riscontro.

Figura 5.5: Flow-chart per l’algoritmo CSMA/CA

5.3 HDLC - High level Data Link Control


HDLC è un protocollo tipico di livello 2 nato appositamente per ISO/OSI. È ancora utilizzato soprat-
tutto nelle reti WAN ma risulta non adatto a reti LAN.

53
Chapter 5: Livello 2 ISO/OSI

Nel protocollo esistono tre tipi di stazioni:

1. Stazione primaria, responsabile del controllo;

2. Stazione secondaria, opera sotto il controllo di una stazione primaria;

3. Stazione combinata, combina le funzioni di stazione primaria e secondaria.

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;

2. Configurazione bilanciata, in cui sono presenti due stazioni combinate.

Esistono tre modalità di trasferimento dei frame:

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.

5.3.1 Struttura del frame

Figura 5.6: Struttura del frame nel protocollo HDLC.

Il flag è composto dai seguenti campi:

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.

Figura 5.7: Tecnica di bit stuffing nel protocollo HDLC.

2. Address (8 bit o multipli): specifica:

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

Gli indirizzi sopra elencati NON sono MAC address.

3. Control (8 o 16 bit): specifica il tipo di trama in trasmissione e gestisce i meccanismi di numera-


zione e di riscontro. Può assumere tre differenti configurazioni:

• 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

Figura 5.8: Struttura del campo di controllo nel frame HDLC.

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

5.3.2 CRC - Cycle Redundancy Check


Il protocollo HDLC utilizza l’algoritmo CRC per il controllo di errore. Il controllo viene eseguito su
tutti i bit tranne che sui flag.
Considerata una trama generica che comprende k bit (16 o 32) nel campo FCS e n bit in totale nel
frame esclusi i flag e l’FCS stesso, si definisce il polinomio P(X) di grado n-1 (n coefficienti). I k bit del
campo FCS vengono ricavati attraverso un’operazione di divisione tra polinomi in aritmetica modulo 2 in
cui il dividendo è dato da P(X) moltiplicato per Xk e il polinomio divisore è D(X) di grado k ed assegnato
dal protocollo. In aritmetica modulo 2 la somma tra polinomi è definita come un XOR. Risulterà:
P(X) · X k R(X)
= Q(X) ⊕
D(X) D(X)
con Q(X) il quoziente e R(X) il resto, di grado massimo k-1 quindi di k coefficienti. R(X) viene salvato
nel campo FCS. La trama costituita sarà di n+k bit, considerabili i coefficienti del polinomio
P0 (X) = P(X) · X k ⊕ R(X)
In ricezione, si dividerà P’(X) per D(X), ovvero
P0 (X) P(X) · X k R(X) R(X)
= ⊕ = Q(X) ⊕ 2 · = Q(X)
D(X) D(X) D(X) D(X)
in cui si è tenuto conto che un numero binario moltiplicato per 2 è sempre 0. Se quindi il resto della
divisione risulta nullo, la trama verrà assunta come corretta.
Questo tipo di algoritmo può rilevare con un opportuno polinomio generatore i seguenti errori:
• su un singolo bit;
• su due bit se D(X) ha almeno 3 coefficienti non nulli;
• su un numero dispari di bit se D(X) è divisibile per X+1;
• a burst con una lunghezza del burst inferiore a quella di D(X).

56
Chapter 5: Livello 2 ISO/OSI

5.4 PPP - Point to Point Protocol


Il protocollo PPP è utilizzato per connessioni punto-punto. È progettato per essere un livello semplice
che faccia da intermediario tra livello 3 e livello 1, ovvero che possa trasformare i pacchetti livello 3 in
bit.
PPP offre una funzione di autenticazione ed una funzione di richiesta parametri della rete.

5.4.1 Struttura del frame

Figura 5.9: Struttura del frame nel protocollo PPP.

Un frame PPP è costituito dai seguenti campi:

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.

Figura 5.10: Esempio di byte stuffing.

2. Address (1B): la connessione è punto-punto quindi non è necessario localizzare un particolare


destinatario. Si usa sempre l’indirizzo di broadcast 11111111.

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.

4. Protocol (1B o 2B): specifica il protocollo di livello 3 incapsulato nel payload.

5. Information: payload. Il valore massimo è negoziato in fase di setup della connessione.

6. FCS - Frame Check Sequence (2 o 4 B): utilizza CRC (vedere 5.3.2).

57
Chapter 5: Livello 2 ISO/OSI

5.4.2 LCP - Link Connection Protocol


PPP può incapsulare messaggi LCP. Questo protocollo è necessario per stabilire la connessione e
negoziare i parametri della connessione. Inoltre fornisce un meccanismo di autenticazione attraverso una
delle seguenti due procedure:

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

5.4.3 NAP - Network Control Protocol


PPP può incapsulare messaggi NAP. Fornisce i parametri della rete per configurare il livello 3 (Mask,
Gateway, ecc...).

58
CAPITOLO 6

LIVELLO 2 IEEE 802

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.

Figura 6.1: Livello 2 IEEE 802.

6.1 LLC - Logical Link Control

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

6.1.1 Frame LLC

Figura 6.2: Struttura di un frame per il livello LLC.

Il frame LLC è cosı̀ strutturato:

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

Figura 6.3: Struttura di uno SNAP frame per il livello LLC.

• Control (1B o 2B): strutturato come nel protocollo HDLC.

• Information: contiene i dati di utente del protocollo di livello superiore.

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.

6.2 MAC - Medium Access Protocol


Lo strato MAC provvede alla consegna delle unità informative al livello superiore.

6.2.1 Frame MAC

Figura 6.4: Struttura di un frame per il livello MAC.

Il frame MAC è composto dai seguenti campi:

60
Chapter 6: Livello 2 IEEE 802

1. Destination Address (6B): MAC address del destinatario.

2. Sourge Address (6B): MAC address del mittente.

3. Information (6B): contiene i dati di utente del protocollo di livello superiore e quindi la PDU di
livello LLC.

4. FCS - Frame Check Sequence (4B): serve a verificare l’integrità

6.2.2 MAC Address


L’indirizzo MAC è costituito da 6 byte e serve a identificare univocamente (a livello mondiale) un
dispositivo. La differenza con l’IP è che il MAC non da informazioni su dove sia il particolare nodo,
ma sulla sua identità (come il codice fiscale per una persona). Un MAC address è composto da 3 byte
che identificano l’organizzazione produttrice del dispositivo e 3 byte che identificano il dispositivo stesso
all’interno dell’organizzazione.
Per quanto non sia normalmente possibile cambiare il MAC associato ad un certo dispositivo (essendo
salvato in una ROM), è possibile comunque ”corrompere” i PDU inserendo un MAC diverso in modo da
simulare una identità differente.
Il MAC address riservato al broadcast è FF:FF:FF:FF:FF:FF.

6.2.3 Gestione accesso multiplo

Figura 6.5: CSMA/CD nel livello MAC.

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.

6.3 Ethernet (802.3)


La rete Ethernet è un protocollo sviluppato originariamente da Digital, Intel e Xerox (Ethernet v2.0)
per poi essere standardizzato dal consorzio IEEE come Ethernet 802.3.

6.3.1 Ethernet a 10Mbit/s


Ethernet v2.0 utilizza una topologia a bus di tipo passivo e bidirezionale, per cui il segnale emesso
da una stazione si propaga lungo il mezzo trasmissivo verso le due estremità del bus dove sono poste le
terminazioni di chiusura. Le successive evoluzioni di Ethernet utilizzano una topologia ”logica” a bus,
ovvero tutti i segnali emessi vengono ricevuti da tutte le stazioni come in un bus ma con implementazioni
fisiche differenti.
Nella rete Ethernet la sincronizzazione tra stazioni non è ottenuta mediante sincronizzazione globale
tra stazioni ma ogni stazione è dotata di un proprio cronosegnale interno che la stazione usa per trasmet-
tere, mentre per ricevere estrae la temporizzazione dal segnale che entra. La tecnica di codifica adottata
è quella Manchester.
Le diverse topologie di rete sono denominate con l’acronimo XBaseY, dove X sta ad indicare la
frequenza di cifra in Mbit/s, Base sta ad indicare che si opera con trasmissione in banda base, mentre
Y specifica la lunghezza massima di un segmento di rete o il tipo di mezzo trasmissivo. Le più diffuse
soluzioni sono:

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

6.3.2 Fast Ethernet


Il principio su cui è stata concepita un’evoluzione per lo standard IEEE 802.3 prevede il mantenimento
di alcuni elementi della vecchia struttura per mantenere la retro-compatibilità.

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.

6.3.3 Gigabit Ethernet


La Gigabit Ethernet è l’evoluzione della Fast Ethernet ed è impiegata per realizzare dorsali veloci che
collegano switch.
Con la dimensione di trama del predecessore, la distanza minima sarebbe di 25 metri e risulterebbe
troppo bassa. Per ovviare a questo problema si utilizzano due tecniche:

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

6.3.4 Struttura del frame

Figura 6.6: Struttura del frame 802.3.

Il frame 802.3 è formato dai seguenti campi:

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

3. DA - Destination Address (6 byte): indirizzo MAC del destinatario.

4. SA - Source Address (6 byte): indirizzo MAC del sorgente.

63
Chapter 6: Livello 2 IEEE 802

5. Length/Type (2 byte): può avere uno tra i due seguenti significati:


Se ha valore ≥ di 0x600 allora contiene un campo type che specifica il livello incapsulato, quindi
si sta utilizzando Ethernet V2.
Se ha valore < di 0x600 si utilizza Ethernet 802.3 quindi il protocollo incapsulato è necessaria-
mente LLC, quindi si sfrutta questo campo per indicare la lunghezza del payload.

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 .

8. Frame Check Sequence (4 byte): contiene il codice di controllo della trama.

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.3.5 Accesso multiplo


Per la gestione dell’accesso multiplo viene utilizzato il protocollo CSMA/CD con segnale di jam di
32bit, algoritmo di Exponential backoff (vedere 6.2.3), nel caso di errore nel controllo del FCS, il frame
può essere scartato o la gestione dell’errore è effettuata dal livello superiore (es. LLC).

6.4 Hub, switch, bridge


6.4.1 Hub
Un hub ha in ingresso tutti i doppini collegati alle varie stazioni e, ricevuto un segnale, lo ripete su tutte
le altre porte. Con l’introduzione dell’hub la topologia diventa a stella, dunque le collisioni si verificano
solo nel centro-stella, l’hub può anche rilevare collisioni se più porte sono attive in contemporanea e
generare un segnale di jam. La struttura stellare consente anche di realizzare reti a più livelli. L’hub
crea una collisione e tutte le stazioni formano un unico dominio di collisione, che si definisce essere un
insieme di stazioni che trasmettono pacchetti che potrebbero collidere.

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

1. MAC address: MAC address del dispositivo associato alla porta;

2. Port: Porta al quale è associato il MAC address;

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;

4. State: vedere lo spanning tree (6.4.4);

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.

Figura 6.7: Tabella di routing del bridge.

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.

Figura 6.8: Diagramma di flusso del processo di bridging.

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

6.4.4 Spanning Tree (802.1d)


Spesso si collegato ad anello alcuni bridge per poter creare ridondanza nei collegamenti e rendere più
affidabile la rete in caso un percorso cada. Creare degli anelli significa però dover complicare la gestione
dei frame per evitare che cadano il loop, quindi si utilizza un algoritmo apposito in ciascun hub per poter
garantire la corretta gestione degli anelli: lo spanning tree.
Lo spanning tree è attivato da tutti i bridge e consiste nella trasmissione di pacchetti incapsulato in
MAC per poter eleggere un bridge root e attivare/disattivare le porte di tutti gli altri bridge fino a formare
un albero, quindi senza anelli.
Il principale vantaggio di una struttura di questo tipo è che pur essendo disattivate, le porte sono
fisicamente collegate quindi possono essere riattivate in caso ci sia un fault.
Il principale rischio è che a livello software si commettano degli errori che portino un bridge di
periferia (normalmente poco prestante rispetto al bridge di frontiera) a diventare il root, quindi a creare
un collo di bottiglia che potrebbe bloccare l’intera rete.
Lo stato delle porte può essere Blocking, Forwarding, Listening, Learning.

6.5 Wireless (802.11)


In ambito IEEE le tecnologie Wireless LAN sono comunemente conosciute come Wi-Fi (Wireless
Fidelity). Queste tecnologie consentono la connessione in rete in mobilità e attraverso il canale radio
sulle frequenze riservate di 2.4 GHz e 5 GHz. L’una presenta lo svantaggio di essere la frequenza di
risonanza dell’acqua, quindi la maggior parte degli oggetti tra cui il corpo umano creano interferenza,
l’altra ha un raggio molto limitato. Essendo i segnali trasmessi non in banda base, è necessario che il
livello 1 si occupi della modulazione.

6.5.1 Struttura di rete


In una rete Wi-Fi si definisce BSS (Basic Service Set) un insieme di stazioni che possono comunicare
internamente tra di loro. Si possono distinguere due configurazioni:
1. WLAN con infrastuttura: i BSS sono collegati ad un AP (Access Point) assimilabile ad un
bridge che interfaccia la rete con l’esterno attraverso un Distribution System (non è specificato
nello standard quale questo debba essere, ma normalmente è una rete LAN cablata). Tutte le
stazioni per comunicare con l’esterno passano attraverso l’access point che si occupa di smistare i
flussi.
2. Ad hoc: un singolo BSS indipendente non dotato di un access point, serve a realizzare solo una
comunicazione interna. E’ una configurazione ottima per scambio file, ma non è possibile l’accesso
ad internet.

6.5.2 Gestione dell’accesso multiplo


Il canale radio è un canale intrinsecamente condiviso, quindi è necessario gestire l’accesso multiplo.
Per farlo, utilizza il CSMA/CA (vedere 5.2.5) con exponential backoff. In ogni frame trasmesso è spe-
cificato il tempo durante il quale il canale rimarrà occupato per completare la trasmissione. Ogni nodo

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

6.5.2.1 Hidden Terminal Problem


Il Wi-Fi presenta però delle difficoltà nell’applicazione del CSMA/CA, infatti potrebbero verificarsi
situazioni in cui due nodi siano tra loro troppo distanti per poter ascoltare i pacchetti inviati dall’altro e
comunichino con un nodo centrale vicino al quale avvengano le collisioni (la situazione è rappresentata
in figura 6.9). Per risolvere questa situazione (Hidden Terminal problem) si ricorre all’utilizzo di due
frame di servizio, RTS (Request To send) e CTS (Clear To Send), entrambi molto brevi quindi con
bassa probabilità di collisione. Con il pacchetto RTS i nodi lontani possono chiedere al nodo destinatario
il permesso di trasmettere. Il nodo destinatario lo concederà solo ad un nodo scrivendone il nome in
un pacchetto CTS che verrà inviato a tutti i nodi. Gli altri nodi potranno apprendere che esistono ne
esistono altri fuori dal loro raggio di visibilità e impostare il NAV scritto nel pacchetto CTS. Poiché
questa procedura consuma risorse si attiva solitamente solo oltre una certa soglia di dimensione del
pacchetto, il CTS Treshold.

Figura 6.9: Problema dell’”Hidden Terminal” con relativa soluzione usando i frame CTS e RTS.

6.5.2.2 Exposed Terminal Problem


Per evitare che due stazioni monopolizzino il canale dopo averlo conquistato, lo standard impone che
a fine di una trasmissione con successo il nodo imposti il NAV usando l’algoritmo di backoff, consentendo
di liberare il canale per le altre stazioni. Questo potrebbe però portare a tempi morti in caso il canale
rimanga inutilizzato.

Figura 6.10: Exposed Terminal Problem.

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.

6.6 Divisione in canali (802.11b)


La banda disponibile nel canale radio è suddivisa in canali come in figura 6.12, risulta quindi impor-
tante la scelta del canale. I canali disponibili variano in base allo stato, questo può portare incompatibilità
di alcuni dispositivi. Inoltre ciascun canale interferisce con i due canali precedenti e i due successivi,
quindi bisogna scegliere un canale che sia il meno rumoroso possibile.

Figura 6.12: Divisione in canali secondo lo standard IEEE 802.11b.

69

Potrebbero piacerti anche