Sei sulla pagina 1di 164

M.T.Bombi, A.

Giunta e altri

Reti di Elaboratori - 2014

RETI DI ELABORATORI
SOMMARIO
1 PRESENTAZIONE ................................................................................................................................................. 7
1.1 BIBLIOGRAFIA ......................................................................................................................................................... 7
1.2 PREREQUISITI .......................................................................................................................................................... 7
1.2.1 CALCOLO DELLE PROBABILIT: FONDAMENTI ...................................................................................................... 7
1.2.1.1 Definizioni .......................................................................................................................................................... 7
1.2.1.2 Assiomi ............................................................................................................................................................... 7
1.2.1.3 Teoremi ............................................................................................................................................................... 8
1.2.2 SERIE GEOMETRICA................................................................................................................................................ 8
1.2.3 ESERCIZI................................................................................................................................................................. 9
2 INTRODUZIONE ................................................................................................................................................. 10
2.1 MODELLO MAINFRAME - TERMINALI................................................................................................................... 10
2.2 RETI DI ELABORATORI .......................................................................................................................................... 10
2.3 SERVIZI DI RETE .................................................................................................................................................... 11
2.4 USI DELLE RETI DI ELABORATORI ........................................................................................................................ 11
2.5 ASPETTI HARDWARE DELLE RETI ......................................................................................................................... 12
2.5.1 TECNOLOGIA TRASMISSIVA .................................................................................................................................. 12
2.5.1.1 Reti broadcast ................................................................................................................................................... 12
2.5.1.1.1 Varianti........................................................................................................................................................... 12
2.5.1.2 Reti punto a punto............................................................................................................................................. 12
2.5.2 SCALA DIMENSIONALE ......................................................................................................................................... 12
2.5.2.1 Reti locali.......................................................................................................................................................... 13
2.5.2.2 Reti metropolitane ............................................................................................................................................ 13
2.5.2.3 Reti geografiche................................................................................................................................................ 13
2.5.3 INTERCONNESSIONE DI RETI (INTERNETWORK) ................................................................................................... 15
2.6 ASPETTI SOFTWARE DELLE RETI .......................................................................................................................... 15
2.6.1 GERARCHIE DI PROTOCOLLO ............................................................................................................................... 15
2.6.2 ARCHITETTURA DI RETE ....................................................................................................................................... 16
2.6.3 INTERFACCE E SERVIZI ......................................................................................................................................... 17
2.6.3.1 Servizi orientati alla connessione ..................................................................................................................... 18
2.6.3.2 Servizi privi di connessione .............................................................................................................................. 18
2.6.3.3 Affidabilit ........................................................................................................................................................ 18
2.6.4 PRIMITIVE DI DEFINIZIONE DEL SERVIZIO ............................................................................................................ 19
2.6.5 ASPETTI DI PROGETTO DEI LIVELLI ...................................................................................................................... 20
2.7 LA REALT NEL MONDO DELLE RETI .................................................................................................................... 20
2.7.1 MODELLO OSI ..................................................................................................................................................... 20
2.7.2 INTERNET PROTOCOL SUITE ................................................................................................................................ 22
2.7.3 CONFRONTO FRA MODELLO DI RIFERIMENTO OSI E ARCHITETTURA TCP/IP ...................................................... 23
2.7.3.1 Confronto fra pile di protocolli OSI e TCP/IP .................................................................................................. 23
2.7.4 AUTORIT NEL MONDO DEGLI STANDARD ........................................................................................................... 24
3 PROGETTAZIONE DI APPLICAZIONI DI RETE ......................................................................................... 25
3.1 INTERFACCIA TRASPORTO-APPLICAZIONE .......................................................................................................... 25
3.2 IL PARADIGMA CLIENT-SERVER ............................................................................................................................ 25
3.3 REALIZZARE APPLICAZIONI DI RETE CON JAVA .................................................................................................. 25
3.3.1 CLASSE SOCKET ................................................................................................................................................... 26
3.3.1.1 Costruttore ........................................................................................................................................................ 26
3.3.1.2 Metodi pi importanti ....................................................................................................................................... 26
3.3.2 LA CLASSE SERVERSOCKET ................................................................................................................................. 26
3.3.2.1 Costruttori ......................................................................................................................................................... 26
3.3.2.2 Metodi pi importanti ....................................................................................................................................... 26
3.3.3 ESEMPIO DI SERVER.............................................................................................................................................. 27
3.4 ESERCIZI ................................................................................................................................................................ 27
4 IL LIVELLO FISICO ........................................................................................................................................... 29
4.1 BASI TEORICHE PER LA TRASMISSIONE DEI DATI ................................................................................................ 29
4.1.1 ANALISI ARMONICA ............................................................................................................................................. 30

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

4.1.2 CONVERSIONE ANALOGICO DIGITALE ..................................................................................................................31


4.1.2.1 Campionamento ................................................................................................................................................31
4.1.2.2 Quantizzazione..................................................................................................................................................32
4.1.3 TRASMISSIONE DEI SEGNALI SUI MEZZI FISICI......................................................................................................32
4.1.4 TEOREMI SUI LIMITI DI TRASMISSIONE DI INFORMAZIONE ...................................................................................34
4.1.4.1 Teorema di Nyquist ...........................................................................................................................................34
4.1.4.2 Teorema di Shannon .........................................................................................................................................34
4.1.5 CONCLUSIONI .......................................................................................................................................................35
4.2 MEZZI TRASMISSIVI...............................................................................................................................................35
4.2.1 MEZZI ELETTRICI..................................................................................................................................................36
4.2.1.1 Doppino intrecciato...........................................................................................................................................36
4.2.1.2 Cavo coassiale...................................................................................................................................................36
4.2.1.3 Confronti ...........................................................................................................................................................37
4.2.2 FIBRE OTTICHE .....................................................................................................................................................37
4.2.3 TRASMISSIONE SENZA FILI ...................................................................................................................................38
4.3 IL SISTEMA TELEFONICO .......................................................................................................................................38
4.3.1 STRUTTURA GENERALE ........................................................................................................................................39
4.3.2 LINEE E MULTIPLEXING ........................................................................................................................................40
4.3.2.1 Multiplexing a divisione di frequenza ..............................................................................................................40
4.3.2.2 Multiplexing a divisione di tempo ....................................................................................................................40
4.3.3 IL CIRCUITO LOCALE (ULTIMO MIGLIO) ................................................................................................................41
4.3.4 COMMUTAZIONE ..................................................................................................................................................41
4.3.5 SERVIZI PER TRASMISSIONE DATI .........................................................................................................................41
4.3.5.1 Collegamenti dedicati .......................................................................................................................................42
4.3.5.2 xDSL .................................................................................................................................................................42
4.3.5.3 Caratteristiche e requisiti ..................................................................................................................................42
4.3.5.4 Scenario di riferimento .....................................................................................................................................43
4.4 {#} APPROFONDIMENTI .........................................................................................................................................44
4.4.1 CARDINALIT DEGLI INSIEMI ...............................................................................................................................44
4.4.2 ANALISI ARMONICA DI FOURIER ..........................................................................................................................44
4.4.2.1 Osservazioni .....................................................................................................................................................45
4.4.3 MODULAZIONI DIGITALI .......................................................................................................................................45
4.4.3.1 Modulazione d'ampiezza...................................................................................................................................45
4.4.3.2 Modulazione di frequenza ................................................................................................................................46
4.4.3.3 Modulazione di fase e di fase differenziale ......................................................................................................46
4.4.3.4 Modulazione in banda base...............................................................................................................................47
4.5 ESERCIZI ................................................................................................................................................................47
5 IL LIVELLO DI DATA LINK ............................................................................................................................. 49
5.1 SERVIZI OFFERTI AL LIVELLO DI NETWORK ........................................................................................................49
5.2 FRAMING ................................................................................................................................................................49
5.2.1 CONTEGGIO ..........................................................................................................................................................49
5.2.2 RIEMPIMENTO DI BYTE .........................................................................................................................................50
5.2.3 RIEMPIMENTO DI BIT ............................................................................................................................................50
5.2.4 VIOLAZIONI DELLA CODIFICA ..............................................................................................................................50
5.3 RILEVAMENTO E CORREZIONE ERRORI ...............................................................................................................51
5.3.1 DISTANZA DI HAMMING .......................................................................................................................................51
5.3.2 CODICI DI HAMMING PER LA CORREZIONE DEGLI ERRORI ...................................................................................51
5.3.2.1 Raffiche di errori ...............................................................................................................................................52
5.3.3 BIT DI PARIT PER IL RILEVAMENTO DEGLI ERRORI .............................................................................................53
5.3.4 CONFRONTO TRA CODICI PER LA CORREZIONE E PER IL RILEVAMENTO DEGLI ERRORI ........................................53
5.3.5 CODICE POLINOMIALE PER IL RILEVAMENTO DEGLI ERRORI ................................................................................53
5.4 GESTIONE DELLE SEQUENZE DI TRASMISSIONE ..................................................................................................54
5.4.1 PROTOCOLLO SEMPLICE STOP-AND-WAIT CON RISCONTRO .................................................................................54
5.4.2 PROTOCOLLI A FINESTRA SCORREVOLE ................................................................................................................57
5.4.2.1 Finestra del mittente..........................................................................................................................................58
5.4.2.2 Finestra del destinatario ....................................................................................................................................58
5.4.2.3 Protocolli go-back-n e selective repeat .............................................................................................................59
5.4.3 HDLC (HIGH LEVEL DATA LINK CONTROL) ........................................................................................................59
5.5 IL LIVELLO DI DATA LINK DI INTERNET ................................................................................................................60
5.5.1 IL PROTOCOLLO SLIP (SERIAL LINE INTERNET PROTOCOL): ...............................................................................61

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

5.5.2 IL PROTOCOLLO PPP (POINT-TO-POINT PROTOCOL): ........................................................................................... 61


5.5.2.1 Funzionamento tipico di un PC che si connette a Internet per diventare host .................................................. 61
5.5.3 PPPOE .................................................................................................................................................................. 62
5.6 {#} APPROFONDIMENTI ......................................................................................................................................... 62
5.6.1 CODICE POLINOMIALE ......................................................................................................................................... 62
5.6.1.1 Situazioni di errore rilevate da un codice polinomiale ..................................................................................... 62
5.6.1.1.1 Sequenze di errori di lunghezza k<=r .......................................................................................................... 62
5.7 ESERCIZI ................................................................................................................................................................ 62
5.7.1 FRAMING .............................................................................................................................................................. 62
5.7.2 GESTIONE DEGLI ERRORI ..................................................................................................................................... 63
5.7.3 GESTIONE DELLE SEQUENZE DI TRASMISSIONE ................................................................................................... 63
5.7.3.1 Simulazione delle sequenze di trasmissione ..................................................................................................... 63
6 IL SOTTOLIVELLO MAC (MEDIUM ACCESS CONTROL) ....................................................................... 65
6.1 ALLOCAZIONE DEL CANALE.................................................................................................................................. 65
6.1.1 ALLOCAZIONE STATICA ........................................................................................................................................ 65
6.1.2 ALLOCAZIONE DINAMICA .................................................................................................................................... 65
6.2 PROTOCOLLI AD ACCESSO MULTIPLO .................................................................................................................. 66
6.2.1 ALOHA PURO ........................................................................................................................................................ 66
6.2.1.1 Aloha a slot ....................................................................................................................................................... 66
6.2.2 PROTOCOLLI CSMA (CARRIER SENSE MULTIPLE ACCESS)................................................................................. 66
6.2.3 PROTOCOLLI CSMA/CD (CSMA CON COLLISION DETECTION) ......................................................................... 66
6.3 PROTOCOLLI SENZA COLLISIONI .......................................................................................................................... 67
6.3.1 LE RETI AD ANELLO .............................................................................................................................................. 67
6.4 PROTOCOLLI LAN WIRELESS ............................................................................................................................... 68
6.4.1 IL PROBLEMA DELLA STAZIONE NASCOSTA E DELLA STAZIONE ESPOSTA ............................................................. 69
6.4.2 PROTOCOLLI MACA E MACAW ......................................................................................................................... 69
6.5 ESERCIZI ................................................................................................................................................................ 70
7 LO STANDARD IEEE 802 ................................................................................................................................... 72
7.1 COLLEGAMENTI TRA LAN .................................................................................................................................... 72
7.2 DISPOSITIVI PER IL PASSAGGIO DEI DATI ............................................................................................................. 72
7.2.1 DISPOSITIVI A LIVELLO FISICO ............................................................................................................................. 72
7.2.1.1 Ripetitore .......................................................................................................................................................... 72
7.2.1.2 Hub ................................................................................................................................................................... 73
7.2.2 DISPOSITIVI A LIVELLO DI DATA LINK................................................................................................................... 73
7.2.2.1 Bridge ............................................................................................................................................................... 73
7.2.2.1.1 Standard IEEE per i bridge ............................................................................................................................ 74
7.2.2.2 Switch ............................................................................................................................................................... 74
7.3 IEEE 802.3 ............................................................................................................................................................. 74
7.3.1 CABLAGGI ETHERNET .......................................................................................................................................... 75
7.3.1.1 Thick ethernet o 10Base5 ................................................................................................................................. 75
7.3.1.2 Thin ethernet o 10Base2 ................................................................................................................................... 75
7.3.1.3 Cavo UTP o 10BaseT ....................................................................................................................................... 75
7.3.1.4 Fibra ottica o 10BaseF ...................................................................................................................................... 76
7.3.1.5 Topologie di cablaggi ....................................................................................................................................... 76
7.3.2 CODIFICA DEI DATI ............................................................................................................................................... 76
7.3.3 PROTOCOLLO MAC 802.3 .................................................................................................................................... 76
7.3.3.1 Lunghezza minima del frame ........................................................................................................................... 76
7.3.3.2 Protocollo MAC ............................................................................................................................................... 77
7.4 LE EVOLUZIONI DELLA RETE ETHERNET ............................................................................................................ 78
7.4.1 FAST ETHERNET ................................................................................................................................................... 78
7.4.2 RETI SEGMENTATE ................................................................................................................................................ 78
7.4.3 GIGABIT ETHERNET ............................................................................................................................................. 79
7.5 IEEE 802.11 ........................................................................................................................................................... 79
7.5.1 IL PROTOCOLLO MAC 802.11 .............................................................................................................................. 80
7.5.1.1 Modalit DCF (Distributed Coordination Function) ........................................................................................ 81
7.5.1.2 Modalit PCF (Point Coordination Function) .................................................................................................. 83
7.6 IEEE 802.2 ............................................................................................................................................................. 83
7.7 RETI LOCALI VIRTUALI (VLAN) .......................................................................................................................... 84
7.8 ESERCIZI ................................................................................................................................................................ 85

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

8 IL LIVELLO DI NETWORK ............................................................................................................................. 87


8.1 ROUTER ..................................................................................................................................................................87
8.2 SERVIZI OFFERTI AL LIVELLO SUPERIORE ...........................................................................................................87
8.2.1 SERVIZIO ORIENTATO ALLA CONNESSIONE ...........................................................................................................88
8.2.2 SERVIZIO NON ORIENTATO ALLA CONNESSIONE ...................................................................................................88
8.2.3 CONFRONTO TRA SERVIZI ORIENTATI ALLA CONNESSIONE E SERVIZI DATAGRAM ................................................88
8.3 ALGORITMI DI ROUTING........................................................................................................................................88
8.3.1 CARATTERISTICHE DI UN ALGORITMO ..................................................................................................................89
8.3.2 PROBLEMATICHE DI TRANSITORIO .......................................................................................................................89
8.3.3 CLASSIFICAZIONE.................................................................................................................................................90
8.3.4 IL PRINCIPIO DI OTTIMALIT ................................................................................................................................90
8.3.5 ALGORITMI STATICI ..............................................................................................................................................91
8.3.5.1 Routing basato sul cammino minimo ...............................................................................................................91
8.3.5.2 Flooding ............................................................................................................................................................92
8.3.6 ALGORITMI DINAMICI ...........................................................................................................................................92
8.3.6.1 Routing basato sui vettori di distanza (distance vector routing) .......................................................................92
8.3.6.2 Routing basato sullo stato dei canali (link state routing) ..................................................................................93
8.3.7 ROUTING GERARCHICO ........................................................................................................................................93
8.4 CONTROLLO DELLA CONGESTIONE ......................................................................................................................94
8.4.1 PACCHETTI DI STROZZAMENTO ............................................................................................................................94
8.5 INTERNETWORKING ..............................................................................................................................................95
8.5.1 RETI DI ROUTER MULTIPROTOCOLLO ...................................................................................................................95
8.5.2 TUNNELING ..........................................................................................................................................................95
8.5.3 FRAMMENTAZIONE ...............................................................................................................................................96
8.5.4 CIRCUITI VIRTUALI CONCATENATI ........................................................................................................................96
8.5.5 GATEWAY DI TRASPORTO ......................................................................................................................................96
8.5.6 GATEWAY DI APPLICAZIONE .................................................................................................................................96
8.5.7 INTERNETWORK ROUTING ....................................................................................................................................97
8.6 IL LIVELLO INTERNET ...........................................................................................................................................97
8.6.1 L'HEADER IP (VERSIONE 4) ..................................................................................................................................97
8.6.2 INDIRIZZI IP ..........................................................................................................................................................98
8.6.2.1 Prefissi ..............................................................................................................................................................98
8.6.2.2 Indirizzi speciali ................................................................................................................................................99
8.6.2.3 ICANN ..............................................................................................................................................................99
8.6.2.4 Sottoreti...........................................................................................................................................................100
8.6.2.5 Classi...............................................................................................................................................................101
8.6.2.6 CIDRClassless InterDomain Routing .........................................................................................................101
8.6.3 ROUTING IP ........................................................................................................................................................101
8.6.3.1 Interconnessione di sottoreti IP sulla stessa LAN ...........................................................................................102
8.6.4 INDIRIZZI IP PRIVATI E NETWORK ADDRESS TRANSLATION ...............................................................................103
8.6.5 PROTOCOLLI DI CONTROLLO ..............................................................................................................................104
8.6.5.1 ICMP (Internet Control Message Protocol, RFC 792)....................................................................................104
8.6.5.2 ARP (Address Resolution Protocol, RFC 826) ...............................................................................................105
8.6.5.3 RARP (Reverse Address Resolution Protocol, RFC 903) ..............................................................................105
8.6.5.4 DHCP (Dynamic Host Configuration Protocol, RFC 2131) ...........................................................................105
8.6.5.5 IGMP (Internet Group Management Protocol) ...............................................................................................106
8.6.6 PROTOCOLLI DI ROUTING IN INTERNET ..............................................................................................................106
8.6.6.1 Interior Gateway Protocol per Internet ...........................................................................................................107
8.6.6.2 Exterior Gateway Protocol per Internet ..........................................................................................................107
8.6.7 IP VERSIONE 6 ....................................................................................................................................................107
8.7 REALIZZAZIONE DI PIANI DI INDIRIZZAMENTO CLASSLESS .............................................................................108
8.8 ESERCIZI SVOLTI ..................................................................................................................................................108
8.8.1 ESEMPIO DI SUBNETTING....................................................................................................................................108
8.9 ESERCIZI ..............................................................................................................................................................109
8.9.1 PIANI DI INDIRIZZAMENTO CLASSFULL ..............................................................................................................109
8.9.2 PIANI DI INDIRIZZAMENTO CLASSLESS ...............................................................................................................109
9 IL LIVELLO DI TRASPORTO ......................................................................................................................... 110
9.1 SERVIZI OFFERTI DAL LIVELLO DI TRASPORTO ................................................................................................. 110
9.2 PRIMITIVE DI DEFINIZIONE DEL SERVIZIO ......................................................................................................... 110
9.3 PROTOCOLLI DI LIVELLO DI TRASPORTO........................................................................................................... 110

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

9.4 INDIRIZZAMENTO ................................................................................................................................................ 111


9.5 IL LIVELLO DI TRASPORTO IN INTERNET ........................................................................................................... 111
9.6 IL PROTOCOLLO TCP .......................................................................................................................................... 111
9.6.1 INDIRIZZAMENTO ............................................................................................................................................... 112
9.6.2 L'HEADER DEL SEGMENTO TCP ......................................................................................................................... 112
9.6.3 ATTIVAZIONE DELLA CONNESSIONE ................................................................................................................... 113
9.6.4 RILASCIO DELLA CONNESSIONE ......................................................................................................................... 114
9.6.5 POLITICA DI TRASMISSIONE ............................................................................................................................... 114
9.6.5.1 Controllo congestione ..................................................................................................................................... 115
9.7 IL PROTOCOLLO UDP.......................................................................................................................................... 116
10 IL LIVELLO DI APPLICAZIONE ................................................................................................................. 117
10.1 WORLD WIDE WEB ........................................................................................................................................... 117
10.2 HYPERTEXT TRANSFER PROTOCOL ................................................................................................................. 118
10.2.1 MESSAGGIO DI RICHIESTA ................................................................................................................................ 119
10.2.2 MESSAGGIO DI RISPOSTA ................................................................................................................................. 119
10.2.3 ESEMPI DI MESSAGGI HTTP ............................................................................................................................. 120
10.3 IL DNS (DOMAIN NAME SYSTEM) .................................................................................................................... 120
10.3.1 TLD.................................................................................................................................................................. 120
10.3.2 FUNZIONAMENTO ............................................................................................................................................. 121
10.4 SERVIZI DI DIRECTORY...................................................................................................................................... 121
10.4.1 DIRECTORY CLIENT E SERVER .......................................................................................................................... 122
10.4.2 TIPI DI DIRECTORY ........................................................................................................................................... 122
10.5 LA POSTA ELETTRONICA ................................................................................................................................... 122
10.5.1 MODELLO DI SERVIZIO ..................................................................................................................................... 122
10.5.2 INDIRIZZI E-MAIL ............................................................................................................................................. 123
10.5.3 ARCHITETTURA DEL SISTEMA DI E-MAIL .......................................................................................................... 123
10.5.4 MESSAGGI E-MAIL ........................................................................................................................................... 123
10.5.5 FUNZIONAMENTO DEI CLIENT.......................................................................................................................... 124
10.5.6 PROTOCOLLO SMTP ........................................................................................................................................ 125
10.5.7 PROTOCOLLI POP3 E IMAP ............................................................................................................................. 125
10.5.7.1 Differenze tra IMAP e POP .......................................................................................................................... 126
10.5.8 ABUSI ............................................................................................................................................................... 126
10.5.8.1 E-mail privacy sul posto di lavoro ................................................................................................................ 127
10.5.8.2 Posta elettronica certificata ........................................................................................................................... 127
11 SICUREZZA NELLE RETI ............................................................................................................................. 128
11.1 ASPETTI LEGALI DELLA SICUREZZA NEI SISTEMI INFORMATICI .................................................................... 128
11.1.1 D.LGS 196/03 RELATIVO ALLA TUTELA DELLA PRIVACY .................................................................................. 128
11.1.1.1 Art. 31 D.lgs 196 del 2003: Obblighi di sicurezza: ....................................................................................... 128
11.1.1.2 Art. 33 D.lgs 196 del 2003: misure minime: ................................................................................................. 128
11.1.1.3 Art. 34 D.lgs 196 del 2003: trattamenti con strumenti elettronici: ............................................................... 128
11.1.2 D.LGS. 518/92 RELATIVO ALLA TUTELA DEL SOFTWARE .................................................................................. 129
11.1.3 D.P.R. 445/00: LA FIRMA ELETTRONICA E DIGITALE. IL DOCUMENTO INFORMATICO ....................................... 129
11.2 SICUREZZA DEI DATI .......................................................................................................................................... 130
11.3 STRATEGIE PER LA SICUREZZA DELLA RETE.................................................................................................... 130
11.3.1 SICUREZZA ATTRAVERSO L'OBSCURITY ............................................................................................................ 130
11.3.2 HOST SECURITY ................................................................................................................................................ 130
11.3.3 NETWORK SECURITY ........................................................................................................................................ 130
11.3.4 LEAST PRIVILEGE ............................................................................................................................................. 130
11.3.5 DEFENSE IN DEPTH ........................................................................................................................................... 131
11.3.6 STRATEGIE DI CONFIGURAZIONE ...................................................................................................................... 131
11.3.7 SICUREZZA DEI SERVIZI .................................................................................................................................... 131
11.4 TIPI DI SICUREZZA ............................................................................................................................................. 131
11.4.1 SICUREZZA DEI PROGRAMMI ............................................................................................................................ 132
11.5 PRINCIPALI TECNICHE DI ATTACCO .................................................................................................................. 132
11.5.1 EXPLOIT ........................................................................................................................................................... 132
11.5.2 BUFFER OVERFLOW .......................................................................................................................................... 133
11.5.3 SHELLCODE ...................................................................................................................................................... 133
11.5.4 CRACKING ........................................................................................................................................................ 133
11.5.5 BACKDOOR ....................................................................................................................................................... 134
11.5.6 PORT SCANNING ............................................................................................................................................... 134

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

11.5.7 SNIFFING...........................................................................................................................................................134
11.5.8 KEYLOGGER .....................................................................................................................................................135
11.5.9 SPOOFING .........................................................................................................................................................135
11.5.9.1 Spoofing a livello 2 .......................................................................................................................................135
11.5.9.2 Spoofing a livello 3 .......................................................................................................................................135
11.5.9.3 Spoofing a livello 4 .......................................................................................................................................135
11.5.9.4 WEB Spoofing ..............................................................................................................................................136
11.5.10 TROJAN ...........................................................................................................................................................136
11.5.11 VIRUS INFORMATICI ........................................................................................................................................137
11.5.12 DOS ................................................................................................................................................................137
11.5.13 INGEGNERIA SOCIALE .....................................................................................................................................139
11.6 FIREWALL ...........................................................................................................................................................140
11.6.1 CONFIGURAZIONE DI FIREWALL LINUX ............................................................................................................141
11.7 IDS (INTRUSION DETECTION SYSTEM) ............................................................................................................143
11.8 PROTEZIONE DELLE INFORMAZIONI DURANTE IL TRANSITO SULLA RETE ....................................................145
11.8.1 CRITTOGRAFIA .................................................................................................................................................145
11.8.2 CRITTOGRAFIA A CHIAVE SEGRETA (O SIMMETRICA) ........................................................................................147
11.8.3 CRITTOGRAFIA A CHIAVE PUBBLICA .................................................................................................................148
11.8.4 MATEMATICA NELLA CRITTOGRAFIA A CHIAVE PUBBLICA: ARITMETICA MODULARE .......................................149
11.8.5 ALGORITMO RSA .............................................................................................................................................152
11.8.6 FUNZIONI HASH E FIRME DIGITALI ....................................................................................................................152
11.8.7 PROTOCOLLI CRITTOGRAFICI ...........................................................................................................................154
11.8.8 CHIAVE SEGRETA DI SESSIONE ..........................................................................................................................154
11.8.9 CENTRO DI DISTRIBUZIONE DELLE CHIAVI .......................................................................................................155
11.9 PROTEZIONE DEL WEB ......................................................................................................................................156
11.9.1 CONTROLLO DEI DIRITTI DI ACCESSO: BASIC AUTHENTICATION IN HTTP 1.0 ..................................................156
11.9.2 CONTROLLO DEI DIRITTI DI ACCESSO: DIGEST AUTHENTICATION IN HTTP 1.1 ................................................157
11.9.3 PROTEZIONE DELLE RISORSE DA DANNEGGIAMENTO ......................................................................................157
11.9.3.1 Lato client .....................................................................................................................................................157
11.9.3.2 Lato server ....................................................................................................................................................157
11.9.4 LA SICUREZZA E JAVA .......................................................................................................................................158
11.9.5 TRANSPORT LAYER SECURITY .........................................................................................................................158
11.9.6 VULNERABILIT DI MD5 .................................................................................................................................159
11.10 PGP - PRETTY GOOD PRIVACY .......................................................................................................................160
11.11 VIRTUAL PRIVATE NETWORK ..........................................................................................................................162
12 ESERCIZI DI PROGETTAZIONE DI RETI ................................................................................................ 163
12.1 ESAME DI STATO PER PERITO INFORMATICO PROGETTO ABACUS/ 2008 ......................................................163
12.2 ESAME DI STATO PER PERITO INFORMATICO PROGETTO ABACUS/ 2010 ......................................................163
12.3 ESAME DI STATO PER PERITO INFORMATICO PROGETTO ABACUS/ 2012 ......................................................163
12.4 ESAME DI STATO PER PERITO INFORMATICO PROGETTO ABACUS/ 2014 ......................................................164

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

1 Presentazione
1.1 Bibliografia
-

M. T. Bombi, Appunti dalle lezioni.


A. Giunta, Appunti dalle lezioni.
Bongiovanni, http://cesare.dsi.uniroma1.it/~reti/Reti1_html/
Bongiovanni, http://cesare.dsi.uniroma1.it/~reti/Reti2_html/welcome.html
Wikipedia
A. Tanenbaum, Reti di computer edizione 5.

1.2 Prerequisiti
1.2.1 Calcolo delle probabilit: fondamenti
Un fenomeno detto probabilistico quando il suo esito variabile e dipendente da condizioni che non
possiamo determinare.
Ogni possibile esito detto evento. Il compito del Calcolo delle probabilit misurare ogni evento mediante un numero detto probabilit dell'evento.
Es. Il fenomeno "Valore del lancio di un dado" probabilistico perch il suo esito, composto dai sei eventi
{1, 2, 3, 4, 5, 6}, dipende da condizioni che non possiamo determinare.
La probabilit di ognuno di questi eventi 1/6.
Es. Il fenomeno "Anno bisestile" non probabilistico perch il suo esito dipende da condizioni a noi note.
1.2.1.1 Definizioni
Due eventi E1 e E2 sono detti complementari se:
~ Non hanno elementi comuni, e
~ Uno dei due deve avvenire.
@

Es. Nel fenomeno "Valore del lancio di un dado", gli eventi "Valore 2" e "Valore 1 o 3 o 4 o 5 o 6" sono
complementari.
Due eventi E1 e E2 sono detti indipendenti se non si influenzano reciprocamente, cio se la probabilit di
ognuno di questi due eventi non dipende dal fatto che l'altro evento avvenuto.
@

Es. Nel fenomeno "Valore del lancio di due dadi", gli eventi "Valore 3 nel lancio del primo dado" e "Valore 4 nel lancio del secondo dado" sono indipendenti.
1.2.1.2 Assiomi
Lo studio del Calcolo delle probabilit si basa su alcuni assiomi:
1 La probabilit di ogni evento un numero compreso tra 0 e 1.
La probabilit di un evento E si indica con P[E].
2 La probabilit dell'insieme composto da tutti gli eventi possibili del fenomeno 1.
In questa trattazione considereremo soltanto fenomeni dove il numero di eventi possibili finito.
Es. Nel fenomeno "Valore del lancio di un dado", i sei eventi possibili sono "Valore 1", "Valore 2", ..,
"Valore 6". Quindi:
P["Valore 1" "Valore 2" .. "Valore 6"]
= 1

3 Se due eventi E1 e E2 non hanno elementi comuni, allora P[E1 E2] = P[E1] + P[E2].
Es. Nel fenomeno "Valore del lancio di un dado", gli eventi "Valore 2" e "Valore 3" non hanno elementi
comuni; quindi:
P["Valore 2" "Valore 3"]
= P["Valore 2"] + P["Valore 3"]
= 1/6 + 1/6 (perch tutti i sei eventi sono equiprobabili)
= 2/6

Es. Nel fenomeno "Valore del lancio di un dado", gli eventi "Valore pari" e "Valore multiplo di 3" hanno

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

l'elemento comune "Valore 6"; allora le ipotesi dell'assioma precedente non sono soddisfatte; infatti,
P["Valore pari"
= P["Valore 2 o 4
= P["Valore 2"] +
= 1/6 + 1/6 + 1/6
= 4/6

"Valore multiplo di 3"]


o 6 o 3"]
P["Valore 4"] + P["Valore 6"] + P["Valore 3"]
+ 1/6

che diverso da
P["Valore pari"] + P["Valore multiplo di 3"]
= 3/6 + 2/6
= 5/6

L'assioma 3 ha una conseguenza interessante e frequente.


3b Se tutti gli n possibili eventi sono equiprobabili e se ci sono m eventi (detti eventi favorevoli) tali che
nessuna coppia di questi m eventi ha elementi comuni, allora P[E1 E2 .. Em] = m / n
Es. Nel fenomeno "Valore del lancio di un dado", nessuna coppia degli eventi "Valore 2", "Valore 3" e "Valore 4" ha elementi comuni e tutti i sei possibili eventi sono equiprobabili; quindi:
P["Valore 2" "Valore 3" "Valore 4"]
= 3 / 6

1.2.1.3 Teoremi
Dagli assiomi precedenti discendono i seguenti teoremi, la cui dimostrazione omessa:
4 Se due eventi E1 e E2 sono complementari, allora P[E2]= 1 - P[E1].
Es. Nel fenomeno "Valore del lancio di un dado", si ha:
P["Valore 1 o 3 o 4 o 5 o 6"]
= 1 - P["Valore 2"]
= 1 1/6
= 5/6

5 Se due eventi E1 e E2 sono indipendenti, allora P[E1 E2]

= P[E1] * P[E2].

Es. Nel fenomeno "Valore del lancio di due dadi", si ha:


P["Valore 3 nel lancio del primo dado" "Valore 4 nel lancio del secondo dado"]
= P["Valore 3 nel lancio del primo dado"] * P["Valore 4 nel lancio del secondo"]
= 1/6 * 1/6
= 1/36

Es. Nel fenomeno "Valore del lancio di un dado", gli eventi "Valore pari" e "Valore >= 4" si influenzano
reciprocamente; allora le ipotesi del teorema precedente non sono soddisfatte; infatti,
P["Valore pari" "Valore >= 4"]
= P["Valore 4 o 6"]
= P["Valore 4"] + P["Valore 6"]
= 1/6 + 1/6
= 1/3

che diverso da
P["Valore pari"] * P["Valore >= 4"]
= 3/6 * 3/6
= 1/4

1.2.2 Serie geometrica


data una successione del tipo:
pow(q, a), pow(q, (a+1)), .., pow(q, (b-1)), pow(q, b)

con 0<=a<=b.

Es: Nella successione 8, 16, 32, 64, si ha:


q:=2, a:=3, b:= 6.
@

La somma dei termini suddetti detta serie geometrica a termini finiti e si simboleggia con
SUM{pow(q, i) | i=a, .., b}.
q detta ragione della serie.
Ci sono i seguenti casi particolari notevoli.
~ (q >= 0) AND (q != 1) (perch (1-q) compare al denominatore)
Si dimostra che
SUM{pow(q, i | i=a, .., b}= (pow(q, a) pow(q, (b+1))) / (1-q).

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

Si pu notare che:
- il primo addendo del numeratore il primo termine della successione;
- il secondo addendo del numeratore il termine che viene dopo l'ultimo della successione.
Es: 8 + 16 + 32 + 64 =
SUM{pow(2, i) | i=3, .., 6} =
(8-128) / (1-2) = 120
Es: 36 + 108 + 324 =
4 * (9 + 27 + 81) =
4 * SUM{pow(3, i) | i=2, .., 4} =
4 * (9-243) / (1-3) =
4 * 234 / 2 =
468

~ b -> + AND 0 < q < 1 (per la convergenza del limite)


un caso particolare del precedente; poich lim {pow(q, (b+1)) | b -> +} = 0, la formula precedente diventa
SUM{pow(q, i) | i=a, .., +}= pow(q, a) / (1-q).
Es: (1/8) + (1/16) + (1/32) + (1/64) + .. =
SUM{pow((1/2), i) | i=3, .., +} = (applicando la formula)
(1/8) / (1-(1/2))=
(1/8) / (1/2) =
1/4

1.2.3 Esercizi
1. Mescolando due qualsiasi di 6 liquori in uguale misura si ottiene un cocktail. Quanti tipi di cocktail
possibile ottenere?
2. Risolvere il problema precedente supponendo di avere nLiq liquori.
3. Risolvere il primo problema supponendo di ottenere un cocktail mettendo una quantit doppia del primo
liquore rispetto alla quantit del secondo liquore.
4. Risolvere il problema precedente supponendo di avere nLiq liquori.
5. Una targa automobilistica in Italia composta da:
- 2 lettere maiuscole dell'alfabeto latino tranne la I e la O.
- 3 cifre decimali.
- 2 lettere maiuscole dell'alfabeto latino tranne la I e la O.
Quante sono le possibili targhe?
6. Due persone sono nate in un anno non bisestile.
Qual la probabilit che siano nate lo stesso giorno e mese?
7. Una moneta lanciata 4 volte. La probabilit di ottenere testa uguale a quella di ottenere croce.
Qual la probabilit di ognuna delle seguenti combinazioni?
- 4 volte un valore e 0 volte l'altro valore.
- 3 volte un valore e 1 volte l'altro valore, in qualsiasi ordine
- 2 volte un valore e 2 volte l'altro valore, in qualsiasi ordine
8. Due dadi con 6 facce con i valori da 1 a 6 sono truccati, perch, per ogni dado:
- Tutti i numeri dispari hanno la stessa probabilit.
- Tutti i numeri pari hanno la stessa probabilit.
- La probabilit di avere un numero dispari la met di avere un numero pari.
A. Qual la probabilit di avere 1 lanciando un dado?
B. Qual la probabilit di avere 2 lanciando un dado?
C. Qual la probabilit di avere almeno 3 lanciando due dadi?

10

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

2 Introduzione
Ognuno dei ultimi tre secoli stati dominato da una tecnologia che lo ha caratterizzato ed ha avuto profonde influenze sulla vita dell'uomo:
- 18 secolo: sistemi meccanici, rivoluzione industriale;
- 19 secolo: motori a vapore;
- 20 secolo: tecnologie dell'informazione:
- raccolta e memorizzazione;
- elaborazione;
- distribuzione.
Nel secolo scorso si sono diffusi:
- il sistema telefonico, a livello mondiale;
- la radio e la televisione;
- i computer;
- i satelliti per telecomunicazioni.
Queste tecnologie stanno rapidamente convergendo. In particolare, la combinazione tra elaboratori e sistemi di telecomunicazione ha influenzato fortemente l'organizzazione dei sistemi di calcolo.

2.1 Modello mainframe - terminali


Fino agli anni novanta, linformatica era basata sul modello mainframe-terminali, che concentra la potenza di calcolo in un unico grande elaboratore a cui si accede per mezzo di un certo numero di terminali.
Questa situazione tipica dellarchitettura SNA (System Network Architecture), la vecchia architettura
di rete della IBM.
un'architettura centralizzata, con un'organizzazione di tipo master-slave, dove un dispositivo, detto
master, controlla gli altri dispositivi, detti slave. L'Unit Centrale di questo sistema offre le proprie risorse
(CPU, dischi, stampanti) agli utenti. Un utente si collega all'UC mediante un video terminale (VT), privo
di risorse interne e di significative capacit di elaborazione, oppure, a partire dalla seconda met degli anni
80, mediante un PC.
I VT, i PC e le stampanti sono collegati allelaboratore tramite dei FEP (Front End Processor), che gestiscono e sincronizzano i vari dispositivi. Il collegamento dei dispositivi al FEP pu essere effettuato sia direttamente (collegamento locale) che tramite la rete telefonica (collegamento remoto).
Quando un PC si collega all'UC del sistema, pu lavorare:
- come un PC normale, cio in modo locale, che non pu comunicare con altri PC;
- in modalit di emulazione terminale, cio collegandosi come un semplice VT non intelligente, che pu
comunicare con gli altri PC, ma soltanto attraverso il mainframe.
Questa architettura (ed altre simili) presenta ovvi limiti:
- la potenza di elaborazione di tutto il sistema dipende soltanto dalla potenza dell'elaboratore centrale;
- i dati condivisi devono essere custoditi nel calcolatore centrale anche se sono dati elaborabili localmente, con conseguente spreco di tempo e di spazio;
- gli utenti remoti non possono lavorare quando c' un problema nella linea che li collega all'UC del sistema.

2.2 Reti di elaboratori


Gradualmente l'architettura a mainframe stata sostituita da un rete di elaboratori, in cui vi un grande
numero di elaboratori autonomi e interconnessi tra loro:
- Autonomi: non c' una relazione tipo master-slave (ad es. un elaboratore non pu spegnere un altro).
- Interconnessi: gli elaboratori possono scambiarsi informazioni (mediante un opportuno mezzo fisico).
La comunicazione, oltre al collegamento fisico tra gli elaboratori, ha bisogno di un software di rete.
Una rete di elaboratori un insieme di due o pi elaboratori autonomi, detti host, tra loro connessi per
potersi scambiare informazioni.
Rete di elaboratori non sinonimo di sistema distribuito:
- In una rete di elaboratori, l'utente sa che ci sono pi host ai quali pu accedere soltanto esplicitamente.
- In un sistema distribuito, l'esistenza di pi elaboratori invisibile all'utente che ha l'impressione di interagire con un unico sistema.
Un sistema distribuito costituito da una rete di elaboratori e da un software di gestione (detto S.O.
distribuito).

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

11

Un buon esempio di sistema distribuito il World Wide Web.

2.3 Servizi di rete


Nel modello client-server, c' un elemento hw (computer, modem, etc.) o sw (processo, etc.), detto server,
che mette un servizio a disposizione di altri elementi hw o sw, detti client. Spesso nella terminologia corrente si chiama server anche lelaboratore in cui in esecuzione il processo server, e client quello in
cui in esecuzione il processo client.

Figura 2-1: Il modello client-server


Il modello client-server fondamentale nelle reti di calcolatori. Ci sono moltissimi diversi tipi di server
(con i corrispondenti client); possiamo suddividerli in due grandi categorie: servizi Internet e servizi di
rete locale.
Tra i servizi Internet ci sono, ad esempio, i server Web, Ftp, Smtp.
Tra i servizi di rete locale ci sono i servizi di condivisione locale di risorse (es., dischi, stampanti, autenticazione degli utenti). I servizi di rete locale sono forniti dal Sistema Operativo di Rete, e consentono di
collegare tra loro dei PC in modo che gli utenti possano condividere, facilmente e in modo abbastanza trasparente, le risorse fisiche e soprattutto le informazioni; ad esempio, possono condividere laccesso a un
DataBase. Di conseguenza, negli anni 90 il PC ha smesso di essere uno strumento di produttivit individuale (come invece suggerito dal nome) ed diventato uno strumento di produttivit aziendale, favorendo
la transizione da architetture gerarchiche (mainframe-videoterminali) ad architetture distribuite (reti di
PC con servizi di condivisione).

2.4 Usi delle reti di elaboratori


Moltissimi sono gli usi delle reti di elaboratori, sia per le organizzazioni (aziende, servi pubblici, etc.) che
per i singoli individui.
In particolare per le organizzazioni, i principali vantaggi sono:
- Diminuzione dei costi: una rete di PC costa molto meno di un mainframe. Per condividere, mediante
una rete di PC, le informazioni e le risorse e per gestire, contemporaneamente, in modo centralizzato i
diritti di accesso degli utenti, si utilizza il modello client-server. Usando la rete al posto di un sistema
centralizzato possibile aumentare il rapporto prezzo/prestazioni.
- Affidabilit: se si verifica un guasto nell'UC di un sistema centralizzato, questo si blocca; invece, se ci
si verifica in un nodo della rete, gli altri nodi possono continuare a lavorare. In un sistema che deve funzionare a tutti i costi (traffico aereo, centrale nucleare, sistema militare, ecc.) l'affidabilit pu essere
aumentata duplicando alcune risorse.
- Scalabilit: si possono aumentare le prestazioni del sistema aumentando il numero di elaboratori contenuti nella rete; invece, in un sistema centralizzato le prestazioni si possono aumentare solo potenziando
o sostituendo l'host.
- Condivisione risorse: si possono fornire programmi e informazioni anche a distanza di migliaia di Km.
- comunicazione fra persone: i dipendenti dellazienda possono collaborare anche senza vedersi, inviandosi messaggi, scambiandosi file, ecc.
Sostanzialmente le reti sono pi vantaggiose dei sistemi centralizzati; tuttavia, per alcune applicazioni questi ultimi risultano essere pi adatti. In particolare, un sistema centralizzato chiuso ad accessi esterni e
quindi molto pi semplice da proteggere da possibili attacchi di hacker.
Per i singoli individui, la rete di solito usata da casa propria tramite "fornitori di accesso", per accesso ad
informazioni remote (servizi bancari, acquisti da casa, navigazione sul World Wide Web), posta elettronica,
videoconferenze, giochi interattivi, ecc.

12

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

2.5 Aspetti hardware delle reti


Anche se non c' una classificazione universalmente accettata, le reti possono essere classificate in base alla tecnologia trasmissiva oppure in base alla scala dimensionale.

2.5.1 Tecnologia trasmissiva


Le tipologie delle reti in base alla tecnologia trasmissiva sono: reti broadcast e reti punto a punto.
2.5.1.1 Reti broadcast
Le reti broadcast usano un unico "canale" di comunicazione condiviso da tutti gli elaboratori. (Es.: Trasmissione radiofonica.)
Un host invia brevi messaggi, detti pacchetti, che sono ricevuti da tutti gli altri elaboratori.
Un indirizzo di destinazione all'interno del pacchetto individua il destinatario. Quando un elaboratore riceve un pacchetto, esamina l'indirizzo di destinazione; se questo coincide col proprio indirizzo, elabora il
pacchetto, altrimenti lo ignora.

Figura 2-2: una rete broadcast


2.5.1.1.1 Varianti
In una rete broadcast, un host pu inviare un pacchetto ad ogni elaboratore usando un opportuno indirizzo;
questa una trasmissione broadcasting. In tal caso, ogni elaboratore elabora il pacchetto.
Inoltre, in una rete broadcast un host pu inviare un pacchetto ad un sottoinsieme degli elaboratori; questa
una trasmissione multicasting. In tal caso, soltanto gli elaboratori di questo sottoinsieme elaborano il
pacchetto, e gli altri lo ignorano. Un bit dell'indirizzo indica che la trasmissione in multicasting; i rimanenti n-1 bit dell'indirizzo contengono l'indirizzo del gruppo destinatario.
2.5.1.2 Reti punto a punto
Le reti punto a punto usano un insieme di connessioni fra coppie di elaboratori.

Figura 2-3: una rete punto a punto


Un pacchetto va dalla sorgente alla destinazione attraversando uno o pi elaboratori intermedi. Spesso esistono pi cammini alternativi.
In generale (ma con molte eccezioni):
- le reti geograficamente localizzate sono broadcast;
- le reti geograficamente molto estese sono punto a punto.

2.5.2 Scala dimensionale


Le tipologie delle reti in base alla scala dimensionale sono: reti locali (LAN), reti metropolitane (MAN) e
reti geografiche (WAN).
La distanza un fattore molto importante, perch al suo variare si usano differenti tecniche. Di solito, nelle
reti LAN e MAN ci sono velocit trasmissive molto elevate e tassi di errore trascurabili, mentre nelle reti
WAN ci sono velocit pi modeste e maggiore probabilit di errore.

M.T.Bombi, A.Giunta e altri

Distanza fra host


10 m.
100 m.
1 km.
10 km.
100 km.
1000 km.
10.000 km.

Reti di Elaboratori - 2014

Ambito
Stanza
Edificio
Campus
Citt
Nazione
Continente
Pianeta

13

Tipo di rete
Rete locale
Rete locale
Rete locale
Rete metropolitana
Rete geografica
Rete geografica
Internet (Rete geografica)

2.5.2.1 Reti locali


Le reti locali (Local Area Network, LAN), in genere:
- hanno un'estensione che arriva fino a qualche km;
- sono possedute da una organizzazione (reti private);
- sono situate dentro un singolo edificio o campus (di norma, non si possono posare cavi sul suolo pubblico);
- sono usatissime per connettere PC o Workstation.
Si distinguono dagli altri tipi di rete per tre caratteristiche:
- distanza: la distanza non pu superare un certo limite; quindi, il tempo di trasmissione nel caso peggiore
noto a priori. Ci consente di utilizzare delle tecniche particolari per la gestione del canale di comunicazione.
- tecnologia trasmissiva: come gi accennato, le LAN sono in generale reti broadcast. Le velocit di trasmissione tipiche sono da 10 a 100 Mbit/sec (megabit al secondo, cio milioni di bit al secondo), con
basso ritardo di propagazione del segnale da un capo all'altro del canale (qualche decina di microsecondi) e basso tasso di errore.
- topologia: sono possibili diverse topologie; le pi diffuse sono il bus ed l'anello;
- topologia a bus: Ogni host collegato direttamente al canale.
- topologia ad anello (o ring): Ogni host collegato ad altri due host, formando un anello.

Figura 2-4: topologie bus e ad anello


2.5.2.2 Reti metropolitane
Le reti metropolitane (Metropolitan Area Network, MAN) hanno un'estensione tipicamente urbana
(quindi molto superiore a quella di una LAN) e sono generalmente pubbliche (cio un'azienda, ad es. Telecom Italia, concede la rete a chiunque desideri, previo pagamento di una opportuna tariffa).
Fino a qualche anno fa erano basate essenzialmente sulle tecnologie delle reti geografiche, utilizzate su
scala urbana. Attualmente ci sono realizzazioni MAN basate su fibra ottica (es. fastweb, tv via cavo).
2.5.2.3 Reti geografiche
Le reti geografiche (Wide Area Network, WAN) si estendono dentro una nazione, un continente o l'intero
pianeta. Una WAN tipicamente costituita da due componenti:
- un insieme di elaboratori che eseguono i programmi usati dagli utenti;
- una sottorete che connette gli insiemi di elaboratori. Serve a trasportare messaggi da un insieme all'altro
(come il sistema telefonico trasporta parole da chi parla a chi ascolta). Di norma, la sottorete composta, a sua volta, da due componenti:
- Linee di trasmissione (dette anche circuiti, canali, trunk).
- Router: sono dispositivi specializzati per connettere fra loro due o pi linee di trasmissione. Quando
una linea riceve dei dati, il router sceglie una linea in uscita sulla quale instradarli; questa operazione
detta instradamento (routing) dei pacchetti. Definiremo formalmente i router e il routing pi avanti.

14

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

Una WAN pu connettere pi LAN fra loro. La connessione tra LAN effettuata mediante i router.

Figura 2-5: struttura tipica di una WAN


I router possono essere collegati mediante molte topologie di interconnessione:
- a stella, a ridondanza zero;
- ad albero, a ridondanza zero;
- ad anello, a ridondanza "quasi" zero;
- a maglie parzialmente connesse (detta anche magliatura), a ridondanza media;
- completamente connessa, a ridondanza massima.

Figura 2-6: topologie di interconnessione


Una WAN pu comunicare mediante un satellite oppure mediante una radio al suolo.

Figura 2-7: interconnessione di router via satellite


Satellite: Ogni router dialoga con un satellite. La comunicazione pu essere:
- broadcast downlink (cio dal satellite a terra);
- broadcast uplink (cio da terra al satellite).
Radio al suolo: Ogni router ascolta i suoi vicini (entro una certa distanza massima). una rete broadcast.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

15

Figura 2-8: interconnessione di router via radio al suolo


Una WAN pu essere anche realizzata in modo misto: in parte cablata, in parte basata su radio o satellite.

2.5.3 Interconnessione di reti (Internetwork)

Figura 2-9: interconnessione di reti


Una internetwork un collegamento tra reti diverse, ed realizzata collegando tra loro i router di ciascuna rete coinvolta. Se le due reti sono incompatibili tra loro, il collegamento richiede un dispositivo detto
gateway (o router multiprotocollo), che, oltre ad instradare i pacchetti da una rete all'altra, converte il
protocollo di una rete in quello dell'altra rete.
Il termine internet (i minuscola) un sinonimo di internetwork, cio una connessione di pi reti generiche: il termine Internet (I maiuscola) indica la celeberrima specifica internetwork.

2.6 Aspetti software delle reti


Le prime reti furono progettate cominciando dall'hardware e sviluppando il software solo successivamente,
quasi come se questo fosse un accessorio dell'hardware. Questo approccio non funziona pi; adesso, il sw
di rete molto strutturato. Vediamo questa struttura, che approfondiremo pi avanti.

2.6.1 Gerarchie di protocollo


Per semplificare la progettazione e per rendere indipendenti le applicazioni dalla struttura fisica delle reti,
il software di rete stato diviso in livelli, ciascuno "costruito" sopra il precedente. Ogni livello svolge un
determinato compito e offre dei servizi al livello superiore, nascondendo i dettagli sull'implementazione di
questi servizi.
Ogni livello composto da parti sw o hw che svolgono particolari funzioni specifiche, dette entit, del livello. Un'entit del livello n di un host dialoga con un'entit del livello n di un altro host; queste due entit
che dialogano sono detti peer entity.
Un protocollo un insieme di regole che definiscono un servizio finalizzato alla comunicazione tra due
peer entity (calcolatori, processi, etc.). (Es.: Un protocollo pu specificare la regola di divisione dei dati in
blocchi durante una trasmissione.)
Servizi e protocolli sono spesso confusi, ma sono concetti ben distinti. Un servizio un insieme di operazioni primitive offerte da un livello al livello superiore. La modalit di implementazione di queste operazioni non nota al livello superiore.
Il dialogo fra due entit di livello n realizzato tramite i servizi offerti dal livello n-1: il livello n dell'host
1 trasferisce i dati al livello n-1 dello stesso host, assieme a delle informazioni di controllo. Sotto il livello 1 c' il mezzo fisico, che trasferisce i dati dall'host 1 all'host 2. Quando i dati arrivano all'host 2, ogni livello (a partire dal livello 1) li invia a quello superiore, fino a raggiungere il livello n.
Uninterfaccia linsieme delle regole di comunicazione tra entit di livelli adiacenti e che caratterizzano
i servizi che il livello sottostante offre a quello sovrastante.

16

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

Figura 2-10: Dialogo fra peer entity


Per comprendere meglio il meccanismo del dialogo tra due peer entity, possiamo fare una similitudine con
un dialogo tra un filosofo indiano e uno stregone africano:

Figura 2-11: Dialogo fra due persone

2.6.2 Architettura di rete


L'insieme dei livelli e dei relativi protocolli detto architettura di rete. Ogni architettura specifica (mediante alcuni documenti scritti da gruppi autorevoli di esperti) le caratteristiche di ogni suo protocollo, per
consentire la realizzazione del sw o dell'hw necessari ad implementare i protocolli.
I dettagli contenuti nell'implementazioni di un livello e di un'interfaccia fra livelli non sono specificati
dall'architettura, perch sono nascosti dentro ogni singolo host.
Dunque, nell'ambito di una specifica architettura di rete:
- Ogni host implementa i livelli e i protocolli in modo conforme all'architettura;
- due host possono implementare in modo differenti e i dettagli e le interfacce fra livelli.
Anche host aventi caratteristiche (processore, sistema operativo, costruttore) diverse possono dialogare.
L'insieme dei protocolli utilizzati su un host e relativi ad una specifica architettura di rete detto pila di
protocolli. Un host pu attivare contemporaneamente pi pile di protocolli.
La modalit di comunicazione fra due peee entity , in linea di principio, uguale in tutte le architetture.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

17

Figura 2-12: Flusso dell'informazione fra peer entity


Quando il mittente spedisce alcuni dati a un destinatario:
- L'applicazione (nel livello 5) consegna al livello 4 un messaggio M destinato alla propria peer entity.
- Il livello 4 aggiunge una sua intestazione (header) in testa al messaggio (si dice anche che inserisce il
messaggio nella busta di livello 4); questa intestazione contiene informazioni di controllo (numero di
sequenza del messaggio, grandezza del messaggio, etc.). Il risultato viene consegnato al livello 3.
- Il livello 3 pu frammentare i dati da trasmettere in unit pi piccole (pacchetti), a ciascuno dei quali
aggiunge la propria intestazione, e passa i pacchetti al livello 2.
- Il livello 2 aggiunge ad ogni pacchetto un'intestazione in testa e un trailer (contenente informazioni ridondanti finalizzate ad individuare errori in trasmissione) in coda, e lo spedisce sul canale fisico.
- Nell'host di destinazione i pacchetti fanno il percorso inverso, cio ogni livello elimina (elaborandoli)
l'header ed il trailer di propria competenza, e passa il resto al livello superiore.
Quindi, ogni livello della pila aggiunge informazioni di controllo ai dati ricevuti dal livello superiore. Queste informazioni aggiunte e i dati raggiungono il livello fisico, dove sono trasmessi all'host destinatario,
che elimina le informazioni di controllo, ognuna nel proprio livello, e propaga il messaggio lungo i vari livelli fino al destinatario.
I dati sono trasmessi verticalmente tramite le interfacce, ma ogni livello programmato come se la comunicazione avvenisse in modo orizzontale tramite il protocollo.
Spesso, per ragioni di efficienza, i livelli bassi sono implementati in hardware o firmware.
Un'architettura di rete pu essere:
- proprietaria: basata su scelte arbitrarie del costruttore. Il costruttore non diffonde le sue specifiche;
quindi, nessun altro pu produrre apparati compatibili. (Es. IBM SNA, Digital Decnet Phase IV, Novell
IPX, Appletalk.)
- standard di diritto: basata su specifiche di pubblico dominio (quindi, ogni costruttore pu proporre la
propria implementazione) e approvate da enti internazionali che si occupano di standardizzazione. (Es.
standard IEEE 802 per le reti locali, architettura OSI (Open Systems Interconnection), Decnet Phase V
(conforme allo standard OSI).)
- standard di fatto: basata su specifiche di pubblico dominio (quindi, ogni costruttore pu proporre la
propria implementazione) che, pur non essendo sono state approvate ufficialmente, si sono comunque
largamente diffuse. (Es. architettura TCP/IP, Bluetooth.)

2.6.3 Interfacce e servizi


Ogni livello offre servizi al livello superiore. Il livello inferiore il service provider, quello superiore il
service user.
I servizi sono disponibili tramite dei SAP (Service Access Point). I SAP del livello n, o n-SAP, sono i
punti di accesso nei quali il livello (n+1) pu accedere ai servizi del livello n. Ogni n-SAP ha un indirizzo
che lo identifica univocamente. Ad esempio, nel sistema telefonico la presa a muro del telefono corrispon-

18

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

de al SAP mentre il numero telefonico che identifica quella presa lindirizzo SAP.

Figura 2-13: Livelli adiacenti e service access point


L'informazione che passa dal livello n al livello n-1 attraverso il (n-1)-SAP detta n-PDU (Protocol Data
Unit).
La PDU, quando entra nel livello n-1, diventa una (n-1)-SDU (Service Data Unit).
A questa SDU, nel livello n-1, aggiunta una (n-1)-PCI (Protocol Control Information).
Il tutto diventa una (n-1)-PDU, che verr passata al livello n-2 attraverso un (n-2)-SAP.

Figura 2-14: Passaggio dell'informazione fra livelli


Ci sono due principali classi di servizi offerti da un livello a quello superiore: servizi orientati alla connessione e servizi privi di connessione.
2.6.3.1 Servizi orientati alla connessione
I servizi orientati alla connessione sono modellati secondo il sistema telefonico, dove chi vuole parlare con
qualcuno alza il telefono, compone il numero (stabilisce la connessione), parla (scambia le informazioni) e
poi riattacca (rilascia la connessione).
Analogamente, un servizio orientato alla connessione si sviluppa in 3 fasi:
- Stabilisce una connessione, cio crea opportunamente un "canale di comunicazione" fra la sorgente e la
destinazione, coinvolgendo alcuni elaboratori nel cammino fra sorgente e destinazione.
- Usa la connessione, una volta stabilita, per trasmettere tutti i dati, che arrivano nello stesso ordine di
partenza.
- Rilascia la connessione (attivit che coinvolge di nuovo tutti gli elaboratori sul cammino).
Attenzione! Non confondere la connessione (logica) con il collegamento fisico.
2.6.3.2 Servizi privi di connessione
I servizi privi di connessione sono modellati secondo il sistema postale: ogni lettera viaggia indipendentemente dalle altre, non si sa quando arriva e forse non arriva. Inoltre, due lettere con uguali mittente e destinatario possono viaggiare per strade diverse.
Analogamente, in un servizio privo di connessione, i pacchetti viaggiano indipendentemente dagli altri,
possono viaggiare per strade diverse ed arrivare in ordine diverso da quello di partenza o non arrivare affatto. C' una sola fase: l'invio del pacchetto (che corrisponde all'immissione della lettera nella buca).
2.6.3.3 Affidabilit
Oltre che dallessere connessi oppure no, i servizi sono generalmente caratterizzati dall'essere affidabili
oppure no.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

19

Un servizio affidabile non perde mai dati, cio assicura che ogni dato spedito sar consegnato al destinatario. Ci generalmente richiede che il ricevente invier una conferma alla sorgente per ogni pacchetto ricevuto. Quindi, si introduce ovviamente un sovraccarico, che in certe situazioni desiderato.
Viceversa, un servizio non affidabile non garantisce che i dati spediti arriveranno effettivamente a destinazione. Se la funzionalit di un servizio affidabile non offerta da un livello ma desiderata, dovr essere
fornita da almeno uno dei livelli superiori (vedremo che ci accade spesso).
La scelta del tipo di servizio dipende da fattori contingenti (es.: se il mezzo di comunicazione utilizzato
unidirezionale, il ricevente non pu inviare una conferma e quindi il servizio non affidabile) oppure dipende da caratteristiche specifiche dellapplicazione (es.: in alcuni casi preferiamo una consegna dei dati
veloce anche se con qualche errore).
Alcuni esempi in questo senso sono:
- servizio affidabile e orientato alla connessione: trasferimento di file (non possono mancare pezzi e il
file non pu essere "rimescolato");
- servizio non affidabile con connessione: nelle trasmissioni in tempo reale (quali voce e video) le relazioni temporali fra i bit del flusso devono essere mantenute. meglio qualche disturbo ogni tanto, piuttosto che interruzioni momentanee, ma avvertibili, del flusso di dati.
- servizio non affidabile privo di connessione (datagram service, cio telegramma): distribuzione di
posta elettronica pubblicitaria, non importa se qualche messaggio si perde.
- servizio affidabile privo di connessione (acknowledged datagram service): si invia un breve messaggio e si vuole essere assolutamente sicuri che arrivato.

2.6.4 Primitive di definizione del servizio


Un servizio di livello n formalmente specificato da un insieme di primitive (cio operazioni) che possono essere usate da un'entit di livello n+1 per accedere al servizio. Esse possono indicare al servizio:
- l'azione da compiere (l'informazione viaggia dal livello n al livello n-1);
- cosa fare dopo un'azione svolta dalla peer entity di livello n (l'informazione viaggia dal livello n-1 al livello n).
Un esempio di primitive pu essere il seguente:
Primitiva
Significato
request()
Si chiede al servizio di fare qualcosa.
indication()
Si viene avvertiti, dal servizio, di qualche evento.
response()
Si vuole rispondere ad un evento.
confirm()
La risposta che si attendeva arrivata.
Una connessione fra le peer entity A a B composta da questa azioni:
Entit
Azione
Flusso informazione
Significato
A
Invia una connect.request()
Da livello n a livello (n-1)
A desidera connettersi
B
Riceve una connect.indication() Da livello (n-1) a livello n
Qualcuno vuole connettersi
B
Invia una connect.response()
Da livello n a livello (n-1)
B accetta (oppure no)
A
Riceve una connect.confirm()
Da livello (n-1) a livello n
B ha accettato (oppure no)
Le primitive hanno vari parametri (mittente, destinatario, tipo del servizio richiesto, indicazione se il servizio confermato, ecc.), che possono essere usati dalle peer entity per accordarsi sulle caratteristiche della
connessione. I dettagli dell'accordo fanno parte del protocollo.
Per il servizio confermato abbiamo:
- request();
- indication();
- response();
- confirm().
Per il servizio non confermato abbiamo:
- request();
- indication().
Il servizio di connessione sempre confermato (ovviamente), ma gli altri servizi no.
Vediamo ora un esempio di servizio orientato alla connessione con 8 primitive:
1. connect.request();
2. connect.indication();

20

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

3. connect.response();
4. connect.confirm();
5. data.request(): si cerca di inviare dati;
6. data.indication(): sono arrivati dei dati;
7. disconnect.request(): si vuole terminare la connessione;
8. disconnect.indication(): l'altra entity vuole terminare.
La sequenza di primitive che gestiscono una connessione la seguente:

Figura 2-15: Esempio di attivazione, uso e rilascio di una connessione

2.6.5 Aspetti di progetto dei livelli


Nella progettazione dei livelli vanno prese svariate decisioni, relative a:
- Meccanismi di identificazione di mittente e destinatario (cio indirizzamento), in ogni livello.
- Regole per il trasferimento dati a basso livello, che avviene in una sola direzione (modalit simplex),
oppure in due direzioni ma non contemporaneamente (modalit half-duplex), oppure in due direzioni
contemporaneamente (modalit full-duplex).
- Meccanismi per il controllo degli errori di trasmissione (ignorarli, rilevarli, correggerli, avvertire il
mittente);
- Meccanismi per la ricostruzione dell'ordine originario dei dati.
- Meccanismi per regolare le velocit di sorgente e destinazione.
- Decisioni sul numero (minimo e massimo) dei messaggi da inviare, e su come eventualmente frammentarli.
- Meccanismi di "mescolamento" (multiplexing) di varie "conversazioni" su un'unica connessione
(quando l'individuazione della connessione costosa).
- Meccanismi di routing dei messaggi quando esistono pi strade alternative, ed eventualmente di suddivisione di una "conversazione" su pi connessioni contemporaneamente (per aumentare la velocit di
trasferimento dei dati).

2.7 La realt nel mondo delle reti


Le due pi importanti realt nel mondo delle reti sono il modello di riferimento ISO/OSI e larchitettura
TCP/IP.

2.7.1 Modello OSI


Per standardizzare i protocolli utilizzati dai vari livelli, l'Organizzazione per gli standard internazionali
(ISO) ha creato il modello di riferimento ISO/OSI (Open System Interconnection), che studia il collegamento tra sistemi aperti (cio, sistemi che possono colloquiare tra loro, a differenza dei "sistemi chiusi" o
"sistemi proprietari"). La comunicazione possibile soltanto se entrambi i partner di comunicazione sono
organizzati allo stesso modo. Lo standard non definisce protocolli specifici (che sono stati definiti successivamente, in documenti separati), e per questo motivo non un'architettura di rete.
I principi seguiti durante la progettazione del modello OSI sono:
- ogni livello deve avere una funzione ben definita;
- La scelta dei livelli deve minimizzare il passaggio delle informazioni fra livelli, il numero di funzioni in
un livello e il numero di livelli.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

21

Figura 2-16: Il modello OSI


Il modello OSI possiede 7 livelli: fisico, data link, network, trasporto, sessione, presentazione, applicazione.
- Livello fisico: Il suo compito principale spedire e ricevere bit sul canale di trasmissione. Ignora la semantica del messaggio.
Gli aspetti di progettazione sono le interfacce meccaniche ed elettriche e il mezzo di trasmissione fisica
(che sotto il livello fisico).
- Livello di data link: Il suo compito principale fornire una comunicazione priva di errori di trasmissione non segnalati. Per fare questo, il livello di data link scompone i pacchetti ricevuti dal livello soprastante in frame e aggiunge ai frame alcuni bit di controllo all'inizio e alla fine. I frame sono spediti in
sequenza; il trasmettitore attende un messaggio di avvenuta ricezione dei frame inviati e li ritrasmette in
caso di errori.
Nelle reti broadcast, questo livello controlla anche l'accesso al canale condiviso; questo controllo gestito dal sottolivello di accesso al mezzo di comunicazione (MAC).
- Livello di network: I suoi compiti sono: instradare i pacchetti lungo la subnet; controllare le congestioni del traffico, interconnettere reti diverse.
Nelle reti broadcast il problema del routing semplice, quindi il livello di network quasi assente.
Inoltre, se le due reti collegate sono di tipi diversi, questo livello converte i dati.
- Livello di trasporto: il primo livello sopra la sottorete di comunicazione ed quindi il primo che collega punto-a-punto la sorgente e la destinazione. (Ai livelli inferiori, i protocolli collegano un host sorgente con i suoi immediati vicini e non con l'host destinazione, che pu essere separato da diversi router.) Il suo compito suddividere i dati ricevuti dal livello superiore in piccole unit, trasmettere queste
unit al livello di network e assicurarsi che tutti i frammenti giungano correttamente a destinazione.
- Livello di sessione: Il suo compito permettere agli utenti su host diversi di stabilire una sessione, cio
una sequenza di operazioni in un tempo continuato finalizzata a trasportare i dati e ad offrire servizi avanzati utili ad alcune applicazioni. (Es.: trasferire archivi tra due host). Un suo servizio la gestione
del controllo del dialogo che pu essere unidirezionale, half-duplex o full-duplex. Un altro servizio la
sincronizzazione delle operazioni.
- Livello di presentazione: Gestisce la sintassi e la semantica delle informazioni. Suoi compiti sono: la
gestione di strutture di tipi di dati astratte che, utilizzando una codifica standard, possono essere tradotte
dinamicamente; la conversione dei dati dalla rappresentazione usata dalla macchina (ASCII, EBCDIC,
..) alla rappresentazione standard della rete e viceversa.

22

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

- Livello di applicazione: Contiene i software applicativi e i protocolli necessari per offrire servizi agli
utenti: il trasferimento file, la posta elettronica, le conferenze elettroniche, i database distribuiti, ecc.
Un router gestisce soltanto la parte della rete composta dai primi tre livelli, detta sottorete di comunicazione (subnet).
Spesso, le competenze sui livelli gestiti dai vari elaboratori sul cammino dei dati sono visualizzate mediante diagrammi simili al seguente:

Figura 2-17: Rappresentazione schematica dei livelli gestiti lungo un cammino

2.7.2 Internet Protocol Suite


La rete Internet ha avuto origine, attraverso varie evoluzioni, da Arpanet, nato nel 1969 da un progetto di
ricerca finanziato dal Department of Defense americano. Lo scopo era creare una rete estremamente affidabile anche in caso di catastrofi (o eventi bellici) che ne eliminassero una parte.
Nel corso dello sviluppo, per integrare tipi diversi di reti, divent necessaria una nuova architettura, mirata
a interconnettere molteplici reti (internetwork). L'architettura fu detta pi tardi Internet Protocol Suite, o
architettura TCP/IP, o TCP/IP reference model. Formalmente non un modello, perch specifica definitivamente i protocolli, mediante documenti detti RFC (Request For Comments). Il nome deriva da due
protocolli descritti dal modello: il protocollo IP (Internet Protocol) e il protocollo TCP (Transmission
Control Protocol).
I requisiti stabiliti (estrema affidabilit e tolleranza ai guasti, possibilit di interconnessione di pi reti) nella progettazione fecero scegliere una rete a commutazione di pacchetto, che individua una linea quando
serve a un pacchetto a commutazione di pacchetto, e basata su un livello di network privo di connessione.
Sinteticamente, i livelli di questo modello sono:
- Host to network: corrisponde ai livelli 1 e 2 del modello OSI. L'architettura non specifica il livello pi
basso, e utilizza il livello pi basso disponibile tra le varie piattaforme hw e conforme agli standard.
Specifica soltanto che l'host deve essere inviare pacchetti IP sulla rete.
- Internet: molto simile al livello di network del modello OSI. Offre un servizio privo di connessione, e
definisce un formato ufficiale dei pacchetti ed il protocollo IP. Sposta i pacchetti di un host fino all'host
destinatario, che pu essere situato anche in un'altra rete; i pacchetti dello stesso messaggio possono
percorrere strade differenti.
- Livello di trasporto: corrisponde al livello di trasporto del modello ISO/OSI, e consente la conversazione delle peer entity sugli host sorgente e destinazione. Definisce due protocolli:
- TCP (Transmission Control Protocol): un protocollo connesso ed affidabile (cio, tutti i pacchetti
arrivano, e nell'ordine giusto). Frammenta il flusso in arrivo dal livello superiore in messaggi separati
e li passa al livello Internet. In arrivo, ricompone i pacchetti in un flusso di output per il livello superiore.
- UDP (User Datagram Protocol): un protocollo non connesso e non affidabile; i pacchetti arrivano
in un ordine qualsiasi o non arrivano affatto. Si usa per applicazioni "leggere" e in tempo reale (es.,
televisione).
- Livello di applicazione: il modello TCP/IP non prevede i livelli sessione e presentazione; quindi, sopra
il livello di trasporto c' direttamente il livello di applicazione, che contiene i protocolli usati dalle applicazioni reali, compresi quelli che realizzano le funzioni del 5 e del 6 livello nella pila OSI.
I primi protocolli furono:
- Telnet: terminale virtuale. Consente di usare un computer come terminale di un computer remoto.
- FTP (File Transfer Protocol): file transfer. Consente la copia di file.
- SMTP (Simple Mail Transfer Protocol) e POP (Post Office Protocol): posta elettronica. Consentono a un client di posta elettronica, rispettivamente, di inviare un'e-mail al server o di recuperarla

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

23

dal server.
Successivamente se ne sono aggiunti altri, fra cui:
- DNS (Domain Name Service): converte il nome di host in un indirizzo IP; ci consente di identificare ogni computer della rete mediante una stringa evocativa (invece di una sequenza numerica).
- NNTP (Network News Transfer Protocol): trasferimento di articoli per i newsgroup. Consente la
diffusione di notizie a un newsgroup.
- HTTP (HyperText Transfer Protocol): alla base del Word Wide Web. Consente il dialogo tra un
client e un server web.
I protocolli nell'architettura TCP/IP si collocano come segue:

Figura 2-18: Relazione fra i livelli e i protocolli dell'architettura TCP/IP


La relazione tra i livelli TCP/IP e quelli OSI pu essere rappresentata quindi in questo modo:

Figura 2-19: Relazione fra i livelli OSI e TCP/IP

2.7.3 Confronto fra modello di riferimento OSI e architettura TCP/IP


Entrambi i progetti si basano sul concetto di pila di protocolli indipendenti e prevedono funzionalit simili
per i vari livelli. OSI per nasce come modello di riferimento (utilissimo per le discussioni generali); i protocolli sono stati definiti successivamente. Invece, TCP/IP nasce insieme ai protocolli; il modello di riferimento stato definito successivamente.
Poich il modello OSI nato prima dei suoi protocolli (dopo una mediazione tra i diversi costruttori),
molto generale (vantaggio), ma i suoi livelli sono stati progettati con insufficiente esperienza (svantaggio).
Ad esempio:
- Il livello data-link fu pensato soltanto per linee punto-a-punto; successivamente si dovuto dividerlo in
un sottolivello per gestire reti broadcast.
- Non ci fu l'idea di internetworking, perch si pensava ad una rete separata statale per ogni nazione.
I protocolli dell'architettura TCP/IP sono invece il punto di partenza del progetto, quindi l'architettura
molto efficiente (vantaggio) ma il modello di riferimento non generale, perch descrive soltanto questa
particolare architettura ed quindi difficile rimpiazzare i protocolli se necessario (svantaggio).
2.7.3.1 Confronto fra pile di protocolli OSI e TCP/IP
I protocolli OSI non si sono affermati sul mercato per una serie di ragioni:
- infelice scelta di tempo: i protocolli sono stati definiti troppo tardi, quando cio i protocolli TCP/IP si
erano gi considerevolmente diffusi. Le aziende non se la sono sentite di investire risorse nello sviluppo
di una ulteriore architettura di rete.
- infelici scelte tecnologiche: la divisione in sette livelli (e i relativi protocolli) stata dettata pi dall'architettura SNA dell'IBM che da considerazioni di progetto. Quindi, il progetto presenta vari difetti:
complesso e, quindi, difficile da implementare; i livelli sessione e presentazione sono inutili; le attribuzioni di funzioni ai vari livelli sono non ottimali.
- infelice implementazione: le prime realizzazioni erano lente ed inefficienti; invece, i protocolli dell'architettura TCP/IP erano efficienti (e per di pi gratis!), e quindi hanno goduto di un crescente supporto

24

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

che li ha diffusi e migliorati ulteriormente.


Anche l'architettura TCP/IP ha qualche problema:
- l'architettura TCP/IP non un modello (descrive soltanto s stessa);
- non distingue chiaramente i protocolli dai servizi e dalle interfacce, e ci complica l'evoluzione dell'architettura;
- alcune scelte di progetto sono diventate pesanti (ad es., indirizzi IP a soli 32 bit).
In conclusione:
- OSI un ottimo modello, ma i suoi protocolli hanno avuto poco successo.
- TCP/IP un'ottima (per ora) architettura di rete, ma non un modello.

2.7.4 Autorit nel mondo degli standard


Queste sono le principali autorit nel mondo degli standard che riguardano in qualche modo le reti:
- CCITT (Comit Consultatif International de Telegraphie et Telephonie): organismo internazionale che
emette le specifiche tecniche che devono essere adottate dalle PTT (Post, Telegraph & Telephone administration). entrato da poco nell'ITU (International Telecomunication Union);
- ISO (International Standard Organization): il principale ente di standardizzazione internazionale, che si
occupa anche di reti;
- IEEE (Institute of Electrical and Electronic Engineers): organizzazione professionale mondiale degli ingegneri elettrici ed elettronici; ha gruppi di standardizzazione sulle reti;
- IRTF (Internet Research Task Force): comitato rivolto agli aspetti di ricerca a lungo termine in merito
alla rete Internet;
- IETF (Internet Engineering Task Force): comitato rivolto agli aspetti di ingegnerizzazione a breve termine della rete Internet;
- IAF (Internet Architecture Board): comitato che definisce i nuovi standard da adottare per Internet, di
solito proposti da IETF o IRTF.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

25

3 Progettazione di applicazioni di rete


Consideriamo la situazione di riferimento:
Applicazione

Applicazione
PROTOCOLLO
APPLICATIVO

Trasporto

Trasporto

PROTOCOLLO DI
TRASPORTO

SOTTORETE
COMUNICAZIONE

DI

Figura 3-1: Interfaccia trasporto-applicazione


Per realizzare applicazioni eseguibili in rete, possiamo ignorare come funziona la rete, ma dobbiamo:
- imparare ad utilizzare linterfaccia trasporto-applicazione
- progettare il protocollo applicativo, cio il modo in cui le due applicazioni si scambiano informazioni.

3.1 Interfaccia trasporto-applicazione


Le interfacce di trasporto dellInternet Protocol Suite sono dette socket (=presa elettrica).
Un socket un punto di accesso alla comunicazione in una rete TCP/IP, ed identificato da due numeri:
- un indirizzo IP, che identifica un computer della rete;
- un numero di porta TCP, che identifica un'applicazione/servizio sul computer.
Ogni computer comunica mediante un socket. Tra due socket si crea una connessione.
Un socket visto dallapplicazione come una coppia di file, uno in scrittura e uno in lettura; quindi, un
processo pu dialogare con un processo remoto facendo operazioni di scrittura (=invio di dati sulla rete) e
lettura (=ricezione di dati dalla rete) su questi due file. In analogia ai file, i socket vanno aperti e chiusi.
Linterfaccia dovrebbe essere indipendente dal protocollo, ma in genere diversi protocolli corrispondono a
diversi tipi di servizi offerti dalle entit, e questo condiziona le caratteristiche delle relative interfacce.
I due protocolli TCP e UDP sono gestiti da socket di tipo diverso.

3.2 Il paradigma client-server


In genere le applicazioni di rete sono di tipo client-server. Nella tabella seguente riportato il comportamento di un tipico server e di un tipico client nel caso di servizi orientati alla o privi di connessione:
SERVIZIO ORIENTATO
SERVER
Apri socket
Loop infinito
Attendi chiamata
Finch c' connessione
Leggi
Scrivi
Chiudi connessione

ALLA CONNESSIONE
CLIENT
Apri socket
Connettiti a server
Finch c' connessione
Scrivi
Leggi
Chiudi connessione

SERVIZIO PRIVO DI CONNESSIONE


SERVER
CLIENT
Apri socket
Apri socket
Leggi
Scrivi
Scrivi
Leggi (aspettando)
Chiudi socket Chiudi socket

3.3 Realizzare applicazioni di rete con Java


Un'applicazione Java funzionante in rete deve seguire le seguenti fasi:
- Apertura della connessione. Esistono per questo due classi:
- Socket: per un client che vuole connettersi ad un server in ascolto.
- ServerSocket: per un server, che vuole ascoltare richieste di connessione.
- Dialogo per mezzo della connessione. Con opportune istruzioni, dal Socket aperto si ottengono:
- InputStream per ricevere i dati dalla peer entity;
- OutputStream per inviare i dati alla peer entity;

26

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

- Chiusura della connessione. Con opportune istruzioni, si chiudono:


- l'InputStream;
- l'OutputStream;
- il Socket (per ultimo, preferibilmente).

3.3.1 Classe Socket


La creazione di un oggetto Socket, con opportuni parametri, rappresenta l'estremit locale della connessione TCP con l'host remoto voluto. Se la creazione fallisce, lanciata una eccezione (alcuni dei motivi
possibili sono: host irraggiungibile, host inesistente, nessun processo in ascolto sul server). Dall'oggetto
Socket creato si costruiscono i due stream (di input e output) necessari per comunicare.
3.3.1.1 Costruttore
Uno dei due costruttori disponibili :
public Socket(String host, int port) throws IOException;

dove host un nome DNS o un indirizzo IP in notazione puntata decimale, e port il numero di porta
TCP sulla quale deve esserci un processo server in ascolto.
Ad esempio:
mySocket1 = new Socket("cesare.dsi.uniroma1.it", 80);
mySocket2 = new Socket("151.100.17.25", 80);

3.3.1.2 Metodi pi importanti


- public InputStream getInputStream() throws IOException;
Ritorna un InputStream per leggere i dati inviati dalla peer entity.
- public OutputStream getOutputStream() throws IOException;
Ritorna un OutputStream per inviare i dati alla peer entity.
- public void close() throws IOException;
Chiude il Socket (e quindi questa estremit della

connessione TCP).

- public int getPort() throws IOException;

Ritorna il numero della porta all'altra estremit della connessione.


- public int getLocalPort() throws IOException;

Ritorna il numero della porta di questa estremit della connessione.

3.3.2 La classe ServerSocket


La creazione di un ServerSocket, seguita da una opportuna istruzione di "ascolto", mette l'applicazione in
attesa di una richiesta di connessione. Quando questa arriva, il ServerSocket crea un Socket che rappresenta l'estremit locale della connessione appena stabilita. Da questo oggetto Socket si costruiscono gli
stream necessari alla comunicazione.
3.3.2.1 Costruttori
Uno dei due costruttori disponibili :
public ServerSocket(int port) throws IOException;
dove port il numero della porta TCP sulla quale il ServerSocket

si mette in ascolto. (Attenzione! Per le


proprie applicazioni utilizzare porte con numeri da 1024 in su; gli altri valori sono usati dal sistema.)
3.3.2.2 Metodi pi importanti
- public Socket accept() throws IOException;
Questo metodo sospende il processo (server) finch un altro processo (client) non si connette. Quando
c' la connessione, il metodo ritorna un Socket che rappresenta l'estremit locale della connessione.
- public void close() throws IOException;
Chiude il ServerSocket (e quindi nessuno ascolter su quella porta).
- public int getLocalPort() throws IOException;
Ritorna il numero della porta su cui il ServerSocket in ascolto.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

27

Figura 3-2: Connessione a un ServerSocket

3.3.3 Esempio di server


Progettiamo un semplice Server che:
- accetta una sola connessione sulla porta 5000.
- invia al Client tutto ci che riceve.
Il codice il seguente.
import java.io.*;
import java.net.Socket;
public class SimpleServer {
public static void main(String args[]) {
try {
String inputLine;
ServerSocket server= new ServerSocket(5000);
System.out.println("Sto aspettando una connessione...");
Socket client= server.accept();
server.close();
System.out.println("Accettata la connessione da un client.");
DataInputStream is= new DataInputStream(client.getInputStream());
PrintStream os= new PrintStream(client.getOutputStream());
os.println("From SimpleServer: Welcome!");
while ((inputLine = is.readLine()) != null) {
System.out.println("Ricevuto: " + inputLine);
os.println("Da SimpleServer: " + inputLine);
} // while
is.close();
os.close();
client.close();
System.out.println("Connessione chiusa.");
} catch (IOException e) {
e.printStackTrace();
} // try-catch
} // main
} // SimpleServer

3.4 Esercizi
1. Scrivere un semplice client che dialoghi con il server precedente.
2. data una classe SocketServer parzialmente progettata. Questa classe ha due campi di esemplare
streamIn e streamOut correttamente inizializzati che sono rispettivamente lo stream d'input e lo stream

28

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

d'output del server collegato correttamente ad un client cl.


A. Progettare un metodo void togliVocali(?) che attende una stringa str dal client cl. Se str inizia
con carattere non alfabetico, il server esce dal metodo togliVocali; altrimenti, il server invia a cl la
stringa str privata delle eventuali vocali e poi ripete l'attesa.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

29

4 Il livello fisico
Questo capitolo illustra gli aspetti principali del livello fisico, che riguardano:
- la teoria della trasmissione dei dati, per capire i limiti fondamentali imposti dalla fisica;
- le caratteristiche dei mezzi trasmissivi pi comuni;
- le caratteristiche del sistema telefonico.

4.1 Basi teoriche per la trasmissione dei dati


Per trasmettere l'informazione a distanza, dobbiamo variare opportunamente una caratteristica fisica del
mezzo usato per la trasmissione. Questa variazione si propaga, con una certa velocit, lungo il mezzo di
trasmissione e, dopo un certo tempo arriva, all'altra estremit del mezzo, dove pu essere misurata.
Ad esempio, se il mezzo un cavo, possiamo variare la tensione in un'estremit. Tale variazione di tensione sar successivamente misurata all'altra estremit.
Quindi, un segnale una grandezza fisica variabile nel tempo la cui variazione determina
uninformazione.
Questa definizione applicabile anche nella trasmissione di dati non elettrici. Ad esempio, la voce di una
persona produce, mediante il proprio sistema vocale, un'onda di pressione nell'aria. Quando quest'onda arriva alle orecchie di un ascoltatore, tradotta dal suo sistema uditivo ed percepita come sequenza di parole, quindi come informazione. In questo caso, la grandezza fisica variabile nel tempo che propaga l'informazione la pressione dell'aria.
Quale differenza c' tra chi ascolta la voce di una persona e chi sente un rumore, come ad esempio il rumore del mare? Entrambi ascoltano una variazione di pressione dell'aria, ma chi sente il rumore del mare riceve un'informazione nulla. Infatti, il rumore del mare varia in modo prevedibile, cio " sempre lo stesso";
quando siamo vicini al mare, il nostro cervello inizialmente sente il rumore del mare, ma poi inizia ad
ignorarlo, per concentrarsi su altri suoni, che potrebbero trasportare informazione.
Nella teoria dell'informazione, l'informazione contenuta in un messaggio inversamente proporzionale alla
probabilit di ricevere quel messaggio. Ad esempio, chi chiede aiuto per cercare un gatto smarrito e lo descrive dicendo che ha quattro zampe, non fornisce nessuna informazione utile per distinguere quel gatto da
tutti gli altri.
I mezzi trasmissivi sono sostanzialmente di tre tipi:
- mezzi elettrici (cavi): il fenomeno fisico usato per la propagazione l'energia elettrica; normalmente,
la variazione nel tempo della tensione tra due poli;
- mezzi wireless (onde radio): il fenomeno fisico usato l'onda elettromagnetica (una combinazione di
un campo elettrico e di un campo magnetico variabili) che si propaga nello spazio e che produce a distanza una corrente elettrica in un dispositivo ricevente (antenna);
- mezzi ottici (LED, laser e fibre ottiche): il fenomeno fisico usato la luce.
La variazione, rispetto al tempo, del valore del fenomeno fisico pu essere rappresentata nel dominio del
tempo, cio mediante una funzione matematica f(t) avente:
- per dominio, l'insieme dei tempi (che rappresenta l'intervallo di tempo durante il quale il segnale trasmesso);
- per codominio, l'insieme delle ampiezze; la natura del codominio dipende dal tipo di segnale. Ad esempio, se il segnale trasmesso una tensione elettrica variabile nel tempo, il codominio pu essere l'intervallo di tensione compreso tra -5V e 5V.
Un segnale pu essere analogico oppure numerico o digitale.
- Un segnale detto analogico se l'insieme dei tempi e quello delle ampiezze sono insiemi continui.
Quindi, la sua ampiezza varia gradualmente in un intervallo costituito da un numero infinito di possibili
valori.
- Un segnale detto numerico o digitale se l'insieme dei tempi e quello delle ampiezze sono insiemi discreti. Quindi, la sua ampiezza varia bruscamente da un valore all'altro; tipicamente, i valori possibili
dell'ampiezza sono molto pochi (da due a qualche decina).
Per distinguere formalmente i segnali analogici da quelli numerici, dovremmo introdurre alcuni concetti
matematici relativi alla cardinalit degli insiemi. Questi concetti sono riportati negli approfondimenti.
Poich il tempo una grandezza continua, i segnali in natura sono sempre analogici. Normalmente i segnali digitali sono ottenuti dai segnali analogici tramite un procedimento di conversione.

30

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

4.1.1 Analisi armonica


La rappresentazione nel dominio del tempo di un segnale molto intuitiva, ma pu essere fatta soltanto
mediante un grafico. Ci causa due svantaggi:
- Un grafico richiede una quantit di memoria elevata per essere rappresentato.
- Un grafico molto difficile da elaborare in modo automatico.
Quindi, per studiare un segnale, preferibile rappresentare i segnali in altro modo: scegliamo la rappresentazione nel dominio della frequenza, che un criterio alternativo ma equivalente a quello nel dominio del
tempo.
Es. Consideriamo il suono prodotto da un diapason. La vibrazione del diapason genera un suono a una frequenza predefinita, in genere 440 hz che corrisponde alla nota LA. Infatti, un diapason usato dai musicisti per accordare i propri strumenti

Figura 4-1: un diapason e la forma donda prodotta.


Notiamo che la forma d'onda (nel dominio del tempo) del diapason una sinusoide; quindi, (in base a ragionamenti formali riportati negli approfondimenti) la rappresentazione del segnale nella frequenza
"memorizzabile completamente" mediante la frequenza (ad es., 440 Hz) e l'ampiezza (ad es., 10 dB) del
segnale.
Invece, la stessa nota LA prodotta da un pianoforte ha una forma d'onda molto diversa.

Figura 4-2: nota LA del pianoforte nel dominio del tempo


@

Un segnale periodico (come un suono) scomponibile nella somma di "molte" vibrazioni, ognuna avente
una sua frequenza e una sua intensit. La diversit tra i timbri degli strumenti causata proprio dal numero
e dall'ampiezza di queste vibrazioni generate dal segnale sonoro. Quindi, noi possiamo "memorizzare
completamente" un suono mediante la frequenza e l'ampiezza di ogni vibrazione.

Figura 4-3: nota LA del pianoforte nel dominio della frequenza


Si dimostra (vedi negli approfondimenti) che un segnale g(t) di durata T e variabile nel tempo equivale ad
una somma di funzioni sinusoidali, dette armoniche. Si pu quindi rappresentare il segnale g(t), anzich
nel dominio del tempo, nel dominio della frequenza attraverso il suo spettro di frequenze, ossia attraverso la sua scomposizione in armoniche. In particolare, si dimostra che:
1. La frequenza di ogni armonica multipla della frequenza fondamentale f=1/T; pi precisamente, l'armonica di ordine n ha frequenza n*f.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

31

2. Le ampiezze delle armoniche tendono a zero al tendere dellordine dellarmonica di n a +. (Attenzione: Le ampiezze non sono necessariamente decrescenti, per "mediamente" si avvicinano a 0 quando n
aumenta.)

Figura 4-3: Un segnale e il suo spettro di frequenze


I due punti precedenti sono molto importanti perch significano che un segnale pu essere rappresentato
"abbastanza bene" (ma non completamente) nel dominio del frequenza conoscendo soltanto la frequenza
fondamentale e le ampiezze delle prime nArm armoniche, dove nArm l'ultima armonica (da individuare
opportunamente) tra quelle che contribuiscono significativamente alla forma del segnale.
inutile memorizzare la frequenza di ogni armonica, perch sono tutte multiple di quella fondamentale.
Inoltre, "quasi inutile" memorizzare le ampiezze delle armoniche dopo la nArm-esima perch queste ampiezze contribuiscono pochissimo alla forma del segnale che quindi ricostruibile con un errore molto piccolo anche senza queste armoniche.
Es. Un segnale ha frequenza 2 KHz e le sue armoniche valgono 32, 8, 16, 4, 8, 2, 4, 1, 2, 0, 1, 0, 0, ..
Le frequenze di ogni armonica sono facilmente individuabili. (Ad es., l'armonica 3 ha ampiezza 16 e frequenza 2*3= 6 KHz.)
Inoltre, il segnale ricostruibile con buona approssimazione trascurando le armoniche dall'ottava (che valgono 1, 2, 0, 1, 0, 0, ..) in poi, perch le loro ampiezze sono molto minori delle armoniche precedenti.
@

Il numero maggiore di armoniche necessarie a ricostruire un segnale maggiore per un segnale che varia
bruscamente nel tempo rispetto ad uno segnale che varia lentamente.

4.1.2 Conversione analogico digitale


La conversione analogico digitale il procedimento che converte un segnale analogico in uno numerico
mediante due fasi distinte: il campionamento e la quantizzazione.

Figura 4-4: Conversione A/D


4.1.2.1 Campionamento
Il campionamento discretizza l'insieme dei tempi, cio memorizza il segnale soltanto in alcuni istanti tra
loro equidistanti (e non in ogni istante); quindi, il segnale campionato costituito dalla sequenza dei valori

32

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

del segnale originario prelevati negli istanti considerati, che prendono appunto il nome di campioni.
Es. Un segnale ha una durata di 10 secondi ed campionato con una frequenza di 100 campioni al secondo (cio, campionato ogni 10 millisecondi).
Il segnale campionato conterr una sequenza di 100 * 10= 1000 numeri.
@

4.1.2.2 Quantizzazione
La quantizzazione discretizza l'insieme delle ampiezze. Pi precisamente, converte il valore di ogni campione (che appartiene all'insieme continuo delle ampiezze) in un valore memorizzabile soltanto mediante
un numero finito nBit di bit.
Per ottenere ci, consideriamo l'intervallo (compreso tra un valore minimo e un valore massimo) composto
dai valori possibili dei campioni; poi, dividiamo l'intervallo in pow(2,nBit) sottointervalli, ad ognuno dei
quali associamo un valore discreto, ottenuto mediante gli nBit stabiliti in precedenza. Adesso, convertiamo
(cio, quantizziamo) ogni campione dal suo valore iniziale continuo al valore discreto che abbiamo precedentemente associato al sottointervallo di appartenenza del campione iniziale.
La quantizzazione causa un errore di quantizzazione, che la differenza tra il valore quantizzato e il valore iniziale. L'insieme di questi errori conduce al rumore di quantizzazione.
Se decidiamo di associare ad ogni sottointervallo il valore uguale alla media tra il valore minimo e il valore
massimo del sottointervallo, allora l'errore massimo la met della larghezza massima tra tutti i sottointervalli.

4.1.3 Trasmissione dei segnali sui mezzi fisici


La conversione A/D trasforma il segnale originale in una sequenza di numeri memorizzati in una sequenza
di bit.
Teoricamente, un segnale pu essere trasmesso sia se analogico sia se digitale; per, praticamente, un
segnale pu essere trasmesso soltanto se affidato ad un fenomeno fisico (ad es., una tensione elettrica)
che sempre analogico. Un segnale fisico infatti non pu passare istantaneamente da un valore ad un altro,
ma impiega un tempo (anche se molto piccolo), e nel passaggio assume ogni valore intermedio; quindi, in
realt, sia il tempo che le ampiezze sono continui. Queste passaggi molto rapidi da un valore all'altro producono componenti ad alta frequenza nello spettro del segnale digitale.

Figura 4-5: Spettro del segnale digitale


Qualsiasi mezzo trasmissivo altera un segnale a causa della attenuazione, che riduce l'ampiezza di ogni
armonica. L'attenuazione dipende dalla frequenza; se l'attenuazione fosse uguale per tutte le frequenze, il
segnale ricevuto sarebbe ridotto in ampiezza ma manterrebbe la sua forma originaria. Purtroppo, le armoniche subiscono attenuazioni differenti (perch hanno frequenze differenti), e quindi il segnale distorto,
cio cambia forma.
Tipicamente, l'attenuazione "bassa" fino ad una data frequenza (cio, le armoniche con frequenze inferiori a questa frequenza passano il mezzo quasi inalterate) ed "alta" oltre questa frequenza.
La larghezza di banda l'intervallo di frequenze dove l'ampiezza del segnale in uscita dal mezzo almeno il 50% dell'ampiezza del segnale in ingresso.
FIS-1

Figura 4-5: Larghezza di banda di un mezzo


La larghezza della banda una propriet fisica del mezzo che dipende:
- dalle caratteristiche fisiche del mezzo trasmissivo (materiale, larghezza, lunghezza);
- dalla presenza di filtri usati per limitare la banda del segnale, in modo da eliminare le frequenze "inutili" del segnale.
Questi filtri consentono a pi segnali di condividere un mezzo usando zone differenti della banda del mez-

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

33

zo, e questo migliora l'efficienza complessiva del sistema di trasmissione. Ci significa che qualche segnale usa l'intervallo di frequenza che parte dalla frequenza 0 e qualche altro segnale (shiftato) parte da una
frequenza maggiore di 0.
FIS-1

Figura 4-6: Segnale shiftato


La larghezza della banda ancora la larghezza delle frequenze che sono passate (con un'ampiezza di almeno il 50%) e l'informazione che pu essere trasportata dipende solo da questa larghezza e non dalle frequenze iniziale e finale. I segnali che vanno dalla frequenza 0 a quella massima sono detti segnale in banda base. I segnali che sono shiftati per occupare un intervallo pi alto di frequenze sono detti segnale in
banda passante.
Ad esempio, nelle linee telefoniche analogiche la banda passante 3,1 kHz (da 300 Hz a 3.400 Hz). Il
filtro a 3.400 Hz elimina le frequenze superiori perch sono inutili per la trasmissione della voce. In questo
modo, lo stesso canale pu trasportare una comunicazione nell'intervallo da 0 a 4.000 Hz (c' un'area di lasco per evitare interferenze), un'altra comunicazione nell'intervallo da 4.000 a 8.000 Hz, etc.
Consideriamo ora un esempio: la trasmissione del carattere Ascii 'b' codificato in un byte. Il frame di bit da
trasmettere 01100010.

Figura 4-4: Ricostruzione di un segnale dalle sue armoniche


La parte sinistra della fig.(a) mostra i valori in volt che escono dall'host mittente e la parte destra mostra la
sua rappresentazione nel dominio della frequenza.
Supponiamo di avere una larghezza di banda cos piccola da trasmettere soltanto le frequenze pi basse. La
fig.(b) mostra il segnale in uscita da un canale che trasmette soltanto l'armonica 1. Analogamente, le
fig.(c)-(e) mostrano il segnale in uscita da un canale che ha una larghezza di banda pi alta.
Per le trasmissioni digitali, la finalit di ricevere un segnale sufficientemente simile a quello iniziale. Ci
succede nel caso della fig.(e), e quindi uno spreco trasmettere pi armoniche per ricevere un segnale pi
accurato.
Es. Una successione s(t) di byte trasmessa ad una velocit di "velBit" bit/sec mediante un canale telefonico normale (avente una banda passante di 3100 Hz).
Sol.
velByte (Velocit di trasmissione del segnale composto da un byte)
:= velBit / 8 Hz.

34

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

nArm (Numero di armoniche che attraversano il canale)


-> nArm * velByte <= 3100
-> nArm * velBit / 8 <= 3100
-> nArm <= 24000 / velBit Hz.

Quindi, se "velBit" abbastanza grande (cio, se il segnale abbastanza veloce), il numero di armoniche
che attraversano il canale (e che sono ricevute) insufficiente a ricostruire il segnale originario. Sintetizziamo la situazione al variare di "vBit".
velBit
(bit/sec)
300
4800
9600
19200
38400

Tempo
(msec)
26.67
1.67
0.83
0.42
0.21

Freq. dell'armonica 1
(Hz)
37.5
600
1200
2400
4800

N. di armoniche
ricevute
80
5
2
1
0

Ricostruzione
Possibile
Possibile
Difficile
Quasi impossibile
Impossibile

L'esempio precedente dimostra che una larghezza di banda limitata riduce la velocit di trasmissione di un
segnale binario, anche se il canale completamente privo di rumore. Tuttavia, se usiamo pi livelli di tensione per codificare un segnale (invece di usare soltanto i due livelli di un segnale binario), otteniamo una
velocit pi alta di trasmissione. Vedremo pi avanti questa soluzione.
La locuzione larghezza di banda ha un significato differente tra gli elettronici e gli informatici.
Per gli elettronici, la larghezza di banda (analogica) (come descritto precedentemente) una quantit misurata in Hz.
Per gli informatici, la larghezza di banda (digitale) la velocit massima dei dati in un canale, ed misurata in bit/sec. La velocit dei dati dipende dalla larghezza di banda analogica del canale fisico usato per
trasmissioni digitali, e c' una relazione tra questi due concetti, come vedremo pi avanti. In questo libro, il
contesto chiarir se intendiamo larghezza di banda analogica (Hz) oppure digitale (bit/sec).

4.1.4 Teoremi sui limiti di trasmissione di informazione


Sembrerebbe intuitivo che una frequenza maggiore di campionamento produrr un segnale campionato che
rappresenta meglio" il segnale di partenza; per, questo non sempre vero. Vediamo due teoremi fondamentali che descrivono i limiti per la trasmissione delle informazioni.
4.1.4.1 Teorema di Nyquist
Nyquist (1924) ha dimostrato che se un qualsiasi segnale attraversa un filtro di larghezza di banda B, il segnale filtrato (che quindi ha banda massima B) pu essere completamente ricostruito mediante un campionamento effettuato (esattamente) 2*B volte al secondo. Un campionamento pi veloce inutile perch le
componenti delle frequenze (pi alte) che questo campionamento potrebbe memorizzare sono gi state eliminate dal filtro. Se il segnale rappresentato mediante nLiv livelli discreti differenti, il teorema di
Nyquist stabilisce che:
Massima velocit dei dati = 2 * B * log (nLiv, 2) bit/sec
Per esempio, una linea senza rumore e con banda passante di 3 kHz (la consueta banda telefonica) pu trasmettere un segnale binario (cio, nLiv= 2) ad una velocit massima di 2 * 3k * log(2, 2)= 6 kbit/sec.
I modem veloci sfruttano un segnale con pi di due livelli per trasmettere un numero maggiore di bit. Ad
es., usando quattro livelli (invece di 2 livelli, come nei segnali binari), possiamo inviare due bit contemporaneamente mediante un unico simbolo. Questa soluzione richiede un ricevitore capace di distinguere
pow(2, 2)= 4 livelli. La velocit di trasmissione di questi simboli la met della velocit di trasmissione
dei bit. Quindi, per trasmettere lo stesso numero di bit nello stesso tempo, la larghezza di banda necessaria
dimezzata.
La velocit con la quale il segnale cambia valore detta velocit dei simboli per distinguersi dalla velocit
dei bit. C la relazione:
Velocit dei bit [b/s]= Velocit dei simboli [simb/s] * Numero di bit associati ad ogni simbolo [bit/s]
Il numero dei livelli spesso (non sempre) una potenza di 2, perch qualche livello usato per ottenere una
maggiore protezione contro errori di trasmissione o per semplificare la progettazione del ricevitore.
4.1.4.2 Teorema di Shannon
Il teorema di Nyquist valido per canali totalmente privi di disturbi. Purtroppo, la presenza di rumore causato dal movimento di molecole (presente sempre in un sistema) deteriora rapidamente i risultati.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

35

La quantit di rumore termico presente misurata dal rapporto fra la potenza del segnale S e quella del rumore N, detto S / N. Usualmente, il rapporto S/N espresso nella forma logaritmica 10 * log (S/N, 10) perch varia in un intervallo molto grande. Lunit di misura di questa scala logaritmica il decibel (dB). Ad
es.:
Rapporto S/N Misura in dB
10
10
100
20
1.000
30
pow(10, n)
10*n
Il pi importante risultato del teorema di Shannon (1948) dice che la massima velocit di trasmissione di
dati o capacit di un canale rumoroso, avente una banda passante di B Hz e un rapporto segnale / rumore
S / N, :
Massima velocit dei dati = B * log(1 + (S / N), 2) bit/sec
Questo teorema ci dice qual la migliore capacit di un canale rumoroso e ci dice che non dipende dalla
frequenza di campionamento e dal numero di livelli del segnale (perch, a causa del rumore, un numero
maggiore di livelli pu renderli indistinguibili).
Es. LADSL, che fornisce un accesso ad Internet mediante una normale linea telefonica, usa una banda larga circa 1 MHz. Il rapporto S/N dipende molto dalla distanza tra la casa e il collegamento alla linea; un
rapporto di S/N circa 40 dB in una linea da 1 a 2 km molto buono. Con queste caratteristiche, il teorema
di Shannon dice che il canale non pu trasmettere mai a pi di
Massima velocit dei dati:= B * log(1 + (S / N), 2) = pow(10, 6) * log(1 + (pow(10, 4)), 2)
= pow(10, 6) * 13 = 13 Mbps.
In pratica, lADSL specifica una velocit fino a 12 Mbps, ma gli utenti vedono velocit minori. Questa velocit considerata molto buona; dopo oltre 60 anni, lo sviluppo delle tecniche di comunicazione hanno
fortemente ridotto la distanza tra la capacit di Shannon e quella dei sistemi reali.
Es. Una normale linea telefonica ha banda= 3 kHz e S/N= 30 dB. Quindi,
Velocit massima
:= B * log(1 + (S / N), 2)
= 3.000 * log(1 + 30dB, 2) = 3.000 * log(1 + 1.000, 2) =
= 3.000 * 10 = 30.000 bit/sec

3.000 * log(1001, 2)

4.1.5 Conclusioni
- Per ricevere un segnale identico a quello trasmesso, la banda del mezzo deve essere comprendere ogni
frequenza del segnale trasmesso; altrimenti, il mezzo elimina alcune armoniche dal segnale che quindi
viene distorto, cio alterato. Per, se un numero sufficiente di armoniche arriva a destinazione, il segnale ricevuto comunque interpretabile correttamente.
- La banda di un mezzo trasmissivo nota a priori. Se nota anche la banda di un segnale trasmesso nel
mezzo, possiamo individuare facilmente quali armoniche del segnale attraverseranno il mezzo.
- Comunemente, si dice che "un segnale composto da molti bit occupa pi banda". Infatti, un numero
maggiore di bit/sec da trasmettere richiede un numero maggiore di armoniche necessarie a rappresentare
adeguatamente il segnale. Ci causa (almeno) una delle due conseguenze:
1. Questo segnale usa una banda pi grande, e quindi "toglie" banda ad altri segnali trasmessi contemporaneamente sullo stesso canale. (Ad es., usa le frequenze fino a 100 KHz, invece delle frequenze
fino a 50 KHz.)
2. Questo segnale trasmesso pi lentamente. (Ad es., trasmesso in 10 sec. invece di 5 sec.)
- Un canale di trasmissione pi corto consente di raggiungere un numero pi alto di bit/sec (l'attenuazione
accettabile).
- La trasmissione digitale pi critica di quella analogica (perch genera frequenze pi alte), ma pu essere pi facilmente "rigenerata" lungo il percorso ( sufficiente distinguere fra pochi valori per ripristinare il segnale originario). Nella trasmissione analogica ogni amplificazione introduce distorsione, che
si somma a quella dei passaggi precedenti.

4.2 Mezzi trasmissivi


I mezzi trasmissivi utilizzati nelle reti sono:

36

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

- il mezzo elettrico (doppino intrecciato e cavo coassiale);


- il mezzo ottico;
- le onde elettromagnetiche.
I parametri che influenzano le prestazioni di un mezzo trasmissivo sono: la larghezza di banda, che determina quanti bit al secondo possibile trasferire, laffidabilit, cio la probabilit di trasmissione corretta, e la distanza massima in un collegamento.
A seconda del mezzo, si usano tecnologie differenti. Per le reti locali, il mezzo trasmissivo da utilizzare
scelto da noi; invece, per le reti geografiche, si usa la rete telefonica pubblica e le caratteristiche della linea
di comunicazione dipendono dal tipo di contratto stipulato (ed in genere da quanti soldi sono pagati dall'utente).

4.2.1 Mezzi elettrici


4.2.1.1 Doppino intrecciato
il pi anziano e diffuso mezzo trasmissivo. Consiste di una coppia di conduttori in rame intrecciati l'uno
con l'altro in forma elicoidale, per minimizzare le interferenze fra coppie adiacenti (due fili paralleli costituiscono un'antenna; due fili intrecciati invece no). usato, in particolare, per le connessioni terminali del
sistema telefonico (da casa alla centrale pi vicina). La larghezza di banda dipende dalla lunghezza, ma
comunque pu trasmettere diversi Mbit/sec su distanze di qualche km.
I doppini possono essere UTP (Unshielded Twisted Pair) oppure STP (Shielded (scudo) Twisted Pair); gli
STP sono schermati e sono quindi adatti ad ambienti rumorosi dal punto di vista elettromagnetico.
Due tipi di doppino UTP sono importanti nella trasmissione dati:
- categoria 3: due fili isolati, leggermente attorcigliati. Quattro coppie sono contenute in una guaina di
plastica. diffuso nei cablaggi telefonici interni agli edifici (si possono avere quattro telefoni per stanza);
- categoria 5 (dal 1988): simile alla categoria 3, ma con un pi fitto avvolgimento (pi giri per centimetro) e con isolamento in teflon. Migliora la qualit del segnale sulle lunghe distanze, ed adatto a collegamenti in alta velocit in ambito LAN (ad esempio per Ethernet a 100 Mbit/sec, ATM a 34 Mbit/sec).
4.2.1.2 Cavo coassiale
un altro comune mezzo di trasmissione; offre un miglior isolamento rispetto al doppino e quindi consente velocit di trasmissione maggiori su distanze superiori. costituito da un conduttore centrale in rame
circondato da uno strato isolante all'esterno del quale vi una calza metallica.

Figura 4-5: Sezione di un cavo coassiale


Nelle trasmissioni in rete si utilizzano due tipi di cavo coassiale:
- cavo coassiale spesso (thick ethernet); stato il primo mezzo trasmissivo utilizzato. Il segnale trasmesso sbilanciato (il valore medio del segnale non 0) e la maglia esterna a massa. Le caratteristiche
principali sono: 1) il costo elevato; 2) la difficolt di posare il cavo con raggi di curvatura maggiori di
50 centimetri; 3) un buon isolamento dal mondo esterno e dal rumore elettromagnetico; 4) una bassa attenuazione.
Il cavo posato senza interruzioni ed collegato all'elaboratore mediante un dispositivo detto transceiver. Questo si aggancia al cavo, e possiede un cavo di lunghezza massima pari a 50 metri che termina
collegandosi con l'elaboratore. Un vantaggio di questo mezzo trasmissivo che l'utente non vede il cavo, perci una soluzione affidabile. La lunghezza massima del cavo coassiale di 500 metri, mentre la
distanza minima tra due transceiver di 2,5 metri. Questo cavo poco usato a causa delle difficolt di
cablaggio.
- cavo coassiale sottile (thin ethernet); un cavo coassiale con maglia esterna a massa. Il segnale trasmesso sbilanciato. Le sue principali caratteristiche sono: 1) la flessibilit, quindi facilit di posa;
2) lisolamento inferiore al coassiale spesso; 3) l'attenuazione maggiore del coassiale spesso.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

37

Il transceiver inserito tagliando il cavo e connettendo i due spezzoni al computer (mediante una struttura a T con ponticelli); la lunghezza massima del cavo circa 200 metri, compresi i cavi di attacco alla
macchina, con distanza minima tra le stazioni 0.5 metri. In questo caso, l'utente pu facilmente accedere
ai ponticelli e quindi pu aprire il circuito e comprometterne il funzionamento, con problemi di affidabilit.
FIS-1

Figura 4-5: Collegamenti con cavi coassiali


Entrambi questi cavi hanno impedenza caratteristica di 50 , lavorano in banda base (cio lintera banda
usata per una singola trasmissione) e consentono velocit da 1 a 2 Gbit/sec su distanze di circa 1 km; per
distanze superiori si devono interporre amplificatori.
C' un altro tipo di cavo coassiale: il broadband coaxial cable (impedenza caratteristica 75 ), che quello usato per la trasmissione analogica ed in particolare per la TV.
4.2.1.3 Confronti
Per un lungo periodo il cavo coassiale fu preferito al doppino intrecciato perch raggiungeva maggiori velocit di trasmissione. Attualmente per la tendenza si invertita, perch i cavi UTP moderni, con un avvolgimento pi fitto, utilizzano un maggior numero di coppie (in genere 4) e raggiungono quindi velocit
di trasmissione paragonabili a quelle del cavo coassiale. I motivi per cui si preferiscono i cavi UTP ai coassiali sono:
- la trasmissione del segnale nel cavo UTP bilanciata (il valore medio del segnale 0) e maggiormente
immune al rumore in caso di modulazioni differenziali;
- lattenuazione del segnale paragonabile a quella del cavo coassiale;
- la reiezione (cio, la capacit di reagire) ai disturbi maggiore;
- il cavo UTP pu essere utilizzato per tutti i tipi di trasmissione: fonia, video, audio, dati con diversi
standard (RS232, RS499, IEEE 802.3 e 802.5, ..);
- pi semplice installare i connettori sul cavo UTP che sul cavo coassiale.

4.2.2 Fibre ottiche


Le fibre ottiche presentano: una bassissima sensibilit al rumore elettromagnetico, un'assenza di emissioni,
una bassa attenuazione, una banda passante teoricamente illimitata (nel caso delle pi costose fibre monomodali), un basso costo di produzione,.
Hanno un sottilissimo cilindro centrale in vetro (core), circondato da uno strato (cladding) di vetro avente
un diverso indice di rifrazione e da una guaina protettiva. Sono quindi raggruppate insieme in una guaina
contenitrice esterna.

Figura 4-6: Sezione di un cavo contenente fibre ottiche


Le fibre ottiche sfruttano il principio della deviazione che un raggio di luce subisce quando attraversa il
confine fra due materiali diversi (core e cladding nel caso delle fibre). La deviazione dipende dagli indici
di rifrazione dei due materiali; oltre un certo angolo, il raggio rimane intrappolato dentro il materiale.

Figura 4-7: Deviazione del raggio luminoso


Le fibre ottiche sono di due tipi:

38

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

- multimodali: raggi diversi possono colpire la superficie con diversi angoli (detti mode), proseguendo
quindi con diversi cammini. Il diametro del core di 50 micron, come quello di un capello.
- monomodali: sono cos sottili (il diametro del core 8-10 micron) che si comportano come una guida
d'onda: la luce avanza in linea retta, senza rimbalzare. Sono pi costose ma reggono distanze pi lunghe
(fino a 30 km).
Le fibre ottiche hanno prestazioni strepitose: con le tecnologie attuali si raggiunge una velocit di trasmissione di 50.000 Gbit/sec (50 Tbit/sec) con un bassissimo tasso d'errore. La pratica attuale di usare una velocit (minore) dell'ordine dei Gbit/sec dipende dall'incapacit di convertire pi velocemente segnali elettrici in luminosi. Infatti, nelle fibre ottiche, il mezzo fisico utilizzato ovviamente la luce; un impulso luminoso rappresenta un 1 mentre la sua assenza uno 0.
Le fibre ottiche sono fatte di un vetro speciale, molto trasparente (si vedrebbe il fondo del mare, se esso
fosse di questo vetro), e quindi attenuano pochissimo il segnale luminoso. L'attenuazione dipende anche
dalla lunghezza d'onda della luce; quindi, si usano comunemente tre particolari bande per la trasmissione
(tutte nell'infrarosso vicino), larghe da 25.000 Ghz a 30.000 Ghz ciascuna (un'enormit).
Un sistema di trasmissione ottica ha tre componenti:
- sorgente luminosa: pu essere un LED o un laser. Converte un segnale elettrico in impulsi luminosi;
- mezzo di trasmissione: la fibra ottica vera e propria;
- fotodiodo ricevitore: converte gli impulsi luminosi in segnali elettrici. Il tipico tempo di risposta di un
fotodiodo 1 nsec., da cui il limite di 1 Gbit/sec.
Ci sono due topologie comuni per le reti basate su fibre ottiche:
- anello: una concatenazione di pi spezzoni di fibre ottiche. Ogni collegamento punto a punto. L'interfaccia pu essere passiva (fa passare l'impulso luminoso nell'anello) o attiva (converte l'impulso in
elettricit, lo amplifica e lo riconverte in luce).
- stella passiva: l'impulso, inviato da un trasmettitore, arriva in un cilindro di vetro al quale sono attaccate tutte le fibre ottiche; viene poi distribuito alle fibre ottiche uscenti. Si realizza cos una rete broadcast.
Rispetto ai cavi di rame, le fibre sono pi leggere a parit di banda (due fibre sono pi capaci di 1.000
doppini, e pesano 100 kg/km contro 8.000 kg/km), ed difficile l'inserimento di intrusi per spiare il traffico. Gli svantaggi sono un maggior costo delle interfacce e delle giunzioni ed inoltre la comunicazione unidirezionale, quindi per realizzare la comunicazione a due vie servono due fibre.
La fibra ottica ancora poco usata; il suo uso caratterizzato da altissime velocit (>150 Mbit/sec), da
lunghe distanze di interconnessione ed infine da ambienti con problemi di compatibilit elettromagnetica.

4.2.3 Trasmissione senza fili


Le onde elettromagnetiche, create dal movimento degli elettroni, viaggiano nello spazio (anche vuoto) alla
velocit della luce e inducono una corrente in un dispositivo ricevente (antenna) anche molto distante.
Le porzioni dello spettro elettromagnetico utilizzabili per la trasmissione dati includono:
- onde radio;
- microonde;
- raggi infrarossi;
- luce visibile;
- raggi ultravioletti.
In generale, almeno per le onde radio, l'allocazione delle frequenze dipende da un'autorit statale.
Quando la frequenza aumenta, ci sono comportamenti diversi: le onde radio, di frequenza pi bassa, passano attraverso gli edifici, percorrono lunghe distanze e sono riflesse dalla ionosfera; a frequenze pi elevate
(lunghezza d'onda dell'ordine dei cm o mm) le onde sono estremamente direzionali e sono fermate degli
ostacoli (anche dalle gocce di pioggia!). In ogni caso, le onde sono soggette a interferenze elettromagnetiche e la trasmissione (almeno per basse frequenze) di tipo broadcast.
Anche in questo ambito la velocit di trasmissione dipende dall'ampiezza della banda utilizzata. Le informazioni sono trasmesse modulando l'ampiezza, la frequenza o la fase dell'onda.

4.3 Il sistema telefonico


Il sistema telefonico ha un ruolo fondamentale per le comunicazioni a distanza fra computer, perch la stesura di cavi sul suolo pubblico illegale e, comunque, la connessione di apparecchiature distanti centinaia
di km o pi mediante appositi cavi avrebbe un costo proibitivo.
Purtroppo il sistema telefonico, o rete pubblica telefonica commutata (PSTN, Public Switched Telephone Network), nato e si evoluto in funzione delle esigenze della fonia, anche se recentemente si sta adat-

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

39

tando sempre di pi ai dati digitali, grazie ai nuovi mezzi trasmissivi, come le fibre ottiche.
La seguente tabella mostra la differenza di qualit tra le due tipologie di connessione:
Velocit dei dati
Tasso di errore
7
8
[10
,
10
]
bit/sec
1 su 1012
Cavo fra 2 computer
[104, 105] bit/sec
1 su 105
Linea telefonica

4.3.1 Struttura generale


Agli albori della telefonia (il brevetto di Alexander Graham Bell del 1876), i telefoni si vendevano a coppie, e gli acquirenti dovevano stendere il cavo (uno solo, con ritorno via terra) per collegarli; le citt divennero ben presto un groviglio di cavi. Per semplificare la situazione, nacquero le societ telefoniche (la prima fu la Bell) che aprirono uffici di commutazione nei quali un operatore smistava le chiamate fra i vari
apparecchi. Questi non erano pi collegati direttamente fra loro ma erano tutti connessi a un ufficio di
commutazione.

Figura 4-8: Nascita del sistema telefonico


Poich gli uffici di commutazione nascevano come funghi, si ripropose lo stesso problema per il loro collegamento. Quindi vennero creati gli uffici di commutazione di secondo livello, e poi di terzo; alla fine la
gerarchia si arrest su cinque livelli (1890). Questa struttura gerarchica usata anche oggi dai sistemi telefonici in tutto il mondo, con varianti legate essenzialmente all'estensione dei vari sistemi. Attualmente ogni
sistema telefonico organizzato in una gerarchia multilivello con elevata ridondanza.

Figura 4-9: Struttura gerarchica del sistema telefonico


Al posto degli operatori vi sono delle centrali di commutazione, una volta elettromeccaniche ed oggi quasi tutte digitali. Il collegamento dal telefono alla pi vicina centrale di commutazione, detto circuito locale
o ultimo miglio, ancora oggi basato su doppino telefonico e pu avere una lunghezza da 1 a 10 km.
Normalmente trasporta un segnale analogico avente una banda molto modesta (3 kHz), ma, come vedremo,
questo limite imposto dal tipo di contratto con la compagnia telefonica e non dalle caratteristiche fisiche
del mezzo (che avrebbe una banda passante decisamente superiore).
Per le connessioni intermedie (tronchi di linea o trunk), oltre al doppino, si usano molti altri mezzi: cavi
coassiali, microonde e fibre ottiche.
Ormai quasi ovunque le centrali di commutazioni sono digitali e le linee trasportano segnali digitali. I vantaggi principali sono i seguenti:
- la ricostruzione periodica del segnale senza introdurre errori pi facile (perch richiede solo pochi valori);

40

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

- pi facile mescolare voce, dati, video e altri tipi di traffico;


- sono possibili velocit di trasmissione pi alte usando le linee esistenti.

4.3.2 Linee e multiplexing


Il sistema telefonico nato per trasportare le conversazioni telefoniche; il segnale analogico corrispondente
un segnale con una banda di frequenza compresa tra i 300 e i 3400 Hz, detta banda fonica. I gestori della
rete telefonica sfruttano questo limite per convogliare pi segnali telefonici su una stessa linea, utilizzando
un meccanismo di multiplazione (multiplexing).
Ci sono due schemi principali per la suddivisione del canale trasmissivo: divisione in frequenza (Frequency Division Multiplexing, FDM) e divisione nel tempo (Time Division Multiplexing, TDM).
4.3.2.1 Multiplexing a divisione di frequenza
Questa tecnica tipica della trasmissione analogica. Lo spettro di frequenza disponibile viene suddiviso in
varie bande pi piccole, e ogni utente ha l'esclusivo uso di una di esse.
Ad esempio, ad ogni canale telefonico (ciascuno avente la banda di 3 kHz) assegnata una banda di 4 kHz,
per avere un margine di 500 Hz di sicurezza su ciascun lato della banda. La frequenza di ogni canale telefonico spostata fino alla banda assegnata al segnale.

Figura 4-10: FDM


Uno standard CCITT prevede il multiplexing di 12 canali da 4 kHz nella banda [60, 108] kHz. Ci costituisce un group. Molte societ telefoniche offrono un servizio di trasmissione dati, a velocit tra i 48 e i 56
Kbit/sec, basato su un gruppo. Cinque group (60 canali) formano un supergroup. Cinque supergroup (300
canali) formano un mastergroup. Sono definiti gli standard fino a 230.000 canali.
Una variante di FDM per le fibre ottiche il Wavelength Division Multiplexing (WDM), che usa le lunghezze d'onda, inversamente proporzionali alle frequenze. Concettualmente analogo a FDM. Dal punto
di vista realizzativo si varia la lunghezza d'onda del raggio luminoso. Ci si fa con dei sintonizzatori ottici,
basati sugli interferometri Farbry-Perot o Mach-Zehnder.
4.3.2.2 Multiplexing a divisione di tempo
Questa tecnica utilizzata per la gestione di dati in forma digitale. L'idea semplice: i bit provenienti da
diverse connessioni vengono prelevati a turno da ciascuna di esse ed inviati su un'unica connessione ad alta
velocit:

Figura 4-11: TDM


Il segnale analogico trasportato dai circuiti locali deve essere trasformato in digitale prima di essere combinato in TDM con gli altri. Il segnale analogico campionato 8.000 volte al secondo (1 campione ogni
125 microsecondi: ci sufficiente, per il teorema di Nyquist, per un segnale caratterizzato da una banda

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

41

di 4 kHz); questo campionamento produce altrettanti 8.000 (= 2 * 4000) valori a 7 bit (in USA) o 8 bit (in
Europa). Questa tecnica si chiama PCM (Pulse Code Modulation) ed usata da ogni sistema telefonico
moderno. Di conseguenza, il ritmo di funzionamento di ogni sistema telefonico basato su un intervallo di
tempo fondamentale di 125 microsecondi. Quindi, il segnale vocale digitalizzato richiede 8 * 8.000 bit/sec,
cio 64 Kpbs.

4.3.3 Il circuito locale (ultimo miglio)


Come abbiamo visto, il circuito locale pensato per trasportare un segnale analogico con una larghezza di
banda di 3 kHz [0, 3 kHz]; questo limite ottenuto artificialmente filtrando il segnale con filtri passabasso. Lo spettro del segnale digitale, a causa delle transizioni molto rapide da un livello all'altro, occupa
una banda molto ampia (teoricamente illimitata) e quindi il segnale non pu essere trasmesso direttamente
attraverso le normali linee telefoniche analogiche. Per questo motivo non possibile trasmettere direttamente il segnale digitale nella linea telefonica analogica ma necessario l'uso del modem fonico, un dispositivo che adatta il segnale alla banda.

Figura 4-12: trasmissione in banda fonica

4.3.4 Commutazione
Il sistema telefonico commutato, cio ogni linea in ingresso alla centrale telefonica non sempre alla
stessa linea in uscita, ma la connessione dipende dalla richiesta di connessione dell'utente.
Ci sono due tipi principali di commutazione:
- Commutazione di circuito: Quando si effettua una telefonata, il sistema stabilisce una connessione fisica dedicata fra il chiamante ed il chiamato. Il traffico quindi fluisce su questa connessione. Naturalmente, la connessione in realt costituita prima sul circuito locale e poi come successione di canali a
64K. In questo caso, richiesto un certo tempo (anche alcuni secondi) per il connection setup; dopo, il
segnale viaggia senza ulteriori ritardi. Difficilmente ci sono situazioni di congestione.
- Commutazione di pacchetto: Il sistema non stabilisce una connessione fisica fra sorgente e destinazione. I dati da inviare sono spezzettati in pacchetti, che vengono inviati indipendentemente gli uni dagli
altri, possono percorrere strade diverse e sono riordinati solo a destinazione. Fra i vantaggi: non si riserva banda in anticipo (che verrebbe poi sprecata in assenza di traffico) e non c' il ritardo per il
connection setup. Uno svantaggio risiede nel fatto che la congestione pu insorgere in ogni momento.
Attualmente i sistemi telefonici (ottimizzati per la fonia) sono a commutazione di circuito. Invece, le reti di
elaborazione sono comunemente a commutazione di pacchetto, pur offrendo in generale anche servizi di
tipo connesso.

4.3.5 Servizi per trasmissione dati


Per varie ragioni, come gli elevati costi di cablaggio e l'esistenza di leggi nazionali che regolamentano il
settore delle telecomunicazioni, attualmente un'organizzazione non pu realizzare una rete geografica mediante la stesura di cavi che passano su suolo pubblico; invece, deve rivolgersi ad una societ telefonica (in
futuro anche ad altri, quali ad esempio Cable TV) per la realizzazione della sottorete di comunicazione.
Il servizio offerto dalla rete telefonica caratterizzato dal fatto che gli utenti dispongono di un collegamento fisico per tutta la durata del servizio. In tale periodo, il collegamento non disponibile per tutti gli altri
utenti della rete.
A seconda delle necessit, il collegamento fisico pu essere:

42

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

- commutato: richiesto da un utente a seguito di una chiamata e rimane a sua disposizione per l'intera
durata della chiamata, come nell'accesso dial-up.
- dedicato: predisposto in fase di configurazione dellutente e permane a sua disposizione 24 ore su 24.
4.3.5.1 Collegamenti dedicati
I collegamenti dedicati possono essere distinti in due categorie:
- CDA - Collegamento Diretto Analogico;
- CDN - Collegamento Diretto Numerico.
Il CDA il servizio di interconnessione fornito dal gestore di una rete pubblica di telecomunicazioni. Realizza fra due sedi dell'utente una connettivit analogica permanente adatta al trasferimento di un segnale
caratterizzato da una dinamica in ampiezza e frequenza prestabilite.
Le velocit di trasferimento dati vanno da 2400bit/sec a 64000 bit/sec. Questa tecnologia obsoleta e viene
sostituita da soluzioni pi recenti. Il CDA era usato nei centri di calcolo che necessitavano di un collegamento dedicato, quando le linee commutate non erano soddisfacenti. Con l'introduzione delle centrali numeriche i collegamenti analogici tra le centrali stesse sono stati rimpiazzati da dorsali digitali ad alta velocit.
Il CDN un collegamento fisico permanente full-duplex, realizzato tra due sedi del cliente mediante apparati che rappresentano la terminazione del collegamento, installati in entrambe le sedi e mediante apparati
della rete trasmissiva pubblica. Equivale ad una linea diretta dedicata tra le due sedi. Viene fornito con diverse opzioni di velocit: da 2400 bit/sec fino a 2048 kbit/sec, per passi discreti (2.4, 4.8, 9.6, 14.4, 19.2,
48 , 64, Nx64 kbit/sec, con N variabile da 2 a 32). La rete trasmissiva che fornisce tale servizio caratterizzata da bassi tassi di errore, alta disponibilit e possibilit di gestione da remoto; la trasmissione dati tra
gli apparati disposti agli estremi del CDN trasparente temporalmente (ritardo costante) e la rete trasparente ai codici utilizzati.
Prolungando un collegamento digitale dall'interno della centrale fino alla presa dell'utente, stato possibile
fornire un servizio completamente digitale, a velocit pi elevata e minor tasso d'errore. Il CDN usa la
commutazione di pacchetto, pertanto con i CDN possibile sfruttare tutto, o in parte, il flusso di dati delle
dorsali inserendo all'interno delle trame utilizzate per i canali telefonici digitali il traffico degli utenti.
4.3.5.2 xDSL
La rete di accesso in rame (il tradizionale doppino telefonico) nata per il trasporto della telefonia analogica, ma pu fornire il trasporto di servizi numerici ad alta velocit impiegando utilizzando la tecnologia
DSL (Digital Subscriber Line). Esistono varie tecnologie DSL, nate tutte con l'obiettivo di migliorare le
prestazioni delle trasmissioni su doppino di rame. Esse sono complessivamente identificate con il termine
generico "xDSL".
La "x" di xDSL viene sostituita ogni volta dalle lettere iniziali della particolare tecnologia, perch DSL
non un protocollo unico, ma una famiglia di soluzioni che si differenziano per le applicazioni e per la
velocit dei collegamenti.
Le principali tecnologie DSL sono:
- ADSL (Asymmetric Digital Subscriber Line): la velocit dei dati in ricezione maggiore rispetto a
quella dei dati in trasmissione.
- HDSL (High-bit rate Digital Subscriber Line): la velocit dei dati in ricezione uguale a quella dei
dati in trasmissione.
- RADSL (Rate Adaptive Digital Subscriber Line): dispositivo ADSL in grado di regolare la velocit in
funzione delle caratteristiche della linea.
- VDSL (Very high speed Digital Subscriber Line): l'ultima generazione, ancora in fase di consolidamento.
Tra queste tecnologie, si sono in particolare affermate ADSL e HDSL, che offrono servizi evoluti ed efficienti.
4.3.5.3 Caratteristiche e requisiti
Le caratteristiche peculiari dell'accesso a larga banda realizzato tramite il sistema xDSL sono riassunte in:
- Si usa una sola coppia simmetrica in rame.
- La possibilit di uso della rete analogica tradizionale per il servizio voce inalterata. Quindi, la linea dei
dati in ingresso non collegata al filtro ([300, 3.400] Hz), usato per la voce,
- La velocit diminuisce all'aumentare della lunghezza del collegamento e dipende da altri fattori, tra cui
lo stato del circuito locale (ultimo miglio). Quindi, oltre una data distanza, l'azienda telefonica non pu

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

43

offrire un servizio di qualit.


- La banda di trasmissione pu essere usata in modo sia asimmetrico (ADSL) che simmetrico (HDSL).
- possibile connettere un utente direttamente a partire dalla centrale senza rigenerazione del segnale.
- ADSL trasporta connessioni ATM tra lutente e la centrale ed un sistema trasmissivo che utilizza due
modem connessi tra loro dalla linea di accesso in rame.
Il fornitore del servizio deve garantire questi requisiti:
1 Il servizio deve funzionare su doppini di cat. 3.
2 Il servizio non pu influire sui telefoni.
3 Il servizio deve essere sempre attivo.
4 La velocit deve essere >> 56 kbit/sec.
4.3.5.4 Scenario di riferimento

Figura 4-13: Scenario di riferimento


Lo scenario di riferimento schematizzato in figura individua tre domini: quello dellutente che deve essere
interconnesso ai fornitori dei servizi (ISP, Content provider, Reti aziendali, ..), quello del fornitore della rete di accesso che consente questa interconnessione e quello delle sottoreti dei vari fornitori di servizi (scenario multiservice provider).
Il sistema ADSL vero e proprio consente, come si detto, la connessione dellutente alla centrale ove sono
localizzati i sistemi trasmissivi del fornitore dellaccesso (Access Provider). Questultimo, nel caso generale, rende anche disponibili le funzioni di transito necessarie per mettere in comunicazione lutente con i
fornitori dei servizi per i quali stato richiesto laccesso.

Figura 4-14: Accesso al sistema ADSL


FIS-2

Figura 4-15: Accesso al sistema ADSL


La terminazione di rete ADSL presso lutente contiene il modem ADSL remoto che connesso al corrispondente modem di centrale tramite il doppino dell'abbonato. Sul mezzo fisico sono multiplati a divisione
di frequenza sia il segnale telefonico standard che il segnale dati ADSL. La separazione degli spettri dei
due segnali si ottiene tipicamente collegando la linea dell'utente a un filtro denominato splitter. Un analogo dispositivo deve essere presente in centrale per separare il segnale a banda stretta verso la rete telefonica del segnale ADSL.

44

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

Fisicamente, nel lato centrale, il DSLAM (Digital Subscriber Line Access Multiplexer) composto da diversi modem ADSL e svolge una funzione di adattamento tra la rete di accesso e la rete di transito.
Per la modulazione del segnale a larga banda ADSL si impiega la tecnica DMT (Discrete MultiTone) gi
standardizzata in ambito ANSI ed ETSI. Con questo tipo di modulazione multiportante la banda viene suddivisa in 256 sottocanali ciascuno dei quali destinato alla trasmissione di una porzione del flusso informativo. In questo modo le attenuazioni sono circa costanti allinterno delle sottobande e non necessario
impiegare equalizzatori di canale in ricezione riducendone quindi complessit e costi associati.

Figura 4-16: allocazioni spettrali codifica DMT-2

4.4 {#} Approfondimenti


4.4.1 Cardinalit degli insiemi
Un insieme discreto se finito o se infinito numerabile.
Un insieme infinito numerabile se esiste una corrispondenza biunivoca tra i suoi elementi e i numeri naturali.
Ad esempio, una corrispondenza biunivoca tra l'insieme di tutti i numeri pari P={0, 2, 4, 6,...} e N la seguente:
0

10

12

14...

7...

Ogni numero pari associato alla sua met, cio ad unico numero naturale; viceversa, ogni naturale associato al suo doppio. In questo modo, contiamo i numeri pari e vediamo che sono tanti quanti i naturali;
quindi l'insieme dei numeri pari discreto.
Una corrispondenza biunivoca tra Z (insieme dei numeri interi) e N la seguente:
0

-1

-2

-3

Il matematico Cantor ha dimostrato che anche l'insieme Q dei numeri razionali numerabile.
Quindi, gli insiemi P (numeri pari), N, Z e Q hanno tutti la stessa cardinalit, che detta aleph-zero ed
indicata con il simbolo 0.
Un insieme continuo un insieme infinito non numerabile.
Cantor ha anche dimostrato che l'insieme R dei numeri reali non numerabile e ha cardinalit maggiore di
aleph-zero. La cardinalit di R (cardinalit del continuo) detta aleph-uno e indicata con il simbolo 1.
Hanno la stessa cardinalit di R (e sono quindi insiemi continui) l'insieme dei punti di una retta, l'insieme
dei punti di una semiretta, l'insieme dei punti di un segmento, l'insieme di tutti i numeri reali compresi tra
un minimo e un massimo.
Cantor ha dimostrato anche l'esistenza di infinite cardinalit (ognuna maggiore delle precedenti) dell'infinito.

4.4.2 Analisi armonica di Fourier


Consideriamo una funzione g(t) periodica di periodo T (e di frequenza fondamentale f= 1/T).
Fourier (matematico francese del 1800) dimostr che questa funzione g(t) uguale ad una somma (detta
serie di Fourier) di infiniti seni e coseni e funzioni sinusoidali:
g(t)= c +
SUM (a[n]*sen(2**n*f*t) | n=1,..,+) + SUM (b[n]*cos(2**n*f*t) | n=1,..,+)

dove:

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

45

- c il valore medio di g(t) nel periodo T.


- Ogni valore a[n] e b[n] calcolabile mediante un opportuno integrale definito (la cui formula non
qui riportata) di g(t) calcolato rispetto alla variabile t.
- Ogni successione a[n] e b[n] tende a zero al tendere di n a +.
4.4.2.1 Osservazioni
- Il valore medio c pu essere ignorato dalla trasmissione, perch non porta informazione.
- La funzione ottenuta sommando le funzioni sen(2**n*f*t) e cos(2**n*f*t) ha una frequenza n
volte pi grande della frequenza fondamentale ed detta n-esima armonica.
- Il numero c[n]:= sqrt(pow(a[n],2)+pow(b[n],2)) l'ampiezza dell'armonica n e rappresenta l'energia (cio, l'importanza) trasmessa da questa armonica. (Quindi, la serie c[n] lo spettro di frequenze
di g(t).)

Es. Calcolare l'analisi di Fourier del segnale f(t)= 4.


Soluzione
Si vede subito che:
- c=4 ;
- a[n]=0 per qualunque n;
- b[n]=0 per qualunque n.
@

Es. Calcolare l'analisi di Fourier del segnale f(t)= 5*sen(3*t) + 6*cos(2*t).


Soluzione
Questo esercizio particolarmente semplice perch il segnale dato direttamente come somma di seni e
coseni.
- Il periodo T1 di 5*sen(3*t) tale che
sen(3*(t+T1)) = sen(3*t) per qualunque t -> 3*T1= 2* -> T1= 2*/3.
- Il periodo T2 di 6*cos(2*t) tale che
cos(2*(t+T2)) = cos(2*t) per qualunque t -> 2*T2= 2* -> T= .
- Periodo di f(t)= m.c.m.(T1,T2)= m.c.m.( 2*/3,)= 2*.
- Frequenza di f(t)= 1/(2*).
Calcoliamo adesso l'analisi di Fourier.
- Il valore medio di un seno e di un coseno 0 -> c= 0.
- I coefficienti a[n] si ottengono dall'equazione:

5*sen(3*t)= a[1]*sen(2*/(2*)*t)+
a[2]*sen(2*/(2*)*2*t)+a[3]*sen(2*/(2*)*3*t)+ .. ->
a[1]= 0; a[2]= 0; a[3]= 5; a[n]= 0 per n>=4.
I coefficienti b[n] si ottengono analogamente:
b[1]= 0; b[2]= 6; b[n]= 0 per n>=3.
I coefficienti c[n] si ottengono facilmente:
c[1]= 0; c[2]= 6; c[3]= 5; c[n]= 0 per n>=4.

4.4.3 Modulazioni digitali


Le principali tecniche di modulazione digitali in banda fonica sono: modulazione di ampiezza (si varia
l'ampiezza della portante), modulazione di frequenza (si varia la frequenza della portante), modulazione
di fase (si varia la fase della portante).
4.4.3.1 Modulazione d'ampiezza
Nella modulazione ASK (Amplitude Shift Keying) l'ampiezza della portante sinusoidale viene fatta variare in correlazione al segnale digitale modulante. Nel caso pi semplice e pi comune in corrispondenza
dello zero logico il segnale modulato ha ampiezza zero ed in corrispondenza dell'uno logico ha ampiezza

46

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

pari a quella della portante non modulata. In questo caso si parla di modulazione OOK (On-Off Keying).
Questo tipo di modulazione abbastanza semplice da realizzare ma non molto utilizzato per le trasmissioni
dati a grande distanza a causa della sua notevole sensibilit al rumore.

Figura 4-17: modulazione ASK


4.4.3.2 Modulazione di frequenza
La tecnica di modulazione FSK coinvolge i modem a bassa velocit di trasmissione di tipo V.21 e V.23 ossia da 300 fino a 1200 bit/sec. Questa tecnica associa a ciascuno dei due stati assunti dal segnale dati in ingresso del modulatore, un determinato valore di frequenza della portante. Pi precisamente associa al simbolo 0 la frequenza Fp1, ed al simbolo 1 la frequenza Fp2, con Fp1>Fp2. La frequenza Fp1 corrisponde ad
un livello di tensione positiva, mentre Fp2 ad un livello di tensione negativa secondo lo standard europeo.

Figura 4-18: modulazione FSK


La scelta delle due frequenze viene fatta in modo da realizzare il migliore compromesso tra quattro diverse
esigenze: limitare l'occupazione della banda; ottenere una sufficiente separazione tra le due frequenze in
modo da evitare l'interferenza intersimbolica; mantenere il periodo relativo alle due sinusoidi minore o uguale alla frequenza di bit dell'informazione digitale e mantenere una continuit di fase nelle variazioni di
stato.
4.4.3.3 Modulazione di fase e di fase differenziale
Nella modulazione di fase (PSK o Phase Shift Key) la portante sinusoidale mantiene la propria frequenza
costante, e varia la fase in modo discontinuo.

Figura 4-19: modulazione 2-PSK


Il segnale della portante, quindi, viene variato in fase in modo dipendente dalla sequenza dei bit costituenti
il segnale da trasmettere.
La tecnica di modulazione di fase viene utilizzata generalmente nei sistemi a bassa velocit di trasmissione. Rispetto alla portante il segnale modulato subisce un salto di fase di 180 in presenza dello stato logico
basso, mentre non subisce alcuna variazione quando presente lo stato logico alto. Il segnale ottenuto richiede una rivelazione di tipo coerente, e pertanto occorre ricostruirne la portante per generare in ricezione

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

47

un riferimento di fase rispetto al quale sia possibile rivelare le variazioni di fase del segnale ricevuto. Questa necessit rende difficoltoso il compito del demodulatore, perch il canale telefonico soggetto a fenomeni di distorsione di fase.
Per superare tali inconvenienti si utilizza la modulazione di fase differenziale (DPSK o Differential Phase
Shift Key), che impiega per la rivelazione dei dati un metodo basato sul confronto relativo alle fasi, cio la
rivelazione avviene confrontando la fase in un determinato istante con quella del salto precedente.
Il modem accetta in ingresso un segnale digitale e produce in uscita una portante analogica opportunamente modulata. Ora, poich la banda passante (e quindi la velocit di segnalazione) limitata a 3 kHz, sappiamo che non si possono trasmettere pi di 6 Kbit/sec (per il teorema di Nyquist) se il segnale a due valori. Per raggiungere velocit superiori si deve riuscire ad aumentare il numero dei possibili valori trasmessi.
Normalmente la modulazione di fase differenziale avviene su N= pow(2, n) livelli, ad ogni livello associata una sequenza di 8 bit. La differenza fra la rivelazione coerente assoluta a la rivelazione differenziale
sta nel fatto che nel primo caso si paragona al fase del segnale ricevuto con un riferimento da considerare
privo di disturbi mentre nel secondo caso vengono confrontati due segnali entrambi affetti dallo stesso disturbo, ottenendo quindi una maggiore immunit al rumore. Per aumentare il numero di livelli con una
buona immunit al rumore, i modem pi veloci utilizzano la modulazione differenziale di fase e ampiezza
combinate.
Ad esempio, modulando opportunamente sia ampiezza che fase si possono rappresentare 16 valori diversi,
quindi si possono ottenere 4 bit per simbolo. Dunque, una linea che trasmette 2.400 simboli/sec (come in
un circuito locale) trasmette 9.600 bit/sec.
I diagrammi che definiscono i punti (nello spazio a coordinate polari ampiezza - fase) corrispondenti a valori validi del segnale da trasmettere si chiamano constellation pattern. Quello sopra citato definito nello standard V.32, emesso da ITU. un esempio di standard per il livello fisico.
Un altro constellation pattern definito nello standard V.32 bis, per velocit di 14.400 bit/sec su linea a
2.400 simboli/sec. Utilizza pow(2, 6)= 64 punti per trasmettere 6 bit per simbolo.
Infine, il V.34 viaggia a 28.800 bit/sec, quindi trasmette 12 bit per simbolo. Si deve notare che con questi
due standard possono sorgere problemi se la linea telefonica pi rumorosa del normale (teorema di Shannon).
Un modo per aumentare ulteriormente le prestazioni ricorrere a meccanismi di compressione dei dati
prima di trasmetterli. In tal modo, a parit di velocit, si inviano pi informazioni.
Due standard importanti per la compressione dei dati sono: V.42 bis, emesso da ITU e MNP 5, standard de
facto (Microcom Network Protocol).
Infine, per consentire una trasmissione contemporanea nei due sensi (full-duplex), ci sono due tecniche:
- suddividere la banda in due sottobande, una per ogni direzione; cos per si dimezza la velocit. Questa
tecnica tipica degli standard per le velocit pi basse, ad esempio V.21 per 300 bit/sec;
- cancellazione dell'eco: ogni modem sfrutta l'intera banda e cancella in ricezione gli effetti della propria
trasmissione.
4.4.3.4 Modulazione in banda base
Nel caso di linee private o fisiche, che permettono il collegamento diretto tra due elaboratori posti a breve
distanza, i segnali di informazione in forma digitale non richiedono alcun processo di conversione analogicodigitale in quanto non si hanno problemi dovuti alla banda passante del mezzo trasmissivo; per necessario eliminare dal segnale digitale la componente continua.
I modem in banda base operano con la codifica di Manchester, un codice bifase che prevede una modulazione differenziale di fase di unonda rettangolare, la cui frequenza pari alla velocit di trasmissione prescelta, effettuando un salto di fase di 180 ogni volta che il segnale da trasmettere uno 0. In effetti la portante il clock, per cui il modem in banda base un dispositivo tipicamente sincrono. Il codice di Manchester in pratica impiega un intero ciclo di onda quadra per trasmettere un livello alto o un livello basso, con
la differenza che al bit uno si associa una semionda positiva pi una semionda negativa, mentre al bit zero
si associa una semionda negativa pi una semionda positiva.

4.5 Esercizi
Rappresentare ogni risultato mediante un nome evocativo; descriverlo mediante una frase chiara; esprimerlo in funzione dei dati o di altri risultati trovati precedentemente, mostrando i passaggi intermedi; indicare
la sua unit di misura.

48

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

1. L'ampiezza dell'armonica generica i(= 1, 2, ..) di un segnale s(t) 100 / pow(3,i). Si vuole ricevere ogni armonica (di s(t)) con ampiezza >= 1 attraverso un canale trasmissivo avente banda 3 MHz.
Qual la massima frequenza che pu avere s(t) per consentire il passaggio sul canale di tutte le armoniche suddette?
2. L'analisi di Fourier di un segnale s(t) avente frequenza 1500 kHz indica che l'ampiezza dell'armonica
generica i(= 1, 2, ..) 100 / pow(5, i). Si vuole trasmettere s(t) attraverso un canale trasmissivo
avente banda 5 MHz.
A. Quante armoniche attraversano il canale?
B. Definiamo guadagno del segnale il rapporto tra:
1) la somma totale delle ampiezze del segnale in uscita dal mezzo, e
2) la somma totale delle ampiezze del segnale in ingresso nel mezzo.
Quanto vale il guadagno del segnale?
Sugg. Per calcolare 2), bisogna usare la formula a pg. 9
3. Un segnale analogico sA(t) assume, con la stessa probabilit, tutti i valori nell'intervallo [-1, 5] V. Il
segnale quantizzato in modo da:
- Minimizzare l'errore massimo.
- Memorizzare ogni valore mediante 3 bit.
A. Qual l'errore massimo di quantizzazione?
B. Qual l'errore medio di quantizzazione?
4. L'analisi di Fourier di un segnale s(t) avente frequenza 100 kHz indica che:
- L'ampiezza di ogni armonica di indice pari (2, 4, ..) 0.
- Le ampiezze delle armoniche di indice dispari decrescono linearmente in base alla sequenza:
A[1]:= 9

A[3]:= 7

A[5]:= 5

..

Naturalmente, nessuna ampiezza pu essere <0.


A. Qual la minima frequenza con la quale pu essere campionato s(t) in modo da essere ricostruito senza errore partendo dal suo campionamento?
B. s(t) attraversa un canale avente banda [150, 550] kHz. Quanto vale il guadagno di s(t)?
5. Un segnale analogico "sA(t)" varia nell'intervallo [-3, 9] V. Il segnale quantizzato in modo da:
- Minimizzare l'errore massimo.
- Memorizzare ogni valore mediante 2 bit.
A. Indicare, per ogni possibile valore di "sA(t)", qual la codifica binaria associata alla sua quantizzazione.
B. Indicare, per ogni codifica binaria individuata nel punto precedente, qual il valore associato (nel segnale quantizzato).
6. Un mezzo trasmissivo ha una banda di 1 MHz ed soggetto ad un rumore con potenza 100. Si vuole avere una capacit di almeno 12 MHz.
Quali limiti ci devono essere sulla potenza del segnale? Arrotondare il risultato alla pi vicina potenza di
10.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

49

5 Il livello di data link


Il livello di data link deve risolvere questi problemi:
- Il livello fisico riceve un flusso di bit grezzi e cerca di condurlo a destinazione; per, il mezzo trasmissivo pu generare errori e quindi i bit ricevuti possono essere diversi da quelli trasmessi.
- Il canale fisico ha una velocit di trasmissione finita.
- C' un ritardo nella propagazione del segnale.
I compiti fondamentali del livello di data link sono:
- raggruppare i bit in frame (o pacchetti) e, viceversa, scomporre i frame in bit (framing);
- rilevare e, se possibile, correggere eventuali errori di trasmissione nel flusso dei bit;
- regolare il flusso della trasmissione da una sorgente quando il destinatario pi lento.
Lapproccio usuale del livello due il seguente:
- In trasmissione:
- scompone il flusso di bit (arrivato dal livello di network) in una serie di frame;
- calcola, per ogni frame, alcuni bit (ridondanti) e li inserisce nel frame;
- consegna il frame al livello fisico, che lo spedisce come sequenza di bit;
- In ricezione:
- riceve una sequenza di bit dal livello fisico;
- estrae da essa ogni frame contenuto nella sequenza;
- per ogni frame, ricalcola i bit ridondanti e controlla se sono uguali a quelli contenuti nel frame; se s,
accetta il frame; altrimenti lo considera errato e quindi lo scarta.

5.1 Servizi offerti al livello di network


I servizi offerti dal livello di data link al livello superiore sono di tre diversi tipi:
- Senza connessione e senza riscontro: Il mittente e il destinatario non sono connessi. Un frame perso
non recuperato da questo livello, ma eventualmente dai livelli superiori. Questo tipo di servizio appropriato per canali con tasso derrore molto basso oppure per sistemi real-time, dove non c' il tempo
necessario all'attesa dei riscontri.
- Senza connessione e con riscontro: Il mittente e il destinatario non sono connessi e il destinatario invia
un riscontro al mittente quando ha ricevuto un frame corretto. Se, entro un dato intervallo di tempo, il
destinatario non riceve il riscontro (cio, se il riscontro si rovinato nella trasmissione o se il destinatario non l'ha inviato perch non aveva ricevuto il frame corretto), il mittente pu rinviare lo stesso frame.
- Con connessione e con riscontro: Il mittente e il destinatario sono connessi e il destinatario invia un
riscontro al mittente quando ha ricevuto un frame corretto. Ha tre fasi: apertura connessione, invio dati,
chiusura connessione. Ogni frame numerato dal mittente ed ricevuto esattamente una volta; i frame
arrivano al destinatario nello stesso ordine di trasmissione. Quindi, il pi sofisticato e fornisce al livello di network un flusso affidabile di bit.

5.2 Framing
I metodi principali di suddivisione dei bit in frame sono:
- Conteggio dei caratteri;
- Riempimento di byte;
- Riempimento di bit;
- Violazione della codifica del livello fisico.

5.2.1 Conteggio
Il mittente inserisce all'inizio del frame un campo contenente il numero di caratteri del frame:

Figura 5-1: Il metodo del conteggio


Se durante la trasmissione il campo "conteggio" si rovina, per il destinatario quasi impossibile individuare l'inizio del prossimo frame e di conseguenza anche quello dei successivi. Per questa scarsa affidabilit,
questo metodo usato raramente.

50

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

5.2.2 Riempimento di byte


Questo metodo risolve il problema di sincronizzazione dopo un errore inserendo una particolare sequenza
di byte (di controllo) all'inizio e alla fine di ogni frame. Spesso le sequenza di inizio e di fine frame sono
composte dallo stesso unico byte, detto flag byte e che indichiamo genericamente con FLAG.. Cos, se un
byte FLAG si rovina, il destinatario perde il frame che lo segue, ma individua l'inizio del frame successivo
quando riceve la coppia FLAG FLAG.
Se tra i dati da trasmettere c' (casualmente) un byte contenente il codice FLAG, il mittente aggiunge prima
un byte di controllo, detto di escape e che indichiamo genericamente con ESC; cos, il destinatario non
confonde il dato FLAG dal byte di controllo FLAG..
Analogamente e per lo stesso motivo, se tra i dati da trasmettere c' (casualmente) un byte contenente il
codice ESC, il mittente aggiunge prima il byte di controllo ESC.
Questa tecnica detta riempimento di byte.
Es. Consideriamo un protocollo che inserisce al massimo 6 byte in un frame e vediamo, al variare dei dati
da trasmettere , quali valori sono inseriti dei frame. I byte in grassetto sono di controllo.
Byte di dati da trasmettere
Byte inviati nel frame 1
Byte inviati nel frame 2
FLAG A B C D FLAG
FLAG A ESC FLAG B FLAG
FLAG A ESC ESC FLAG

A B C D E F
A FLAG B
A ESC FLAG FLAG

FLAG E F FLAG
FLAG ESC FLAG ESC FLAG FLAG

5.2.3 Riempimento di bit


La tecnica precedente legata all'uso di byte a 8 bit, e non va bene per sequenze composte da un numero
qualsiasi di bit. Questa tecnica, detta riempimento di bit, simile alla precedente; per, permette di avere
un numero qualunque di bit dentro il frame inserendo all'inizio e alla fine una specifica sequenza di bit, in
genere 01111110 (o 0x7E in esadecimale), detta flag byte.
Se i bit da trasmettere contengono (casualmente) cinque bit consecutivi uguali a 1, il livello di data link del
mittente inserisce uno 0 dopo questi cinque bit; il livello due del destinatario rimuove un eventuale 0 che
compare dopo cinque 1. Dunque, il flag byte pu trovarsi soltanto all'inizio ed alla fine di un frame, e non
nei dati "interni".
Questa tecnica minimizza il numero di "variazioni" tra i dati da trasmettere e quelli effettivamente inviati.
Per questa ragione, l'USB (Universal Serial Bus) usa questa tecnica.

5.2.4 Violazioni della codifica


In molte reti (soprattutto LAN) i bit al livello fisico sono codificati con una certa ridondanza. Ad esempio,
nella codifica di Manchester (usata in IEEE 802.3) dopo ogni bit aggiunto un bit di valore opposto:
- il valore 1 di un bit di dati codificato con la coppia 10 di bit fisici;
- il valore 0 di un bit di dati codificato con la coppia 01 di bit fisici.

Figura 5-2: Codifica Manchester


Questa codifica individua l'inizio di un frame di dati mediante la coppia 11 e la fine di un frame mediante
la coppia 00 (entrambe queste coppie non sono utilizzate dai dati).
Bit di dati

Inizio

Segnale trasmesso

1
1

0
0

0
1

1
1

Fine
0

Punto di rilevazione

Vantaggi:
- Facilita la sincronizzazione fra mittente e destinatario, perch ogni bit di dati individuato mediante la

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

51

transizione nel punto centrale di trasmissione.


- Facilita la rilevazione di collisioni.
- Trasmette tanti 1 quanti 0; quindi, il valore medio del segnale trasmesso 0 volt; se, invece, la tensione
media fosse diversa da 0, il segnale conterrebbe una corrente continua, che dannosa perch rallenta la
trasmissione di un segnale elettrico a causa delle capacit presenti nel canale trasmissivo.
Svantaggio:
- A parit di velocit, ci vuole una banda passante doppia rispetto alla codifica diretta (ogni bit di dati richiede la trasmissione di due bit).
Es: Nel frame 11 10 01 01 00, i bit di dati sono 1 0 0.

5.3 Rilevamento e correzione errori


Nelle trasmissioni telefoniche e nelle trasmissioni wireless ci sono molte possibili cause di errori, soprattutto; invece, gli errori sono piuttosto rari nei mezzi pi moderni come le fibre ottiche. Gli errori sono dovuti di solito a rumore di fondo, disturbi improvvisi (ad es. fulmini), interferenze (ad es. motori elettrici).
Per gestire gli errori, dobbiamo aggiungere alcuni bit ridondanti ai dati da trasmettere, secondo due possibili approcci:
- Aggiungere ridondanza per individuare un errore e per correggerlo (codici a correzione derrore).
- Aggiungere ridondanza per segnalare un errore ma senza riuscire a correggerlo (codici a rilevazione
derrore).
Normalmente, un frame contiene una sequenza di n= m + r bit: m bit sono i dati e r bit sono ridondanti (bit
di controllo). Questa sequenza di n bit detta parola di codice.

5.3.1 Distanza di Hamming


Sono date due parole P1 e P2 aventi la stessa lunghezza lun. Consideriamo ogni differenza tra i bit P1[i] e
P2[i] (con i=1,..,lun). (Possiamo individuare ogni differenza mediante uno XOR sui bit.)
Es.
P1: 1000 1001
P2: 1011 0001
-------------XOR: 0011 1000
@

Il numero di coppie differenti (P1[i], P2[i]) detto distanza di Hamming delle due parole. Se la distanza
di Hamming tra le parole P1 e P2 d, ci vogliono esattamente d errori su altrettanti bit della parola P1 per
trasformarla nella parola P2.
dato un insieme di parole della stessa lunghezza, detto codice. La distanza di Hamming di un codice
il minimo delle distanze di Hamming fra tutte le possibili coppie di parole del codice.
Es.: Il codice {1011, 0111, 0000} ha distanza di Hamming 2.
La rilevazione o la correzione gli errori sono possibili soltanto se il codice usato ha un'opportuna distanza
di Hamming. In particolare:
- Per rilevare nErr errori serve un codice con distanza di Hamming nErr+1. Infatti, una parola trasformata da qualsiasi nErr errori (o un numero minore) diventa una parola non appartenente al codice, e ci
rivela che errata.
- Per correggere nErr errori serve un codice con distanza di Hamming 2*nErr+1. Infatti, una parola trasformata da nErr errori pi vicina a quella originaria che a qualunque altra parola valida.
Dunque, a seconda degli scopi da raggiungere, si individuano r bit di controllo (in funzione degli m bit di
dati) in modo da avere un codice (composto da parole di n= m + r bit) avente la desiderata distanza di
Hamming.

5.3.2 Codici di Hamming per la correzione degli errori


Es. Un codice costituito dalle seguenti parole:
P1:
P2:
P3:
P4:

00000
00000
11111
11111

00000
11111
00000
11111

Le distanze tra le coppie di parole sono:


d(P1,P2)= 5;

d(P1,P3)= 5;

d(P1,P4)= 10;

d(P2,P3)= 10;

d(P2,P4)= 5;

Questo codice ha distanza 5, e quindi pu correggere (5-1)/2= 2 errori (cifre sottolineate).


Infatti, se arriva la parola con due errori

00000 00111

d(P3,P4)= 5.

52

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

interpretata correttamente come la parola pi vicina, che

00000 11111

Per, se arriva la parola con tre errori


interpretata erroneamente come la parola pi vicina, che
anzich come

00000 00111
00000 11111
00000 00000

Per correggere un errore su m bit, occorrono almeno r bit di controllo, con


2r >= m + r + 1
cio sono necessari circa lg2(m) bit.
Il codice di Hamming raggiunge questo limite teorico, perch individua un eventuale bit errato in una sequenza di m bit aggiungendo r= arrotondaDifetto(log(m,2))+1 bit di controllo. Individuiamo le posizioni in cui inserire gli r bit e i loro valori.
- Poich i bit di controllo sono circa log(m,2), li inseriamo (all'interno della sequenza di bit da trasmettere) nelle posizioni corrispondenti ad una potenza di due (1, 2, 4, 8, ..); i bit di dati occupano le altre posizioni (3, 5, 6, 7, 9, ..).
- Devo trovare una corrispondenza biunivoca tra ogni bit di controllo e un sottoinsieme dei bit di dati.
Bit di controllo
Bit di dati
3
5
6
7

x
x
x

x
x

x
x

Assegno al bit di controllo Ci la somma senza riporto dei bit di dati corrispondenti a Ci.
Es. Calcolare il codice Hamming della parola 0110.
Soluzione
I bit di dati vanno piazzati nelle posizioni 3, 5, 6, 7:
c[3]= 0

c[5]=1

c[6]=0

c[7]= 0

I bit di controllo vanno calcolati mediante la regola precedente:


c[1]= c[3]+ c[5]+ c[7]= 0+ 1+ 0= 1
c[2]= c[3]+ c[6]+ c[7]= 0+ 1+ 0= 1
c[4]= c[5]+ c[6]+ c[7]= 1+ 1+ 0= 0
La parola da trasmettere : 1100110. (I bit sottolineati

sono quelli di controllo.)

Il destinatario calcola ogni bit di controllo Ci in modo analogo al mittente. Se il destinatario calcola un bit
Ci diverso da quello ricevuto, allora c' un errore tra i bit di dati che determinano Ci. Poich questo bit errato corrisponde soltanto ad alcuni bit di controllo, individuabile elaborando i bit Ci di controllo che in ricezione sono differenti dal valore calcolato:
Indice del bit errato= SUM (i | C[i] calcolato != C[i] ricevuto)
Es. Correggere l'errore del codice Hamming 1100100.
Soluzione
Bit di controllo
Valore ricevuto
Val. calcolato
c[1]
c[2]
c[4]

1
1
0

1
0
1

Confronto
==
!=
!=

Val. nella somma


2
4
6

Quindi, il bit errato in posizione 6, cio il suo valore originario l'opposto di quello ricevuto, cio 1.
La parola corretta senza i bit controllo : 0110.
@

5.3.2.1 Raffiche di errori


Il codice Hamming pu correggere un bit errato in un frame, ma inadeguato quando ci sono pi bit errati.
Invece, spesso nei sistemi di comunicazione ci sono raffiche di errori, dovute a picchi di disturbo sulla linea. Per correggere anche raffiche di errori di lunghezza massima prefissata k, modifichiamo questo codice
mediante una semplice tecnica:
- Il mittente attende k parole da trasmettere.
- Il mittente inserisce il codice Hamming delle k parole in una matrice, una parola in ogni riga.
- Il mittente trasmette ogni colonna della matrice.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

53

- Il destinatario inserisce ogni messaggio ricevuto in una matrice, una parola in ogni colonna; alla fine,
ogni riga di questa matrice contiene il codice Hamming di ogni parola trasmessa.
- Un eventuale disturbo su k bit consecutivi avviene su ogni messaggio trasmesso; quindi, modifica 1 bit
di ogni parola trasmessa, e quindi ogni errore ricostruibile.

5.3.3 Bit di parit per il rilevamento degli errori


Il bit di parit aggiunto ad una parola ed calcolato in modo tale che il numero totale di bit uguali ad 1
sia pari (cio, si ha una parit pari).
Dati
Bit di controllo
1011 0101
1000 0111

1
o

La distanza di Hamming di questo codice 2, e dunque pu rilevare un errore. Infatti, un errore trasforma
il frame in uno contenente un numero dispari di 1, e quindi una parola non valida.
Per rilevare raffiche di errori di lunghezza <= k mediante il bit di parit, si pu usare una tecnica analoga a
quella che corregge raffiche di k errori mediante il codice Hamming. La differenza che si usa un solo bit
di controllo per ogni parola, e non r.
Esiste anche la variante che aggiunge un bit di parit "dispari", cio tale che il numero totale di bit uguali
ad 1 sia dispari.

5.3.4 Confronto tra codici per la correzione e per il rilevamento degli errori
I codici correttori di errore sono usati raramente (ad esempio, nelle trasmissioni simplex, dove il ricevente
non pu chiedere una ritrasmissione al mittente), perch in generale pi efficiente rilevare gli errori e ritrasmettere (soltanto quando c' un errore) i dati corrotti invece di usare un codice (pi dispendioso in termini di ridondanza) per la correzione degli errori.
Es.: Consideriamo un canale con: blocchi dati di 1.000 bit; errori singoli (un bit per blocco); probabilit di
errore uguale a 10-6 per bit.
Per correggere un errore singolo su un blocco di 1.000 bit mediante il codice di Hamming, ci vogliono
log(1.000,2)= 10 bit di controllo; quindi, la trasmissione di un Megabit richiede l'aggiunta di
1.000*10= 10.000 bit di controllo.
Invece, per rilevare un errore singolo in un blocco mediante la parit, sufficiente aggiungere un bit ad
ogni blocco. Poich il tasso d'errore 10-6, soltanto un blocco su 1.000 sbagliato e quindi deve essere ritrasmesso. Di conseguenza, per ogni Megabit si deve rispedire un blocco compreso il bit di parit, cio
1.001 bit; dunque, la trasmissione di un Megabit richiede l'aggiunta di 1.000 bit di parit (uno per ogni
blocco) e di 1.001 bit (il blocco ritrasmesso), per un totale di 2.001 bit contro i 10.000 del codice di
Hamming.
@

5.3.5 Codice polinomiale per il rilevamento degli errori


Il Cyclic Redundancy Code (CRC), o codice polinomiale usa una corrispondenza biunivoca tra le stringhe di m bit e i polinomi a coefficienti 0 e 1 di grado m-1 in una variabile. Ad esempio, la stringa di (4) bit
1101 corrisponde al polinomio (di grado 3) x3 + x2 + x0.
Il CRC elabora i polinomi mediante le seguenti operazioni dell'aritmetica polinomiale in mod 2:
- L'addizione e sottrazione sono equivalenti all'or esclusivo (non c' riporto o prestito).
- La divisione calcolata attraverso ripetute sottrazioni.
Dato un frame M da trasmettere composto da m bit, chiamiamo M(x) il polinomio corrispondente.
Il mittente ed il destinatario si accordano su un polinomio generatore G(x) con le seguenti propriet:
1 Il grado r di G(x) < grado di M(x).
2 Il bit pi significativo e quello meno significativo sono entrambi uguali ad 1. (Ad es., x4 + x + 1.)
3 Il polinomio corrispondente alla sequenza di bit che il mittente trasmetter divisibile per G(x)
M(x) non divisibile per G(x); quindi, per soddisfare il requisito 3, il mittente trasmette M seguito da
un'altra sequenza C, detta checksum, calcolata (mediante una somma di controllo) in modo che il polinomio corrispondente alla sequenza M | C sia divisibile per G(x).
Quando il destinatario riceve la sequenza composta dal frame e dal checksum, la divide per G(x); se il risultato non 0, c' stato un errore di trasmissione.
Il checksum di M generato da G(x) si effettua come segue:
- Si appendono r bit di valore 0 dopo M(x), che quindi ha m + r bit e corrisponde al polinomio xr * M(x).
- Si calcola il resto della divisione tra xr * M(x) e G(x). Il resto contiene al massimo r bit, perch il diviso-

54

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

re ha r+1 bit.
- Si calcola la differenza tra xr * M(x) e il resto della divisione effettuata al passo precedente. Il risultato
il frame seguito dal checksum, cio la sequenza da trasmettere, ed ovviamente divisibile per G(x).
Questa sottrazione fatta mediante un XOR sugli r bit meno significativi (perch il resto ha al massimo
r bit), e quindi non modifica M (perch M non occupa gli r bit meno significativi )
Es.: Trasmettere la sequenza 1101 0110 11 usando il polinomio generatore x4 + x + 1.
Il mittente aggiunge 4 zeri (in grassetto nello schema) dopo la sequenza e divide la sequenza risultante con
la stringa 10011 (corrispondente al polinomio generatore).
10011

110
100
10
10

1
1
0
0

011011
1
11
11
1011
1001
10
10

0 0 0 0 Il divisore entra nel dividendo.


Come sopra.
0
Il dividendo deve avere 5 bit che iniziano con 1.
1
1 0 0 Come sopra.
011
1 1 1 0 Resto ottenuto

1110

il CRC da aggiungere in coda alla sequenza dei bit da trasmettere. Quindi, il messaggio da trasmettere 1101 0110 1111 10.
Il destinatario rif le stesse operazioni elencate sopra mediante lo stesso polinomio generatore: se il resto
0, la trasmissione stata corretta.
Questo metodo molto potente; infatti, si pu dimostrare (vedi parzialmente negli approfondimenti) che
un codice polinomiale con r bit rileva:
- ogni errore di un numero dispari di bit;
- ogni raffica di errori di lunghezza <= r (quindi, anche ogni errore su due bit consecutivi).
Inoltre, questo metodo anche efficiente; infatti, il mittente pu calcolare il CRC durante la trasmissione
(invece di calcolarlo prima) e, analogamente, il destinatario pu calcolare il CRC durante la ricezione (invece di calcolarlo dopo avere ricevuto tutta la sequenza).
Questi polinomi sono standard internazionali:
- CRC-12: x12 + x11 + x3 + x2 + x1 + 1;
- CRC-16: x16 + x15 +x2 + 1;
- CRC-CCITT: x16 + x12 + x5 + 1;
Un CRC a 16 bit rileva anche il 99.997% delle raffiche lunghe 17 bit e il 99.998% di quelle lunghe 18, se
gli m bit del messaggio sono distribuiti casualmente (poich questo non vero nella realt, le raffiche di 17
e 18 sfuggono con una frequenza maggiore di quella indicata prima).
Il calcolo del CRC pu essere implementato, oltre che mediante un software, anche mediante un semplice
circuito che effettua qualche shift. Questa soluzione usata nelle LAN e in qualche linea punto-a-punto.

5.4 Gestione delle sequenze di trasmissione


La struttura generale di un frame comprende, oltre i delimitatori e i bit per il controllo degli errori, anche i
seguenti campi fondamentali:
kind

seq

ack

info

kind: specifica se il frame contiene dati oppure di controllo


seq: il numero progressivo del frame
ack: contiene informazioni relative al riscontro dei frame ricevuti (acknowledgement).
info: contiene i dati da trasferire; ad es., pu corrispondere a un pacchetto completo ricevuto dal livello
di network.
I primi tre campi costituiscono lintestazione (header) del frame.

5.4.1 Protocollo semplice stop-and-wait con riscontro


Se un frame (di dati o di ack) si danneggia nella trasmissione (e quindi il ricevente lo rileva) o si perde
completamente (e quindi il ricevente non pu accorgersene), si potrebbe procedere come segue:
- Il destinatario invia un ack quando riceve un frame dati corretto.
- Il mittente attiva un timer quando invia un frame di dati; se l'ack del destinatario non arriva entro la scadenza del timer, il mittente invia nuovamente il frame.
Per, questa semplice procedura errata; infatti, se:
- il frame arriva bene, e inoltre

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

55

- l'ack (inviato dal destinatario) si perde, e inoltre


- il frame rinviato arriva bene,
allora, il livello di network di destinazione riceve erroneamente due copie del frame.
Per risolvere il problema descritto, il mittente inserisce del frame un campo seq, che contiene l'identificativo di sequenza del frame, e che il destinatario usa per riconoscere un eventuale frame doppione.
Il destinatario invia un ack quando riceve un frame corretto, ma passa il frame al livello superiore solo se il
frame ha l'identificativo atteso di sequenza. sufficiente un bit per l'identificativo, poich l'unica ambiguit in ricezione tra un frame ed il suo immediato successore: infatti, un frame non confermato sempre
ritrasmesso.
Il mittente trasmette un frame (inserendo alternativamente 1 e 0 nel campo seq) quando riceve l'ack del
frame precedente.
Il mittente gestisce il mancato arrivo di un ack (perch il frame inviato o l'ack atteso in ricezione si rovinato o perduto) mediante un timer opportunamente calibrato per evitare di ritrasmettere un frame ricevuto
correttemente.
Questi protocolli, dove il mittente aspetta un ack di conferma prima di trasmettere il prossimo frame, sono
detti PAR (Positive Ack with Retransmission) o ARQ (Automatic Repeat reQuest).
Mittente
void protocollo_StopAndWaitMittente() {
seq= 1
while (true) { // Loop infinito
datiNet= attendiDatiDalLivelloNetwork() // $datiNet sono i dati ricevuti.
frame= costruisciFrame(seq, datiNet)
do
inviaDatiAlLivelloFisico(frame)
while (attendiDatiDalLivelloFisico != ACK)
// Riceve ACK oppure TIMEOUT. Se riceve TIMEOUT, ripete l'invio e l'attesa.
seq= 1 - seq
} // while
} // protocollo_StopAndWaitMittente

Destinatario
void protocollo_StopAndWaitDestinatario() {
seq= 1
while (true) { // Loop infinito
frame= attendiDatiDalLivelloFisico() // $frame e` il frame ricevuto.
if (crcOk(frame)) { // Il frame e` stato trasmesso correttamente.
inviaAckAlLivelloFisico()
if (seq == iSeq(frame)) { // $frame e` ricevuto per la prima volta.
inviaDatiAlLivelloNetwork(estraiDati(frame))
seq= 1 - seq
} // if
} // if
} // while
} // protocollo_StopAndWaitDestinatario

In sintesi:
- Il mittente inserisce in ogni frame nuovo l'identificativo (1,0,1,0..,) e lo invia quando un ack arriva;
finch ci non succede, ritrasmette lo stesso frame.
- Il destinatario invia un ack di conferma per ogni frame corretto, ma consegna al livello di network solo i
frame con la sequenza 1,0,1,0...

56

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

In assenza di errori, il destinatario riceve ed accetta fr[x], fr[x+1], fr[x+2]:

Se il frame fr[x+1] si perde o si danneggia, il mittente invia fr[x], fr[x+1], fr[x+1], fr[x+2] e il destinatario riceve ed accetta fr[x], fr[x+1], fr[x+2]:

Invece, se un ack si perde o si danneggia, c' la situazione seguente, dove il destinatario:


- riceve ed accetta fr[x];
- riceve per la seconda volta fr[x] e lo rifiuta perch questo non ha il codice previsto;
- riceve e accetta fr[x+1];
- riceve e accetta fr[x+2].

Se il timeout troppo breve e se c' un errore sull'invio di fr[x+1], il destinatario:


- riceve ed accetta fr[x];
- riceve per la seconda volta fr[x] e lo rifiuta perch questo non ha il codice previsto;
- non riceve fr[x+1];
- riceve fr[x+2] e lo rifiuta perch questo non ha il codice previsto;

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

57

- riceve e accetta fr[x+3].


Quindi, il destinatario non consegna fr[x+1] e fr[x+2] al livello di network ma nessuno se ne accorge:

Per risolvere il problema precedente, la durata del timeout deve essere maggiore della somma tra:
- il tempo di trasmissione del frame pi grande,
- il tempo di elaborazione in ricezione,
- il tempo di trasmissione dell' ack del destinatario.
Quindi deve essere:
Durata del timeout > (Tempo di trasmissione del frame di dati pi grande)
+ (Tempo di elaborazione del frame di dati)
+ (Tempo di trasmissione del frame di Ack)

Se il destinatario inviasse un ack solo quando riceve un frame fr[x] per la prima volta, ci potrebbe essere
un loop, perch il destinatario rifiuterebbe ogni ricezione di fr[x] successiva alla prima perch fr[x] non
avrebbe il codice previsto.

La velocit di questo protocollo aumenta se il destinatario invia un NAck (Negative Acknowledgement)


quando riceve un frame danneggiato o diverso da quello atteso (ci pu indicare la perdita del frame precedente), invece di lasciare scattare il timeout nel mittente.

5.4.2 Protocolli a finestra scorrevole


Nei casi precedenti i dati viaggiano in una sola direzione e gli ack nella direzione contraria.
Talvolta, abbiamo una comunicazione bidirezionale di dati, cio:

58

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

- nella direzione da A a B, viaggiano i frame dati inviati da A a B e i frame di ack inviati da A a B (in risposta ai frame dati inviati da B ad A);
- nella direzione da B a A, viaggiano i frame dati inviati da B a A e i frame di ack inviati da B a A (in risposta ai frame dati inviati da A ad B);
I frame hanno anche un campo kind che indica il tipo di frame: di dati o di ack.

C' un'idea migliore: B, quando deve inviare un ack ad A, aspetta di ricevere (dal livello di network) un
frame dati (da inviare ad A) e mette anche questo ack dentro questo frame dati. Questa tecnica si chiama
piggybacking (= portare a spalle).

Il campo ack serve proprio a trasmettere un eventuale ack. Questa tecnica risparmia notevolmente la banda
usata e la cpu; infatti, un ack non inviato in un apposito frame, che richiede un tempo (per creare e riempire la struttura, per calcolare il checksum, ecc.) e una trasmissione (e quindi l'uso di banda).
Lutilizzo di questa tecnica per causa un problema: per quanto tempo il destinatario B aspetta un frame
(dal proprio livello di network) sul quale trasportare un ack che deve essere inviato? Non troppo, perch, se
lack non arriva in tempo, il mittente A ritrasmette il frame anche se ci non necessario. Dunque, si stabilisce un limite al tempo di attesa di un frame sul quale trasportare lack; trascorso tale tempo, si crea un
frame apposito nel quale si trasmette solo lack.
Diminuendo il numero di ack da trasmettere, si velocizzano le operazioni di trasmissione; per questo, alcuni protocolli hanno introdotto le finestre scorrevoli (sliding-windows). I protocolli a finestra scorrevole
stabiliscono un certo numero (larghezza della finestra) di frame dati che si possono inviare consecutivamente senza attendere lack di riscontro. I protocolli a finestra scorrevole sono full-duplex (per i dati),
sfruttano il piggybacking e sono pi robusti di quelli stop-and-wait.
Ogni frame inviato contiene un indice di sequenza, da 0 a 2n-1 (l'indice seq ha da n bit, e ricircola sugli
stessi valori). La finestra definita da un intervallo di indici [indIniz, indFin] validi di sequenza. La
finestra :
- scorrevole, cio indIniz o indFin possono essere modificati;
- di grandezza variabile, che <= della capienza massima della finestra.
5.4.2.1 Finestra del mittente
Il mittente memorizza l'intervallo degli indici di sequenza che pu trasmettere: gli indici di sequenza dentro la finestra rappresentano i frame da spedire oppure quelli spediti ma non ancora confermati.
Quando un nuovo frame arriva dal livello di network, l'indice corrispondente entra nella finestra perch il
frame dovr essere trasmesso.
Quando arriva un ack, l'indice corrispondente esce dalla finestra perch l'arrivo corretto del frame stato
confermato.
Il mittente memorizza i frame dentro la finestra per la possibile ritrasmissione; se il buffer pieno, il livello di data link sospende la ricezione di pacchetti che arrivano dal livello di network.
5.4.2.2 Finestra del destinatario
Il destinatario memorizza l'intervallo degli indici di sequenza che pu accettare: se riceve un frame avente
un indice fuori dalla finestra, lo scarta (e non invia il relativo ack); se riceve un frame avente un indice
dentro la finestra, accetta il frame, spedisce il relativo ack e eventualmente aggiorna l'indice inferiore.
Se la finestra del destinatario ha sempre grandezza 1, il destinatario accetta i frame soltanto nell'ordine di
arrivo. (Se la grandezza maggiore di 1, questo non detto.)

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

59

La finestra del mittente pu differire da quella del destinatario nella grandezza o nel limite inferiore o nel
limite superiore. In questo modo, il livello di data link ha pi libert nell'ordine di trasmissione.
In ogni caso, il livello di network consegner i pacchetti nell'ordine di partenza dal mittente (non nell'ordine di arrivo al destinatario).
5.4.2.3 Protocolli go-back-n e selective repeat
Se il tempo di andata e ritorno del segnale alto (ad es., in un canale satellitare il tempo tipicamente ca.
500 + 500 msec), i protocolli stop-and-wait sono molto inefficienti, perch quasi sempre sono fermi per
aspettare l'ack. Per migliorare le cose, si pu consentire l'invio di un certo numero di frame anche senza
aver ricevuto l'ack del primo. Questa tecnica detta pipelining, che, per, causa un problema: il mittente
invia molti frame prima di sapere che un frame precedente si rovinato.
Una prima soluzione al problema quella del protocollo go-back-n (=indietreggia di n):
- Se un frame arriva danneggiato o con un numero errato di sequenza, il destinatario ignora tale frame e
tutti i successivi, cio non invia i relativi ack. Ci corrisponde ad una finestra di grandezza 1 nel destinatario, che quindi accetta i frame solo nell'ordine giusto.
- Quando il mittente va in timeout sul frame danneggiato e poi su tutti quelli successivi (scartati dal destinatario), ritrasmette tutti questi frame.

Il mittente bufferizza ogni frame non confermato per poterlo eventualmente ritrasmettere; se riempie il so
buffer, blocca il livello di network finch il buffer pieno. C' spreco di banda se il tasso d'errore alto o il
timeout lungo.
Una seconda soluzione, pi efficiente, detta selective repeat (=ripetizione selettiva):
- Il destinatario bufferizza ogni frame ricevuto dopo un eventuale frame rovinato; quando questo arriva
nuovamente (senza errori), il destinatario lo consegna al livello di network insieme a tutti quelli successivi contigui mantenuti nel buffer.
- Per ogni frame arrivato bene, il destinatario invia un ack col numero pi alto della sequenza completa
arrivata fino a quel momento.
- Quando c' un timeout, il mittente rispedisce soltanto il frame corrispondente.
Con il protocollo selective repeat, il mittente e il destinatario gestiscono entrambi un buffer: il mittente
memorizza i frame non confermati; il destinatario memorizza i frame arrivati dopo un frame corrotto;
quindi, richiesta una quantit maggiore di memoria. Per, c' un basso spreco di banda.
Entrambi i protocolli go-back-n e selective-repeat devono gestire pi timer (uno per ogni frame inviato e
non confermato); il ricevente invia gli ack mediante il piggybacking, se possibile, o mediante un apposito
frame.

5.4.3 HDLC (High Level Data Link Control)


LHDLC un protocollo a finestra scorrevole, orientato al bit ed usato per trasmissioni punto-a-punto o
multi-punto, in modalit half-duplex o full-duplex.
La trama cos strutturata:

60

Reti di Elaboratori - 2014

Flag
01111110

Indirizzo
(1 byte)

Controllo
(1 byte)

Area dati
(numero variabile di bit)

M.T.Bombi, A.Giunta e altri

CRC
(2 byte)

Flag
01111110

Flag il flag byte di inizio e fine trama (01111110), ed rimpiazzato se compare nel campo Dati.
L'Indirizzo determina il destinatario del frame nelle configurazioni multi-punto.
L'Area dati contiene le informazioni vere e proprie, di lunghezza variabile. Non c' nelle trame di supervisione.
Il CRC generato dal polinomio x16+x12+x5+1.
Il Controllo specifica il tipo di trama (cio, contiene le informazioni necessarie alla gestione della connessione). Ci sono tre tipi di trame:
- Trame di Informazione
0 NS (3 bit) P/F

NR (3 bit)

- Trame di Supervisione
10 T(2 bit)

P/F

NR (3 bit)

- Trame non numerate


11 T(2 bit)

P/F

M(3 bit)

Il campo NS contiene il numero della trama trasmessa.


Il campo NR contiene il numero della prossima trama che ci si aspetta di ricevere; quindi, serve anche da
Ack perch conferma che le eventuali trame con numero minore di NR (in mod 8) sono state ricevute correttamente.
Una trama di informazione contiene informazioni nel campo dati.
Una trama di supervisione controlla la connessione ed utilizzata quando non ci sono informazioni da trasmettere e si deve confermare la corretta ricezione di trame (il protocollo HDLC usa un contatore mod 8 e
quindi ha una finestra scorrevole di lunghezza 7) oppure si deve richiedere la loro ritrasmissione in caso di
trame errate.
- Il campo T (bit 2 e 3 del campo di controllo) rappresenta il comando per le funzioni di supervisione:
- RR (Receive Ready = pronto a ricevere) 00: il nodo pronto a ricevere la trama di informazione NR
(Ack delle trame di numero inferiore a NR).
- REJ (REJect = rifiuto) 01: il nodo richiede la ritrasmissione delle trame numerate a partire dal valore
NR (significa che le trame fino a NR-1 sono state ricevute correttamente, la trama NR no).
- RNR (Receive Not Ready = ricezione non pronta) 10: il nodo segnala la propria indisponibilit temporanea a ricevere trame di informazione. Conferma per la corretta ricezione delle trame fino NR escluso.
- SREJ (Selective REJect) 11: il nodo segnala il rifiuto selettivo della trama NR.
Una trama non numerata usata per stabilire o chiudere la connessione (attivazione e disattivazione di un
host). Pu contenere informazione nel campo dati, ma non contiene i contatori NS e NR.
La combinazione tra i campi T (bit 2 e 3) e M (bit 5, 6 e 7) specifica un'azione di controllo della connessione. Le azioni principali sono:
- SABM (Set Asynchronous Balanced Mode, predisposizione in modo asincrono bilanciato) 11, 100: richiesta alla stazione remota di iniziare una connessione di tipo paritetico.
- UA (Unnumbered Acknowledgment = accettazione non numerata) 00, 110: la ricezione di ogni trama
non numerata deve essere confermata da un Ack non numerato.
- DISC (DISConnect = disconnessione) 00, 010: la stazione remota conferma la disconnessione inviando
la trama UA.

5.5 Il livello di data link di Internet


La rete di Internet costruita su un insieme di sottoreti di comunicazione, che sono formate da router collegati fra loro in modo punto-a-punto su linee dedicate.
Gli Internet Provider o Internet Service Provider consentono ai propri abbonati di connettersi mediante
nodi, collegati a Internet tramite linee dedicate, che svolgono funzioni di host e funzioni di routing.
- Un utente si collega ad un IP mediante un modem, collegato con una connessione punto-a-punto, generalmente su linea commutata.
- Una LAN si connette ad un IP mediante un gateway, appartenente alla stessa LAN, collegato con una
connessione punto-a-punto al router dell'IP. Ovviamente i collegamenti avvengono attraverso lutilizzo
del modem.
Questi tipi di collegamento a livello di linea sono gestiti da protocolli punto-a-punto di linea. In Internet i

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

61

pi usati sono i protocolli SLIP e PPP.

5.5.1 Il protocollo SLIP (Serial Line Internet Protocol):


il protocollo pi vecchio tra i due; un protocollo senza connessione e senza riscontro.
Un pacchetto IP ha il flag byte 0xC0 alla fine. Se questo byte tra i dati, sostituito dalla coppia 0xBD,
0xDC.
Questo protocollo poco utilizzato perch presenta alcuni gravi problemi:
- Non gestisce gli errori; questo compito demandato ai livelli superiori.
- Supporta solo IP.
- Ogni host deve sapere in anticipo lindirizzo IP dellinterlocutore; quindi, un indirizzo non pu essere
assegnato dinamicamente durante la connessione, cosa che invece accade di norma nelle connessioni
tramite i provider.
- Non permette l'autenticazione, cio nessuno dei due host interlocutori conosce l'identit dell'altro host.
- Non uno standard Internet approvato, per cui esistono molte versioni differenti e incompatibili.

5.5.2 Il protocollo PPP (Point-to-Point Protocol):


PPP il protocollo di linea in Internet attualmente pi utilizzato e diffuso; definito negli standard RFC
1661, 1662 e 1663.
PPP:
- Riconosce gli errori.
- Supporta molti protocolli.
- Pu assegnare un indirizzo IP dinamicamente al momento della connessione con il Provider (questa prestazione molto utile, perch ci sono pochi indirizzi IP e quindi non possibile assegnare un indirizzo
IP unico ad ogni utente Internet da casa).
- Permette lautenticazione.
- Ha molte altre migliorie rispetto a SLIP.
Inoltre, il protocollo PPP porta informazioni su protocolli di livello superiore:
- LCP (Link Control Protocol): protocollo di controllo del collegamento per agganciare la linea, testarla, negoziare opzioni e rilasciare quando la linea quando non pi necessaria.
- NCP (Network Control Protocol): protocollo di controllo di rete per negoziare le opzioni del livello di
network. Ne esiste uno per ogni livello di network supportato (IP, IPX, AppleTalk).
Il protocollo PPP orientato al carattere, ma presenta un formato delle trame molto simile ad HDLC.

Flag il flag byte di inizio e fine trama (01111110), ed rimpiazzato se compare nel campo Dati.
Address vale sempre 11111111 per indicare che tutte le stazioni devono accettare il frame.
Control vale per default 00000011 e indica un frame non numerato (cio, indica che per default PPP un
protocollo senza connessione e senza riscontro).
Poich i campi Address e Control hanno valore costante nella configurazione di base, LCP pu negoziare
l'opzione di non trasmetterli, risparmiando cos 2 byte.
Protocol indica il tipo di pacchetto contenuto nel campo Dati. LCP pu negoziare la grandezza a 1 byte.
Dati contiene i dati da trasmettere; ha una lunghezza variabile fino ad una massima grandezza negoziata.
In genere ha una lunghezza base di 1500 byte.
Checksum contiene il checksum; la lunghezza di solito 2 byte ma pu essere negoziata a 4 byte.
5.5.2.1 Funzionamento tipico di un PC che si connette a Internet per diventare host
- Il PC chiede una connessione al router del provider mediante un modem.

62

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

- Il modem del router risponde e stabilisce una connessione fisica.


- Il PC invia una serie di pacchetti LCP mediante PPP. Questi pacchetti e le relative risposte selezionano i
parametri PPP da utilizzare.
- Il PC invia una serie di pacchetti NCP per configurare il livello di network; poich ci sono pochi indirizzi IP, lISP ne possiede un gruppo e ne assegna dinamicamente uno al PC allinizio della connessione.
- Ora il PC un host connesso a Internet e pu inviare e ricevere pacchetti IP.
- Quando lutente termina, NCP sgancia la connessione del livello di network e libera lindirizzo IP.
- LCP sgancia la connessione del livello di linea.
- Il modem libera la linea telefonica e rilascia la connessione del livello fisico.

5.5.3 PPPoE
PPPoE (RFC 2516) significa "Point-to-Point Protocol over Ethernet"; incapsula frame PPP in frame Ethernet ed utilizzato per le connessioni Internet su linee DSL. Fornisce le caratteristiche standard di un protocollo PPP: autenticazione, cifratura, compressione, etc.
Il PPPoE un protocollo di tunneling che incapsula il livello IP su una connessione tra due porte Ethernet
pur mantenendo le caratteristiche di un collegamento PPP; per questo motivo utilizzato per "comporre il
numero" virtualmente di un altro computer dotato di connessione Ethernet e per stabilire una connessione
punto-a-punto con esso; su questa connessione vengono poi trasportati i pacchetti IP in base alle caratteristiche del PPP.

5.6 {#} Approfondimenti


5.6.1 Codice Polinomiale
5.6.1.1 Situazioni di errore rilevate da un codice polinomiale
Sono dati:
- G(x):= Polinomio generatore di grado r.
- T(x):= Polinomio associato alla sequenza trasmessa T (che comprende il messaggio e il checksum).
- E(x):= Polinomio associato all'errore in trasmissione E.. Quando E(x) = pow(x,i) + pow(x,j) +
... significa che c' stato un errore in trasmissione nei bit i, j, ..
Di conseguenza, la sequenza ricevuta T + E; inoltre,
- (T(x)+E(x))%G(x) = E(x)%G(x) (perch T(x) multiplo di G(x)).
Vogliamo individuare su G(x) una condizione sufficiente e il pi possibile minimale per rilevare alcune sequenze d'errore.
5.6.1.1.1 Sequenze di errori di lunghezza k<=r
La presenza di una sequenza di errori di lunghezza k<=r significa che i bit errati sono compresi tra un indice i e un indice i+k-1:
E(x)= pow(x, i+k-1) + .. + pow(x, i).
Quindi, pow(x, i) un fattore comune a tutti i monomi di "E(x)"; quindi:
E(x)= pow(x, i) * (pow(x, k-1) + pow(x, k-2) + .. + 1)

Per rilevare l'errore "E(x)", sufficiente rendere E(x) non divisibile per G(x):
- Il secondo fattore (che chiamiamo E2(x)) non divisibile per G(x) perch
grado(E2(x))< grado(G(x)), che discende dalla: grado(E2(x))= k-1 < r = grado(G(x))
- Il primo fattore (che chiamiamo E1(x)) non divisibile per G(x) se scegliamo
G(x):= 1 + un altro monomio qualsiasi.

Quindi, una condizione sufficiente : G(x) = 1 + un altro monomio qualsiasi

5.7 Esercizi
Commentare ogni espressione impostata ed etichettarla con un simbolo.
Motivare ogni passaggio non algebrico.
Indicare l'unit di misura dopo ogni risultato individuato.

5.7.1 Framing
1. Una sequenza di byte trasmessa mediante byte di inizio e fine. Ogni frame contiene 100 byte. Ogni
byte appartiene al codice Ascii base.
A. Qual il numero massimo di byte di dati in un frame?
B. Qual la probabilit di avere un frame composto dal numero massimo di byte di dati?

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

63

2. 80 bit sono trasmessi mediante il riempimento di bit e sono distribuiti in frame di lunghezza <= 60 bit.
A. Quanti bit di dati ci sono al massimo in un frame?
Supponiamo di avere la sequenza composta soltanto dal valore 1.
B. Quante sequenze di 5 bit di dati ci sono nel primo frame?
C. Quanti bit di dati ci sono nel primo frame?
D. Quanti bit di dati ci sono nel terzo (ed ultimo) frame?
E. Quanti bit di controllo ci sono nel terzo frame?
3. Il livello di data-link riceve dal livello superiore $nBitDati bit di dati e li codifica mediante Manchester; dopo la codifica, il numero di bit diventa $nBitTot. Definiamo rendimento il rapporto $nBitDati / $nBitTot.
A. Qual il valore minimo del rendimento, in funzione di $nBitDati?
B. Qual il valore minimo di $nBitDati bit per avere un rendimento >= 0,4?
4. Un frame trasmette $nBDati bit di dati (pi i bit di controllo) mediante la codifica di Manchester. I primi
due e gli ultimi due bit del frame trasmesso arrivano correttamente; ogni altro bit ha una probabilit $p di
arrivare correttamente a destinazione. ($nBDati e $p sono dati.)
A. Qual la probabilit per il primo bit di dati di essere interpretato erroneamente dal destinatario?
B. Qual la probabilit per il frame di arrivare completamente integro al livello di network?

5.7.2 Gestione degli errori


5. Un codice composto da parole di 4 bit cos costruite:
- I bit[1..3] contengono l'informazione da trasmettere.
- Il bit[4] definito in modo da avere un numero pari di 1 nella parola.
A. Calcolare la distanza di Hamming di questo codice.
6. A. Codificare la parola 0001 mediante il codice di Hamming. Mostrare i passaggi intermedi.
B. Il destinatario riceve la parola sporcata da un errore sul primo bit. Ricostruire la parola trasmessa (mediante la parola ricevuta). Mostrare i passaggi intermedi.
C. Trasmettere le parole 0001 0001 0001 in modo da gestire una raffica di 3 errori mediante il codice di
Hamming.
D. Il destinatario riceve le 3 parole del punto precedente sporcate da una raffica di 2 errori a partire dal terzo bit trasmesso. Ricostruire le parole trasmesse (mediante le parole ricevute).
7. Si vuole trasmettere la sequenza di bit 10011101 usando il metodo standard del CRC; il polinomio generatore pow(x,3) + 1.
8. Individuare su G(x) una condizione sufficiente e il pi possibile minimale per rilevare due errori qualsiasi.

5.7.3 Gestione delle sequenze di trasmissione


9. Un host trasmette dati ad un altro host usando un protocollo "stop-and-wait con Nack" con:
- Tempo di trasmissione dei dati: 5
- Tempo di elaborazione del destinatario: 1
- Tempo di trasmissione di un riscontro: 3.
- Probabilit di ricevere il riscontro Ack: 0,9.
- Probabilit di ricevere il riscontro Nack: 0,05.
- Probabilit di non ricevere un riscontro: 0,05.
- Non ci sono mai due invii errati consecutivi.
A. Calcolare il tempo minimo di timeout.
B. Calcolare la media del tempo di attesa del mittente tra l'invio di un frame di dati e l'arrivo del riscontro
positivo del frame.
5.7.3.1 Simulazione delle sequenze di trasmissione
Schematizzare la sequenza temporale degli eventi (rispettando le ipotesi elencate nel sottopunto) compilando una tabella composta da una riga per ogni istante in cui avviene un evento e da queste 9 colonne:
Ist. I. da A
R. da A T. su A I. Nw. di A
I. da B
R. da B T. su B I. Nw. di B
Descrizione delle colonne:
- Ist:= Istante in cui un evento scatta.

64

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

- I. da A(B):= Blocco Inviato dall'host A(B).


- R. da A(B):= Blocco Ricevuto dall'host A(B).
- T. su A(B):= Timeout scattato su un blocco inviato dall'host A(B).
- I. a Nw. di A(B):= Frame Inviato dall'host A(B) al proprio livello di Network.
Simboli:
- frA[i] (frB[i]) il frame i inviato da A (B).
- AcKA[i] (AckB[i]) l'Ack inviato da B (A) per riconoscere frA[i] (frB[i]).
Descrizione
Host A
Host B
Istante di ricezione del fr[0] dal pro0
0
prio livello di Network
Istante di trasmissione del fr[0] sul
0
Quando B risponde AckA[0] oppure quando B suproprio livello fisico
pera l'attesa massima per il piggybacking di Ack.
Periodo di invio di un frame dal livello
3
5
di network al livello di data link
Attesa massima per il piggybacking di
11
11
Ack
Tempo di trasmissione di un frame (di
1
1
dati o di risposta)
Timeout
7
7
10. Protocollo "stop-and-wait con riscontro" con mittente A.
- Il frame 2 inviato dall'host A perso durante il primo invio. (Inserire * nella casella di questo evento.)
- Evento finale: Invio di frA[2] al l. network di B.
Sol.
Ist.
I. A
R. da A
T. su A I. Nw. di A
I. da B
R. da B T. su B I. Nw. di B
0
frA[0]
1
AckA[0] frA[0]
frA[0]
2
AckA[0]
3
frA[1]
4
AckA[1] frA[1]
frA[1]
5
AckA[1]
6
frA[2]
*
13
2 di
frA[2]
frA[2]
14
AckA[2] frA[2]
frA[2]
11. Protocollo "piggybacking" con mittenti A, B.
- Il frame 2 inviato dall'host A perso durante il primo invio. (Inserire * nella casella di questo evento.)
- Evento finale: Secondo invio di frA[2] dall'host A all'host B.
12. Protocollo "go back n" con mittente A.
- Il frame 2 inviato dall'host A perso durante il primo invio. (Inserire * nella casella di questo evento.)
- Evento finale: Invio di frA[2] al l. network di B.
13. Protocollo "selective repeat" con mittente A e con finestra del destinatario di capienza infinita.
- Il frame 2 inviato dall'host A perso durante il primo invio. (Inserire * nella casella di questo evento.)
- Evento finale: Invio di frA[4] al l. network di B.
14. Protocollo "selective repeat" con mittente A e con finestra del destinatario di capienza 2.
- Il frame 2 inviato dall'host A perso durante il primo invio. (Inserire *) nella casella di questo evento.)
- Evento finale: Invio di frA[3] al l. network di B.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

65

6 Il sottolivello MAC (Medium Access Control)


6.1 Allocazione del canale
Come gi chiarito, le reti sono divise in due categorie: punto a punto e broadcast.
Nelle reti broadcast (che spesso sono LAN, ma talvolta sono anche parti di WAN basate su satelliti) il problema principale decidere quale host user il mezzo trasmissivo quando c' competizione. Si deve evitare
la trasmissione contemporanea di due stazioni, perch i relativi segnali si disturberebbero a vicenda.
La stazione autorizzata a trasmettere su un canale broadcast scelta dai protocolli appartenenti ad un sottolivello del livello di data link, detto sottolivello MAC.
Quando un canale richiesto da pi host contemporaneamente, il primo host che trasmetter, e che quindi
allocher il canale, individuato mediante una di queste due strategie:
- Allocazione statica: la regola di individuazione decisa in anticipo.
- Allocazione dinamica: la regola di individuazione decisa ogni volta, per adeguarsi alle esigenze trasmissive.

6.1.1 Allocazione statica


L'allocazione statica ripartisce il canale fra gli host. Ogni host ha un tempo fisso, assegnato a rotazione con
gli altri, oppure ha una frazione della banda totale (ci succede quando il canale diviso mediante la tecnica FDM, che assegna ad ogni host una sua banda distinta di frequenze).
Questa tecnica funziona bene se il numero di host varia raramente e se ogni host trasmette con una frequenza abbastanza costante. Invece, se queste condizioni non sono soddisfatte:
1. Si spreca banda (o tempo) quando questa assegnata ad un host che non ha bisogno di trasmettere.
2. I picchi del traffico non sono gestibili mediante la sottobanda allocata.

6.1.2 Allocazione dinamica


Facciamo le ipotesi seguenti:
- Traffico indipendente. Ogni host pu trasmettere un frame indipendentemente dagli altri host e si
blocca finch non lo trasmette.
- Singolo canale. C' un unico canale per le comunicazioni per la trasmissione e la ricezione. Tutti gli
host hanno la stessa priorit.
- Collisioni. Se due frame sono trasmessi contemporaneamente, si sovrappongono e il segnale risultante
rovinato. Questo evento detto collisione. Ogni host rileva la collisione; quando questa avviene, i frame
coinvolti devono essere ritrasmessi. Si ipotizza che non ci siano altri tipi di errori.
- Tempo. Pu essere gestito in due modi:
- Continuo, in cui la trasmissione di un frame pu iniziare in un qualunque istante.
- Discreto, in cui il tempo diviso in intervalli discreti (slot) e la trasmissione pu iniziare solo all'inizio di uno slot. Se uno slot contiene pi di un frame, si verifica una collisione.
- Ascolto del canale: gestito in due modi:
- Carrier sense (= rilevamento della portante, tipico delle LAN), in cui un host, prima di trasmettere,
ascolta il canale e, se occupato, non trasmette.
- No carrier sense (tipico dei canali via satellite, nei quali vi un elevato tempo di ritorno), in cui un
host trasmette senza ascoltare, e dopo l'invio controlla se c' stata una collisione.
Diamo le seguenti definizioni:
- Il frame time la quantit di tempo necessario alla trasmissione di un frame standard, di lunghezza fissa, tra i due host pi distanti.
- Per evitare collisioni durante la trasmissione di un frame, bisogna evitare l'invio di un secondo frame
per una quantit di tempo che dipende dal frame time e dal protocollo usato (come vedremo tra poco).
Questa quantit di tempo detta periodo di vulnerabilit.
Lallocazione dinamica pu essere:
- determininistica o centralizzata: un apposito apparecchio ascolta le richieste di trasmissione e decide
chi abilitare; quindi, in ogni istante soltanto un host pu trasmettere.
- a contesa o distribuita: ogni host decide autonomamente se pu trasmettere; quindi, pu verificarsi una
collisione.

66

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

6.2 Protocolli ad accesso multiplo


6.2.1 Aloha puro
un protocollo dinamico a contesa nato negli anni '70 per collegare tra loro, tramite radio al suolo, gli elaboratori sparsi nelle isole Hawaii.
Un host trasmette quando vuole; durante la trasmissione, ascolta il canale e confronta ci che riceve con
ci che ha trasmesso. Dunque, quando c' una collisione, lhost se ne accorge, attende una quantit di tempo casuale e ritrasmette il frame. L'attesa casuale, perch altrimenti una collisione ne ricreerebbe infinite
altre.
Quindi, il periodo di vulnerabilit di un frame 2 * frame_time.

Figura 6-1: Il periodo di vulnerabilit


6.2.1.1 Aloha a slot
Per aumentare l'efficienza di Aloha, l'Aloha a slot divide il tempo in intervalli, tutti uguali al frame time.
Un host, quando vuole trasmettere, deve attendere l'inizio del prossimo intervallo, che segnalato da un'attrezzatura speciale che emette un breve segnale.
Questo protocollo dimezza il periodo di vulnerabilit, che uguale a un solo frame_time, e quindi riduce
la probabilit di collisione. Anche l'Aloha a slot ha una bassa efficienza, perch una stazione trasmette senza verificare se il canale libero.

6.2.2 Protocolli CSMA (Carrier Sense Multiple Access)


Questi protocolli sono detti a rilevamento di portante.
Un host ascolta il canale prima di trasmettere. Cos, l'efficienza del canale molto pi alta.
Se il canale occupato, ci sono soluzioni differenti:
- 1-persistenti: Se il canale libero, l'host trasmette subito; altrimenti, l'host trasmette (con probabilit 1,
da cui il nome) appena il canale si libera.
Problemi:
1. Se una stazione A trasmette e se anche B trasmette prima che il segnale di A arrivi a B, avviene una
collisione. Pi alto il tempo di propagazione fra A e B e pi grave il fenomeno.
2. Se A e B vogliono trasmettere durante la trasmissione di C, iniziano entrambe a trasmettere quando C
termina, e avviene una collisione.
- Non-persistenti: Se il canale libero, l'host trasmette subito; altrimenti, l'host aspetta un tempo random
e ripete la procedura.
Intuitivamente, rispetto al metodo 1-persistente, questo protocollo aumenta il ritardo di trasmissione di
un frame e riduce le collisioni, perch il problema 2 meno probabile.
- P-persistenti: applicabile soltanto se il tempo discretizzato. Se il canale libero, l'host trasmette subito con probabilit p (quindi, aspetta con probabilit (1-p)); altrimenti, l'host aspetta il prossimo slot e
ripete la procedura.
Intuitivamente, al diminuire di p, questo protocollo aumenta il ritardo di trasmissione di un frame e riduce le collisioni.

6.2.3 Protocolli CSMA/CD (CSMA con Collision Detection)


Un ulteriore miglioramento c' se ogni stazione interrompe la sua trasmissione quando rileva una collisione, invece di concluderla. La stazione ascolta il canale durante la propria trasmissione; se riceve un segnale
con potenza maggiore di quella trasmessa, scopre la collisione. Quando c' una collisione, la stazione a-

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

67

spetta una quantit casuale di tempo e ripete la procedura.


Sia T il tempo di propagazione del segnale da un capo all'altro della rete. Il tempo necessario ad una stazione per rilevare una collisione 2*T. Infatti, il segnale inviato da una stazione A (posta ad una estremit
della rete) nell'istante t0 arriva alla stazione B (posta all'altra estremit della rete) nell'istante t0 + T; se B
inizia la trasmissione un istante prima di ricevere il segnale inviato da A, la collisione conseguente giunge
a B quasi immediatamente, ma giunge ad A dopo un'ulteriore quantit T di tempo, cio giunge nell'istante
t0 + 2*T.

Figura 6-2: Rilevazione di una collisione


Il canale alterna tempi di contesa, di trasmissione e di inattivit. La durata del periodo di vulnerabilit
"2*T".
Es. dato un cavo di rame, la cui velocit di propagazione 200 * pow(10, 6), lungo 1 km. Calcolare il
tempo di propagazione "T".
T:= Spazio / Velocit
= pow(10, 3) / (200 * pow(10, 6))
= 1 / (2 * pow(10, 5))
= 5 * pow(10, -6) Hz

Figura 6-3: Modello concettuale per CSMA/CD


Questo protocollo alla base delle classiche reti Ethernet.

6.3 Protocolli senza collisioni


6.3.1 Le reti ad anello
Una rete ad anello un insieme di interfacce di rete, collegate a coppie da linee punto a punto:

Figura 6-4: Struttura di una rete ad anello


Una rete ad anello, sebbene non usi un mezzo trasmissivo broadcast, si comporta come una rete broadcast,
perch ogni stazione ritrasmette nellanello i bit che ha ricevuto. L'interfaccia di rete opera in due diverse

68

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

modalit: trasmissione e ascolto.

Figura 6-5: Modalit di funzionamento dell'interfaccia di rete


In modalit di ascolto, ogni bit in ingresso copiato nel buffer interno (dove pu essere anche modificato)
ed ritrasmesso con un ritardo di un bit (1-bit delay).
In modalit di trasmissione, l'anello aperto e ogni bit in ingresso rimosso; nuovi bit sono trasmessi
sull'anello.
Il protocollo MAC utilizzato nellanello detto token ring ed un protocollo dinamico deterministico.
Se nessuna stazione vuole trasmettere, una speciale configurazione binaria, detta token, circola in continuazione.
Se una stazione vuole trasmettere, rimane in modalit ascolto e aspetta l'arrivo del token. Quando il token
arriva, la stazione lo prende e trasmette. Quando la stazione finisce la trasmissione oppure quando ha esaurito il tempo massimo di possesso del token, cede il token e si rimette in modalit di ascolto. Poich c' un
solo token, questo meccanismo risolve senza conflitti il problema dell'accesso al mezzo.
Vantaggi rispetto al CSMA/CD:
- Non possono verificarsi le collisioni.
- Non c' una componente analogica (che invece necessaria con CSMA/CD per rilevare le collisioni).
- L'algoritmo equo e consente di determinare il tempo massimo di attesa.
- Se ogni stazione vuole trasmettere ogni volta che possiede il token, l'efficienza quasi il 100%.
Svantaggio rispetto al CSMA/CD:
- Quando non c' traffico, una stazione attende quantit un po' pi che in CSMA/CD; mediamente riceve
il token quando questo attraversa mezzo anello.
Es. La velocit di propagazione del segnale nel rame circa 200 metri per microsecondo. Una rete ad anello trasmette ad una frequenza di 1 Mbit/sec, lunga 2 km.
Calcolare il numero di bit memorizzabili nell'anello.
tTB (Tempo di Trasmissione di un Bit)
:= 1 / Frequenza di trasmissione
= 1 / pow(10, 6)
= pow(10, -6) Hz
sB (Spazio occupato da un Bit)
:= Velocit di propagazione * tTB
= (200 / pow(10, -6)) * pow(10, -6)
= 200 m
cBAn (Capienza di Bit nell'Anello)
:= Lunghezza dell'anello / Spazio occupato da un Bit
= (2 * pow(10, 3)) / (2 * pow(10, 2))
= 10 bit

Supponiamo di avere nella rete "nBuff" buffer, ognuno dei quali pu memorizzare 1 bit.
Allora, la capienza cBRete di bit memorizzabili dalla rete cBAn + nBuff bit. Quindi, se il numero di bit
del token maggiore o uguale a nBRete, necessario inserire un buffer aggiuntivo in qualche stazione.

6.4 Protocolli LAN wireless


La diffusione di computer mobili (come i portatili) ha aumento la richiesta di collegare tali dispositivi al
mondo esterno senza l'uso di cavi, che ne impedirebbero la mobilit. Questa esigenza risolta dalla comunicazione senza fili, che usa onde elettromagnetiche. Un sistema di stazioni mobili capaci di comunicare
via radio costituisce una LAN senza fili (wireless LAN o WLAN). Una LAN senza fili pu essere costituita in due modi diversi.
Il primo modo usa una (o pi di una) apparecchiatura, detta stazione base, a cui si collegano le stazioni
mobili. A sua volta, la stazione base collegata ad una rete fissa che comunica col mondo esterno.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

69

Linsieme di una stazione base e dei servizi da essa offerti alle stazioni mobili detto cella.
Il secondo modo non usa stazioni base; le stazioni mobili comunicano esclusivamente fra di loro, senza
collegamenti con una rete esterna. In questo caso si parla di rete ad hoc.
Indipendentemente dalla presenza di stazioni base, in una WLAN ci sono numerosi problemi da risolvere,
causati dalluso della trasmissione senza fili:
- collisioni: devono essere gestite mediante appositi protocolli.
- interferenze e riflessioni: Sono minimizzate grazie a tecniche trasmissive a spettro distribuito.
- privacy: i dati devono essere crittografati, perch chiunque pu intercettare una trasmissione radio.
- mobilit delle stazioni: necessario un meccanismo per gestire lo spostamento di una stazione mobile
da una cella ad un'altra.

Figura 6-6: LAN senza fili con stazioni base

6.4.1 Il problema della stazione nascosta e della stazione esposta


Ogni stazione trasmittente ha una portata, dipendente dalla potenza trasmissiva impiegata, che la distanza massima alla quale il segnale emesso pu essere rilevato. Soltanto le stazioni dentro la portata della stazione trasmittente ricevono il segnale trasmesso.
Si consideri la figura seguente, che mostra 4 stazioni con le relative portate.

Figura 6-7: Stazioni mobili con le relative portate


La stazione A sente il canale libero anche se C trasmette, e viceversa; quindi, B pu essere raggiunta contemporaneamente dalle trasmissioni di A e C e c' una collisione. Questo il problema della stazione nascosta.
Se C vuole trasmettere a D mentre B trasmette ad A, C sente la trasmissione di B e quindi non trasmette;
per, pu farlo, perch la trasmissione di B non raggiunge D e quindi non provoca una collisione. Questo
il problema della stazione esposta.
Questi due problemi derivano essenzialmente dal fatto che la stazione trasmittente non conosce la situazione del canale nei pressi della stazione ricevente, e quindi i protocolli CSMA/CD (adatti al caso in cui una
trasmissione raggiunge tutte le stazioni) in questo ambito non funzionano.

6.4.2 Protocolli MACA e MACAW


Una prima soluzione rappresentata dal protocollo MACA (Multiple Access with Collision Avoidance),
dove le collisioni sono evitate anzich rilevate, per questi motivi.
~ Il mittente non ascolta il canale (infatti manca Carrier Sense nella sigla) perch fuorviante, perch il
canale:
- pu essere libero per il mittente ma occupato per il destinatario; quindi, la trasmissione fallisce (problema della stazione nascosta), oppure
- pu essere occupato per il mittente ma libero per il destinatario; quindi la trasmissione corretta, ma

70

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

il mittente pensa di avere fallito (problema della stazione esposta).


~ Nellambito delle trasmissioni radio, le apparecchiature full-duplex (in grado di ricevere e trasmettere
contemporaneamente), sono molto costose.
Il funzionamento del protocollo semplice:
- Il trasmettitore B invia al destinatario C un piccolo frame di 30 byte, detto RTS (Request To Send), contenente la lunghezza del frame dati che sar trasmesso da B.
- Se C non sta ricevendo dati da altri, risponde ad B con un altro piccolo frame, detto CTS (Clear to
Send), che autorizza B a trasmettere. Anche il frame CTS contiene la lunghezza del frame dati che sar
trasmesso da B, copiata dal frame RTS.
Le altre stazioni si comportano nel seguente modo:
- Ogni host A che riceve l'RTS da B ma non riceve il CTS di C situato entro la portata di B ma non entro quella di C e non sa se B trasmetter. Se A vuole comunicare con B, gli invia un RTS; questo RTS
non causa collisioni (perch B in trasmissione e non in ricezione), ma non riceve risposta; quindi, A
aumenta il numero di insuccessi e attende prima di riprovare.
- Ogni host D che riceve il CTS da C ma non riceve l'RTS da B situato entro la portata di C ma non entro quella di B; quindi, se D vuole trasmettere a C, deve attendere il tempo necessario alla trasmissione
del frame dati (la cui lunghezza indicata nel frame CTS).
- Ogni host che riceve entrambi i frame RTS da B e CTS da C situato entro la portata di entrambi B e C;
per questo, deve applicare entrambe le regole precedenti.
Per, le collisioni possono ugualmente avvenire, come nei seguenti esempi.
1. Se due stazioni A e C non si sentono a vicenda e inviano un RTS ad una terza stazione B situata entro la
portata di entrambe, in C si verifica una collisione.
2. Se la stazione A invia un RTS a B mentre B riceve un CTS originato da una stazione C che fuori dalla
portata di A, in B si verifica una collisione.
Chi ha trasmesso un RTS si accorge se esso provoca una collisione perch non riceve il corrispondente
CTS. In tal caso, il trasmettitore attende un tempo casuale, che aumenta al crescere del numero di collisioni, e riprova.
I vantaggi di MACA sono:
1. Le collisioni sono meno probabili.
2. Le collisioni non coinvolgono frame dati, ma soltanto i frame RTS e CTS, che sono molto pi piccoli
dei frame dati.
Il protocollo MACAW (MACA per Wireless) introduce alcune ulteriori migliorie, fra le quali:
- Il destinatario, dopo la ricezione corretta del frame dati, invia un Ack al trasmettitore; cos, l'eventuale
ritrasmissione del frame in caso di trasmissione precedente errata, frequente nei mezzi wireless, pi
veloce perch non gestita dai livelli superiori.
- Il trasmettitore B, dopo la ricezione del CTS, invia un breve frame DS (Data Send) contenente la grandezza del frame dati che sar trasmesso, e subito dopo trasmette il frame dati; il DS la conferma che i
dati saranno trasmessi. Cos, una stazione A che riceve il DS ma che fuori dalla portata del destinatario
evita di inviare degli RTS durante la trasmissione di B.
- Il tempo dattesa aumenta dopo un insuccesso per garantire equit a tutte le stazioni.
I protocolli MACA e MACAW non ascoltano il canale prima di trasmettere, ma si scambiano soltanto messaggi di controllo. Tuttavia, c' un altro protocollo, detto CSMA/CA (Carrier Sense Multiple Access with
Collision Avoidance), utilizzato nello standard IEEE 802.11, che, oltre a tecniche simili a quelle di
MACAW, ascolta anche il canale prima di trasmettere.

6.5 Esercizi
Commentare ogni espressione impostata ed etichettarla con un indice progressivo compreso tra [].
Motivare ogni passaggio non algebrico.
Indicare l'unit di misura dopo ogni risultato individuato.
1. Una LAN token ring a 50 Kbit/sec ha un timer di possesso del token di 10ms. La LAN non possiede
buffer (neanche negli host) per memorizzare bit trasmessi.
A. Qual il massimo numero di byte che pu avere un frame (composto dal token e dai dati) inviato da un
host sullanello?
B. Aggiungendo dieci stazioni alla rete, il tempo di una circolazione completa del token aumenta del 25%.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

71

Quante erano le stazioni iniziali?


C. Aggiungiamo la seguente ipotesi: La rete ha 10 stazioni. Qual il tempo massimo di attesa di un host
prima di poter trasmettere?

72

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

7 Lo standard IEEE 802


IEEE ha prodotto alcuni standard per le LAN, collettivamente noti come IEEE 802, tra cui:
- 802.1: Specifiche generali del progetto.
- 802.2: Logical Link Control, sottolivello del livello di data link.
- 802.3: Ethernet o CSMA/CD.
- 802.4: Token bus, destinato a LAN per automazione industriale.
- 802.5: Token ring.
- 802.6: DQDB, destinato alle MAN.
- 802.11: WLAN.
- 802.15: Bluetooth.
Gli standard differiscono nel livello fisico e nel sottolivello MAC, ma sono compatibili nel livello di data
link. Ci ottenuto gestendo separatamente il sottolivello superiore del livello di data link (sottolivello
LLC), che usato da ogni protocollo standard del gruppo.

Figura 7-1: Lo standard IEEE 802

7.1 Collegamenti tra LAN


Dato un insieme di host che usano lo stesso mezzo trasmissivo, possibile dividere questo insieme in sottoinsiemi in modo che una collisione pu avvenire soltanto tra due host dello stesso sottoinsieme (e non tra
due host che appartengono a sottoinsiemi differenti). Ognuno di questi sottoinsiemi detto dominio di collisione. Questa divisione realizzata mediante alcuni dispositivi che vedremo pi avanti.
Spesso, un'azienda vuole dividere (o segmentare) la propria LAN in LAN distinte. Ci succede se, ad esempio:
- Ogni ufficio vuole progettare la propria LAN indipendentemente dagli altri uffici.
- Si desidera una LAN lunga pi del limite massimo consentito (ad esempio, 2,5 km per Ethernet).
- Si desidera dividere gli host su pi domini di collisione.

7.2 Dispositivi per il passaggio dei dati


Ci sono molti dispositivi che trasmettono dati tra due host. Ogni dispositivo ha alcune caratteristiche ed agisce ad un livello specifico:
Livello
Dispositivo
Applicazione
Gateway di applicazione
Trasporto
Gateway di trasporto
Network
Router
Data link
Bridge, Switch
Fisico
Ripetitore, Hub
Vediamo adesso i dispositivi dei livelli fisico e data link. Vedremo pi avanti gli altri dispositivi.

7.2.1 Dispositivi a livello fisico


Questi dispositivi agiscono soltanto a livello elettrico, e quindi ignorano completamente il contenuto
dell'informazione (indirizzi, frame, etc.). Si distinguono in ripetitori e hub.
7.2.1.1 Ripetitore
Un ripetitore un dispositivo analogico collegato a due segmenti di cavo; il ripetitore riceve il segnale da
un segmento, lo amplifica e lo trasmette all'altro segmento.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

73

Ethernet supporta 4 ripetitori; quindi pu collegare 5 cavi, cio pu estendere il cablaggio da 500 metri a
2500 metri.
MAC-2

Figura 7-2: Ripetitori


7.2.1.2 Hub
Un hub un dispositivo collegato a pi linee elettriche. Il segnale arrivato da una linea inviato istantaneamente ad ogni altra linea alla stessa velocit, cio si comporta come un cavo coassiale con pi diramazioni. Due segnali arrivati contemporaneamente collidono, perch tutte le linee di un hub appartengono allo
stesso dominio di collisione.
Tipicamente, un host collegato ad un hub mediante un doppino telefonico, perch questo collegamento
ampiamente disponibile negli uffici. Il numero massimo di stazioni collegabili mediante un hub 1024.
Un hub, a differenza da un ripetitore, non amplifica i segnali ricevuti.
MAC-2

Figura 7-3: Hub

7.2.2 Dispositivi a livello di data link


Si distinguono in bridge e switch; questi due nomi spesso sono usati come sinonimi, ma hanno qualche differenza. Ci che sar detto sui bridge vale anche per gli switch e viceversa, tranne quando le differenze saranno evidenziate.
7.2.2.1 Bridge
Un bridge serve a connettere due o pi LAN. (Ad es., collega LAN di uffici diversi delle stessa azienda.)
Usa soltanto informazioni a livello di data link: esamina l'indirizzo dell'host destinatario e gli inoltra pacchetti di dati. Invece, un router agisce a livello di network.
A differenza di un hub, ogni linea connessa a un bridge forma un dominio di collisione, cio il bridge divide la sua banda tra le varie linee connesse.

Figura 6-14: Interconnessione di LAN tramite bridge


In questo esempio, il traffico totale pu essere tre volte quello di una singola LAN, perch ci sono tre domini di collisione.
Un bridge attraversato soltanto dal traffico tra due host appartenenti ad LAN differenti. Ha tante interfacce di rete quante sono le LAN alle quali fisicamente collegato; le schede possono essere differenti e possono andare a velocit diverse.
Quando un'interfaccia di rete del bridge riceve un frame MAC, il bridge toglie la busta MAC e, mediante
l'indirizzo dell'host destinatario, cerca di individuare l'interfaccia di rete che conduce alla LAN di destinazione.
- Se l'host destinatario sulla stessa LAN del mittente, il bridge ignora il frame.
- Se gli host mittente e destinatario sono in due LAN differenti, il bridge invia il frame sulla LAN del destinario.

74

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

- Se il bridge ignora dove l'host detinatario, invia il frame su ogni LAN tranne quella del mittente, mediante una tecnica detta flooding (che vedremo meglio pi avanti).
Un hub copia tutto ci che riceve da una linea su tutte le altre. Invece, un bridge, quando acquisisce un
frame, lo analizza e lo instrada. Un bridge pu essere configurato in modo da filtrare (cio non far passare)
alcuni tipi di traffico, mediante l'indirizzo LLC, che identifica il protocollo di livello superiore, o mediante
l'indirizzo MAC del mittente o del destinatario.
Un bridge progettato per connettere LAN di tipo diverso deve risolvere vari problemi legati alle diverse regole in vigore su tali LAN, tra cui:
- formati differenti dei frame;
- velocit differenti dei dati;
- differente lunghezza massima dei frame: un frame non pu essere spezzato in questo livello; quindi, se
troppo grande, deve essere scartato;
- funzioni previste da un tipo di LAN ma non dall'altra. (Ad esempio, il concetto di priorit c' in 802.5,
ma non ha un equivalente in 802.3.)
7.2.2.1.1 Standard IEEE per i bridge
I bridge standardizzati da IEEE sono di due tipi: transparent bridge e source-routing bridge.
Il transparent bridge diventa operativo semplicemente mediante la connessione fisica alla rete e l'accensione. Quando il bridge riceve un frame, memorizza in una tabella di instradamento la LAN di provenienza del frame (che la LAN che contiene l'host mittente) e quindi aumenta la sua conoscenza sulle posizioni degli host, e successivamente invier i frame successivi in modo pi mirato (e quindi pi efficiente). Il bridge aggiorna continuamente la tabella, dalla quale rimuove gli indirizzi che non ha visto negli ultimi minuti (quindi, se un host spostato, entro pochi minuti di nuovo indirizzato correttamente).
MAC-0A

Figura 7-4: Tabella di instradamento


Inoltre, i bridge individuano uno spanning tree della LAN, cio un sottoinsieme della rete che include ogni bridge ma esclude alcuni collegamenti tra i bridge in modo da non contenere anelli; lo spanning tree
usato per evitare loop infiniti nell'instradamento durante il flooding.
MAC-0B

Figura 7-5: Collegamento ad anello


Il source-routing bridge (nato per le reti 802.5) progettato invece per ottenere l'instradamento pi efficiente possibile; deve essere configurato nell'installazione a scapito della trasparenza, e in pratica non pi
utilizzato.
7.2.2.2 Switch
Uno switch un bridge moderno con un altro nome. Questo paragrafo descrive le differenze, che sono pi
commerciali che tecniche.
Il bridge fu progettato quando c'era l'Ethernet classico; quindi collega poche LAN ed ha poche porte.
Il termine switch attualmente pi usato. Infatti, l'Ethernet moderno (switched Ethernet) usa collegamenti punto-a-punto, cio un host collegato direttamente in uno switch.
Entrambi i dispositivi dividono la rete in domini di collisione, ma uno switch pu associare un dominio di
collisione ad un unico host; quindi, le collisioni sono ridotte drasticamente; per, uno switch richiede un
numero maggiore di schede di linea rispetto ad un bridge che collega lo stesso numero di host. Lo switch
molto pi veloce perch opera da hardware, mentre il bridge opera da software.
L'Ethernet classico la forma originaria e aveva una velocit di trasmissione dai 3 ai 10 Mbit/sec.
Lo switched ethernet l'evoluzione di Ethernet ed ha una velocit a 100 (fast Ethernet), 1000 (gigabit
Ethernet) e 10.000 Mbit/sec (10 gigabit Ethernet). Attualmente, soltanto lo switched Ethernet usato.
D'ora in poi useremo il termine switch per indicare indifferentemente un bridge o uno switch; ricordiamo,
per, che il termine bridge pi corretto quando le linee collegate provengono da LAN (e non da singoli
host, come invece per gli switch).

7.3 IEEE 802.3


lo standard per un protocollo CSMA/CD, per una rete broadcast, basata su un bus, di tipo 1-persistent, a

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

75

10Mbit/sec. l'evoluzione dello standard Ethernet, ma largamente compatibile con questo.

7.3.1 Cablaggi Ethernet


Lo standard Ethernet prende nome dal cavo (detto etere). Per questo, il documento che descrive Ethernet
comincia dai cavi.
7.3.1.1 Thick ethernet o 10Base5
il primo tipo di cablaggio utilizzato in Ethernet. un cavo coassiale spesso (lo standard suggerisce di usare una guaina esterna di colore giallo). Ufficialmente detto 10Base5, cio: velocit 10 Mbit/sec, trasmissione in banda base, 500 metri di lunghezza massima per ciascuno spezzone di cavo, distanza minima
tra due stazione di 2,5 m. Gli spezzoni possono essere connessi, usando dei ripetitori, in un segmento di
lunghezza massima di 2500 m. Ogni stazione contiene un'interfaccia di rete (scheda ethernet) che codifica
i dati da trasmettere, decodifica i dati ricevuti e gestisce il protocollo MAC.
L'interfaccia di rete collegata mediante un corto cavo (di pochi metri) a un transceiver che agganciato al
cavo coassiale (che non viene interrotto). Il transceiver contiene il circuito analogico per l'ascolto del canale e la rilevazione delle collisioni. Quando c' una collisione, il transceiver informa l'interfaccia ed invia
sulla rete uno speciale segnale di 32 bit (jamming sequence) per avvisare le altre stazioni, che cos scartano ci che hanno ricevuto.

Figura 7-6: Cablaggio Ethernet cavo Thick


7.3.1.2 Thin ethernet o 10Base2
un cavo coassiale pi sottile, e si piega pi facilmente. Ufficialmente si chiama 10Base2, cio: velocit
10 Mbit/sec, trasmissione in banda base, 200 metri di lunghezza massima per un singolo segmento. Possono essere installate 30 stazioni su un segmento. L'interfaccia di rete contiene anche il transceiver.
L'allaccio di una stazione alla rete avviene con un connettore a T, direttamente agganciato alla stazione, al
quale sono collegati due cavi thin che costituiscono una porzione del segmento. Le varie stazioni sono collegate in cascata sul segmento.

Figura 7-7: Cablaggio Ethernet tramite cavo Thin


7.3.1.3 Cavo UTP o 10BaseT
Lo standard 10BaseT (twisted) collega una sola coppia di stazioni. La lunghezza massima 100 metri. Tre
o pi due stazioni sono connesse mediante un hub.

76

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

Figura 7-8: Cablaggio Ethernet tramite hub


7.3.1.4 Fibra ottica o 10BaseF
Lo standard 10BaseF utilizza le fibre ottiche per la trasmissione del segnale e quindi garantisce elevate
prestazioni e maggiori distanze. La distanza massima di un segmento 2 Km.
7.3.1.5 Topologie di cablaggi
Gli host presenti in un edificio possono esseri collegati mediante differenti topologie di cavi:
- Topologia lineare: un cavo orizzontale che si snoda in pi stanze.
- Topologia dorsale (o backbone): un cavo verticale che va dal piano terra al tetto.
- Topologia ad albero: un collegamento tra due host mediante un unico percorso. L'assenza di pi percorsi di collegamento riduce la probabilit di interferenza.
- Collegamento tra host lontani: Se il cavo di collegamento lungo, necessita di un ripetitore.
MAC-1

Figura 7-9: Tipologie di cablaggi

7.3.2 Codifica dei dati


In 802.3 i bit non sono codificati direttamente (ad esempio, 0 volt per il bit zero e 5 volt per il bit uno),
perch ci renderebbe difficile rilevare l'inizio e la fine di ogni singolo bit e le collisioni. Per questo motivo, si usa la codifica Manchester, vista nel capitolo sul livello di data link.

7.3.3 Protocollo MAC 802.3


La struttura di un frame 802.3 la seguente:

Figura 7-10: Frame 802.3


I campi del frame sono:
- Preamble (preambolo): 7 byte, ognuno uguale a 10101010. Producono, a 10 Mbit/sec, un'onda quadra a
10 Mhz che consente al destinatario di sincronizzare il suo clock con quello del trasmettitore.
- Start of frame (delimitatore): un byte delimitatore, uguale a 10101011.
- Indirizzi destinazione e sorgente: ogni indirizzo ha 6 byte, ed univoco a livello mondiale ( cablato
dentro l'interfaccia di rete). L'indirizzo di destinazione specifica: un singolo destinatario, oppure un
gruppo di destinatari (multicast), oppure un invio in broadcast ad ogni stazione (quando l'indirizzo costituito da tutti uni).
- Lunghezza dei dati: il numero di byte del campo dati (da 0 a 1500).
- Dati: Contiene i dati del livello superiore.
- Pad: uno spazio vuoto di memoria che porta la lunghezza del frame a 64 byte quando il frame dall'indirizzo di destinazione al checksum (cio, esclusi il preambolo e il delimitatore) pi corto di 64 byte;
vedremo tra poco il motivo.
- Checksum: un codice CRC.
Il livello MAC non garantisce un servizio affidabile perch, visto il bassissimo tasso d'errore delle LAN,
usa un protocollo datagram ad alte prestazioni.
7.3.3.1 Lunghezza minima del frame
Vediamo perch esiste un limite minimo di 64 byte per la lunghezza di un frame.
Sappiamo che una collisione pu essere rilevata dal trasmettitore dopo un tempo maggiore o uguale a due
volte il tempo di propagazione del frame sull'intera rete.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

77

Nel caso di IEEE 802.3 abbiamo i seguenti dati:


- Lunghezza massima della rete: 2,5 km.
- Numero massimo di ripetitori: 4.
- Tempo di ritardo massimo di 4 ripetitori (tempo stimato): 12,5 * (pow(10, -6)) sec.
- Velocit di propagazione del segnale elettrico in un cavo di rame: 200 * (pow(10, 3)) km/sec.
- Velocit di trasmissione della linea: 10 Mbit/sec
Otteniamo i seguenti risultati:
$tPropSenzaRip
(Tempo di Propagazione del segnale sulla rete Senza il ritardo dei ripetitori)
:= Lunghezza della rete / Velocit di propagazione=
2,5 * pow(10, 3) / (200 * pow(10, 6))=
12,5 * pow(10, -6) sec.
$tPropTot
(Tempo di Propagazione del segnale sulla rete compreso il ritardo dei ripetitori)
:= $tPropSenzaRip + Tempo di ritardo dei ripetitori=
12,5 * pow(10, -6) + 12,5 * pow(10, -6)=
25 * pow(10, -6) sec.
$pVuln (Periodo di Vulnerabilit di un frame)
:= 2 * $tPropTot=
2 * 25 * pow(10, -6)=
50 * pow(10, -6) sec.
$tTxB (Tempo di Trasmissione di un Bit)
:= 1 / Velocit di trasmissione = 1 / 10M = pow(10, -7) sec.
$nBMin (Numero Minimo di Bit per trasmettere un frame in un tempo maggiore del
periodo di vulnerabilit)
-> $nBMin * $tTxB >= $pVuln ->
$nBMin * pow(10, -7) >= 50 * pow(10, -6) ->
$nBMin >= 50 * pow(10, -6) / * pow(10, 7) = 500 b
$nByteMin (Numero Minimo di Byte per avere come sopra)
:= eccesso($nBMin / 8)=
eccesso(500 / 8)=
64 Byte

Dunque, il frame, esclusi il preambolo e il delimitatore, deve essere costituito da almeno 64 byte.
Se la velocit di trasmissione della linea aumenta di k volte, il periodo di vulnerabilit diminuisce di k volte; quindi, l'ultima disequazione soddisfatta se:
- Il numero minimo di bit aumenta di k volte, oppure
- Il tempo di propagazione sulla rete] diminuisce di k volte, cio la lunghezza massima ammessa per la
rete diminuisce di k volte.
Vedremo pi avanti la soluzione del problema per il protocollo Fast Ethernet (100 Mbit/sec), dove k 10.
7.3.3.2 Protocollo MAC
Il protocollo 802.3 un CSMA/CD di tipo 1-persistente, per cui una stazione:
- prima di trasmettere, la stazione aspetta che il canale sia libero; subito dopo, inizia a trasmettere;
- se c' una collisione, la circuiteria contenuta nel transceiver invia una sequenza di jamming di 32 bit, per
avvisare le altre stazioni;
- se la trasmissione non riesce, la stazione attende una quantit di tempo casuale e poi riprova.
La quantit di tempo di attesa regolata dallalgoritmo di regressione binaria esponenziale.
Dopo una collisione, il tempo discretizzato con uno slot time pari a 51,2 microsecondi (cio, il tempo di
trasmissione di 512 bit, cio 64 byte, che la lunghezza minima di un frame senza contare il preambolo ed
il delimitatore). Il tempo di attesa prima della prossima ritrasmissione un multiplo intero dello slot time, e
viene scelto a caso in un intervallo i cui estremi dipendono dal numero di collisioni avvenute:
- dopo n collisioni, il numero r di slot time di attesa scelto a caso nell'intervallo 0 <= r <= 2k-1, con
k = min(n, 10);
- dopo 16 collisioni si rinuncia (inviando un messaggio di errore al livello superiore).
La crescita esponenziale dell'intervallo garantisce una buona adattabilit ad un numero variabile di stazioni. Infatti:
- Se il range fosse sempre piccolo, con molte stazioni si avrebbero praticamente sempre collisioni.
- Se il range fosse sempre grande, non ci sarebbero quasi mai collisioni ma il ritardo medio (met range*slot time) causato da una collisione sarebbe molto elevato.

78

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

Le prestazioni osservate sono molto buone, migliori di quelle stimabili in via teorica.
La pratica ha mostrato che 802.3 pu sopportare un carico medio del 30% (3 Mbit/sec) con picchi del 60%
(6 Mbit/sec); con un carico medio, il 3% dei frame ha una collisione e lo 0,03% ha pi di una collisione.

7.4 Le evoluzioni della rete Ethernet


Levoluzione della rete Ethernet avvenuta mantenendo costante il formato del frame e modificando questi
parametri del protocollo:
- Progressivo abbandono del mezzo trasmissivo condiviso, utilizzando collegamenti punto-a-punto e
switch;
- Aumento della velocit trasmissiva;
- Riduzione della distanza massima tra tutte le coppie di nodi della rete (diametro della rete) (Fast Ethernet);
- Aumento della durata minima della trasmissione (Gigabit Ethernet);
- Totale eliminazione della condivisione della banda e utilizzo esclusivo di collegamenti punto-a-punto
(10Gigabit Ethernet).

7.4.1 Fast Ethernet


Lo standard 802.3u, comunemente detto Fast Ethernet, stato approvato nel 1995, e va a 100 Mbit/sec.
Il cablaggio a stella (cio le stazioni sono collegate mediante hub o switch) con cavi in rame
(100BaseTX) o con fibre ottiche (100BaseFX) o misto.
Le differenze fra 802.3 10BaseT e Fast Ethernet interessano principalmente il livello fisico.
Il mezzo trasmissivo utilizzato il cavo di rame l'UTP cat. 5, che ha una banda di 100 Mbit/sec, oppure la
fibra ottica.
La distanza hub-stazione 100m; si possono collegare al massimo due hub con una distanza massima fra
due stazioni di 250 m., perch la velocit di trasmissione 10 volte maggiore, quindi la durata del frame
minimo 10 volte minore e quindi il diametro della rete deve diminuire di 10 volte per potere ancora rilevare le collisioni.
La codifica dei segnali non pu essere il Manchester perch la banda raddoppierebbe; per questo motivo si
utilizza il codice MLT-3 (Multi Level -3).
MLT -3 opera con tre livelli di tensione: positivo, 0, negativo. Ad un 1 corrisponde ciclicamente una transizione 0-positivo, positivo-0, 0-negativo, negativo-0, 0-positivo, ecc.. Nel caso di bit 0 non c' alcuna variazione del segnale. Il numero massimo di transizioni dato dalla sequenza di 1. La banda MLT-3 pari ad
un quarto della velocit di trasmissione e ci rende tale codifica idonea per reti veloci come Fast Ethernet o
FDDI.

Figura 7-11: codifica MLT-3


MLT-3 non mantiene per la sincronizzazione nel caso di sequenza di zeri. Il problema viene risolto effettuando unoperazione di ricodifica nota come 4B/5B: ogni sequenza di 4 bit viene sostituita con una di 5
bit scegliendo fra le 32 possibili combinazioni quelle pi ricche di transizioni. Il dispositivo che effettua
questa operazione si chiama 4B/5B encoder.
La seguente tabella riepiloga le caratteristiche di Fast Ethernet
100BaseTX
100BaseFX
Banda (Mbit/sec)
100
100
lunghezza massima del segmento
100 m
2000 m
Mezzo trasmissivo
UTP Categoria 5
fibra multimodale
Topologia fisica
Stella
Stella
Topologia logica
Bus
Bus

7.4.2 Reti segmentate


Al crescere del numero di stazioni o del traffico, la probabilit di collisione aumenta e ci peggiora le pre-

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

79

stazioni della rete. Questo problema risolto segmentando la rete, per creare pi domini di collisione usando degli switch.
La rete controllata da un hub collegato allo switch diventa un segmento con il proprio dominio di collisione. Questa soluzione riduce il traffico e aumenta la larghezza di banda. Si possono realizzare cos LAN estese comprendenti molti nodi, se la rete segmentata secondo criteri opportuni. Per esempio, lo switch
collegato ad una singola stazione, allora non ci sono collisioni, e quindi la comunicazione full-duplex e
punto a punto (full-duplex link). Questo utile se la stazione un server, che di solito gestisce una parte
considerevole del traffico. Un collegamento full-duplex garantisce risposte pi rapide ai vari client.

Figura 7-12: Rete segmentata


Le operazioni di inoltro dei frame si possono svolgere secondo tre diverse modalit:
- Store and Forward: il frame in entrata viene ricevuto per intero e viene instradato verso la porta corrispondente o viene scartato se contiene errori. la tecnica pi affidabile, ma poco idonea per linee veloci perch richiede un certo tempo.
- Cut-through switching: lo switch esamina lindirizzo di destinazione prima di ricevere completamente
il frame e lo invia a destinazione mentre lo sta ricevendo. Non controlla gli errori. la tecnica pi veloce ma fa passare anche i pacchetti non validi e i frammenti di collisione.
- Fragmentfree switching: lo switch controlla la lunghezza del frame; se questa troppo piccola (minore di 64 byte), scarta il frame; altrimenti, lo inoltra. Quindi, i frammenti delle collisioni sono scartati. Lo
svantaggio che fa passare pacchetti difettosi o pi lunghi del massimo consentito.
Lo switch monitora il traffico della rete e adotta dinamicamente una delle tre tecniche.
Un altro problema costituito dal controllo del traffico sulle porte. Lo switch deve evitare che il traffico in
entrata su una sua porta sia cos intenso da saturare i buffer di ricezione, perch sarebbe costretto a scartare
i pacchetti in arrivo. La tecnica comunemente usata in questo caso simulare una collisione sulla porta
congestionata in modo da avvertire la stazione e costringerla a sospendere la trasmissione.

7.4.3 Gigabit Ethernet


IEEE802.3z noto comunemente con il nome di Gigabit Ethernet perch aumenta di un altro fattore 10 la
velocit portandola a 1Gbit/sec. L`implementazione di 802.3z realizzata su 3 tipi di mezzi trasmissivi:
- 1000BaseLx (fibra ottica monomodale, max 3KM);
- 1000Basesx (fibra ottica multimodale, max 550mt);
- 1000BaseCx (balanced 150 ohm shielded cable, max 25mt).
IEEE802.3ab lo standard Gigabit portato sul cablaggio strutturato di cat. 5. L`implementazione detta
1000BaseT e utilizza tutte le 4 coppie del cavo, ciascuna a 250Mbit/sec. 1000BaseT usa lo stesso clock rate di 100baseTx (ovvero 125 Mhz) ma trasmette 4 simboli (2 bit) anzich 2 (1 bit); inoltre 100Base Tx usa
una codifica (4B/5B) per cui si spreca un bit ogni 4 per ridondanza e quindi alla velocit di 125 MHz si
trasmettono 100Mbit/sec.
IEEE802.3ac un nuovo progetto che vuole portare la tecnologia di ethernet alla velocit di 10Gbit/sec.

7.5 IEEE 802.11


Durante gli anni 90, lIEEE standardizz le reti LAN senza fili nello standard 802.x; ci produsse una serie di standard definiti fra il 1997 ed il 2003, collettivamente contraddistinti dalla sigla 802.11, che differiscono fra loro per le bande trasmissive utilizzate, per le tecniche di codifica utilizzate e per le velocit trasmissive raggiungibili.
Ciascuno degli standard 802.11 suddiviso in due parti:
- il livello fisico, che differisce anche sensibilmente da uno standard allaltro per la velocit di trasmissio-

80

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

ne e per la banda di frequenza utilizzata;


- il sottolivello MAC, essenzialmente comune a tutti gli standard. In particolare il formato dei frame, i
servizi offerti ed i meccanismi di accesso al canale sono gli stessi per tutti.

Figura 7-13: LAN 802.11


L'architettura del modello IEEE 802.11 rappresentabile come nella figura. L'elemento fondamentale di
una wireless LAN il Basic Service Set (BSS) che caratterizza l'insieme dei servizi di base e che corrisponde ad una cella. Esso consiste in diverse stazioni che utilizzano lo stesso protocollo MAC per accedere
al mezzo condiviso. Il protocollo MAC pu essere completamente distribuito oppure pu gestione l'accesso in modo centralizzato. Il BSS pu essere isolato oppure connesso ad un sistema dorsale di distribuzione
attraverso una stazione base che opera da switch.
L'insieme dei servizi estesi, Extended Service Set (ESS), costituito da due o pi BSS, interconnessi tipicamente attraverso una LAN cablata, ed configurato analogamente ad una LAN logica a livello LLC.
Lo standard IEEE 802.11 prevede tre tipologie di stazioni che si differenziano sulla base delle loro caratteristiche di mobilit:
- Nessuna transizione: si tratta di stazioni non possono muoversi oppure che si muovono solo all'interno
dell'area di comunicazione diretta associata ad un singolo BSS.
- Transizione BSS: sono stazioni che possono spostarsi fra diversi BSS interni ad uno stesso ESS. Si rende necessaria la presenza di uno schema di indirizzamento che permette di stabilire la nuova posizione
della stazione.
- Transizione ESS: questo tipo di stazioni possono muoversi fra BSS appartenenti ad ESS diversi. La gestione delle connessioni a livelli pi alti supportata dall'IEEE 802.11 ma non pu essere garantita dato
che esiste una probabilit non trascurabile di interruzione del servizio.

7.5.1 Il protocollo MAC 802.11


I campi di un frame 802.11 sono i seguenti; tra le parentesi c' la capienza, espressa in byte, del campo.
Frame
Control (2)

Durata
(2)

Indirizzo 1 (6)

Indirizzo 2 (6)

Indirizzo 3 (6)

Sequenza (2)

Indirizzo 4 (6)

Dati (0-2312)

Checksum (4)

Figura 7-14: Frame 802.11


Il campo Frame Control suddiviso in sottocampi con le seguenti funzioni:
Versione Indica il tipo del protocollo (802.11, 802.11b, ecc.).
Tipo
Specifica se il frame di dati o di controllo (ad es. CTS o RTS) o di gestione (ad es. richiesta
di associazione o autenticazione). I frame dati possono passare da una cella allaltra; invece,
i frame di controllo e di gestione sono confinati allinterno di una singola cella.
Sottotipo Specifica del tipo di frame. Ad esempio, per i frame di controllo pu essere RTS, CTS, Ack.
To DS
1 se il frame destinato al DS (e quindi deve uscire dalla cella per mezzo dellAP).
From DS 1 se il frame proviene dal DS (e quindi entrato nella cella per mezzo dellAP).
MF
More Fragments: 1 indica che vi sono ulteriori frammenti dopo questo.
Retry
1 se il frame la ritrasmissione di un frame precedente.
Pwr
Power: 1 indica che a conclusione della trasmissione la stazione si metter in uno stato di risparmio energetico; 0 che rimarr attiva.
More
1 indica che altri dati sono disponibili per il destinatario. Ci eviter che esso si metta in uno

M.T.Bombi, A.Giunta e altri

W
O

Reti di Elaboratori - 2014

81

stato di risparmio energetico.


WEP(Wired Equivalent Privacy): 1 indica che il payload cifrato.
Ordered: 1 indica che il payload va consegnato in ordine rispetto agli altri frame con lo stesso valore di questo campo.

Gli altri campi del frame hanno invece le seguenti funzioni:


Durata
Indica (in millisec.) per quanto tempo il frame pi il relativo ack occuperanno il canale.
Indirizzi 1, Quattro indirizzi a 48 bit identici a 802.3 ed 802.5; due sono gli indirizzi di mittente e de2, 3, 4
stinatario, e due sono gli indirizzi di AP sorgente ed AP destinatario (nel caso di traffico fra
celle diverse).
Sequenza Numera gli eventuali frammenti di un frame: 12 bit identificano il frame, 4 bit il segmento.
Dati
Payload.
Checksum Codice CRC a 32 bit.
Lo standard definisce due differenti modalit di funzionamento, DCF e PCF che possono coesistere
allinterno della stessa cella.

Figura 7-15: Modello a strati dell'802.11


7.5.1.1 Modalit DCF (Distributed Coordination Function)
Questa modalit, utilizzabile in presenza di un AP o in una rete ad hoc, alloca il canale in modo distribuito
ed supportata in tutte le apparecchiature conformi allo standard. Usa il protocollo CSMA/CA, che essenzialmente un MACA con laggiunta dellascolto del canale prima di trasmettere.
Oltre ad ascoltare il canale fisico (rilevando l'eventuale presenza di una portante), ogni stazione considera
anche un canale virtuale tramite il cosiddetto NAV (Network Allocation Vector). Il NAV, gestito individualmente da ciascuna stazione, indica il tempo durante il quale il mezzo trasmissivo sar occupato dalle
trasmissioni gi iniziate.
Ogni stazione determina il valore del NAV sulla base dei frame RTS e CTS che riceve.
Una stazione considera libero il canale solo quando sia il canale fisico che quello virtuale sono liberi.
Il funzionamento del CSMA/CA il seguente:
- Una stazione A che vuole trasmettere un frame dati a B ascolta il canale. Se esso rimane libero per una
certa quantit di tempo, detta DIFS (Distributed Inter Frame Spacing), invia un frame RTS indirizzato a
B e resta in attesa del corrispondente CTS;
- la stazione B, quando riceve il frame RTS, ascolta il canale. Se esso rimane libero per una certa quantit
di tempo, detta SIFS (Short Inter Frame Spacing, pi breve del DIFS), invia un frame CTS ad A.
- tutte le altre stazioni che ricevono il frame RTS assegnano al loro NAV una durata pari al tempo necessario per linvio del frame dati e del corrispondente frame Ack;
- la stazione A, ricevuto il frame CTS, ascolta il canale. Se esso rimane libero per un tempo SIFS inizia a
trasmettere il frame dati indirizzato a B;
- tutte le altre stazioni che ricevono il frame CTS assegnano al loro NAV una durata pari al tempo necessario per linvio del frame dati e del corrispondente frame Ack;
- la stazione B, ricevuto il frame dati, ascolta il canale. Se esso rimane libero per un tempo SIFS invia un
frame Ack indirizzato ad A;

82

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

Se allinizio della procedura la stazione A trova il canale occupato, essa attende un tempo casuale (determinato con un algoritmo di regressione binaria esponenziale analogo a quello di 802.3) e ricomincia daccapo. Uguale comportamento viene adottato se A non riceve il frame CTS dopo aver inviato il frame RTS,
o se non riceve il frame di Ack dopo aver inviato il frame dati.

Figura 7-16: Trasmissione di un frame


Il protocollo pu frammentare i frame, in considerazione dellelevato tasso derrore dei mezzi wireless. Un
frammento confermato individualmente per permettere la ritrasmissione soltanto dei frame rovinati.
Inoltre, per dare la priorit alla trasmissione dei frammenti di uno stesso frame rispetto alla trasmissione di
un frame interamente nuovo:
- per la trasmissione del prossimo segmento si attende un tempo SIFS e non DIFS;
- ogni segmento (tranne lultimo) si comporta come un RTS virtuale per il frammento successivo ed ogni
Ack (tranne lultimo) si comporta come un CTS virtuale per il frammento successivo.

Figura 7-17: Trasmissione di un frame frammentato


Una stazione pu adottare una versione semplificata del protocollo quando deve trasmettere frame dati
molto brevi (al di sotto di una soglia, impostabile su ogni singola stazione) e non c' il problema della stazione nascosta (ad esempio in una WLAN confinata allinterno di una stanza).
In tal caso non vengono inviati i frame RTS e CTS, ma solo il frame dati ed il corrispondente frame di Ack
e le altre stazioni non trasmettono durante la trasmissione del frame e del relativo Ack.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

83

Figura 7-18: Trasmissione diretta di un frame


7.5.1.2 Modalit PCF (Point Coordination Function)
Tale modalit, che facoltativa, richiede la presenza di un AP che alloca il canale in modo centralizzato.
Le stazioni che desiderano servirsene devono registrarsi presso lAP per poterne usufruire. LAP successivamente interroga a turno tutte le stazioni registrate ed assegna loro il mezzo trasmissivo a turno. Nessuna stazione pu trasmettere con questa modalit se non autorizzata esplicitamente dallAP.
PCF pu essere utile nel caso di applicazioni che abbiano bisogno di una banda minima garantita (ad esempio trasmissione di audio e video), che possono richiedere allatto della registrazione presso lAP.
PCF pu convivere dentro una cella col DCF perch c' un ulteriore intervallo di tempo, detto PIFS (PCF
InterFrame Spacing), maggiore di SIFS e minore di DIFS, che regola laccesso al mezzo per trasmissioni
PCF. Di conseguenza, se nessuno impegna il mezzo trasmissivo dopo un tempo SIFS (il che significa che
una trasmissione DCF terminata), lAP pu impossessarsi del canale dopo un tempo PIFS, per gestire trasmissioni PCF prima di qualunque altra stazione, che deve attendere il pi elevato tempo DIFS per trasmettere in DCF.
Lo standard 802.11 infine definisce vari servizi che ogni DS ed ogni cella conformi allo standard devono
fornire (quindi tali servizi presuppongono lesistenza di uno o pi AP).
I servizi relativi ad un DS nel suo complesso sono:
Associazione: utilizzato da una stazione mobile quando entra in contatto con un AP. La stazione si annuncia e pu negoziare vari aspetti della comunicazione (ad es. uso di PCF con banda minima garantita). LAP
pu accettare o rifiutare la stazione, e se essa viene accettata deve autenticarsi;
Separazione: utilizzato quando una stazione abbandona una cella, la precedente associazione termina;
Riassociazione: utilizzato per cambiare il proprio AP preferito o nel transito da una cella ad unaltra. Lo
standard non specifica il supporto alla mobilit fra celle, che per il momento lasciato a soluzioni proposte
dai costruttori;
Distribuzione: specifica come instradare i frame, se allinterno della cella (via radio) o allesterno della
cella (via rete fissa);
Integrazione: specifica i meccanismi per inviare i frame a reti non 802.11 (ad esempio verso la rete 802.3
cui connesso lAP) operando eventualmente le necessarie conversioni di protocollo;
I servizi relativi ad una singola cella invece sono:
Autenticazione: servizio successivo allassociazione, in cui la stazione mobile deve autenticarsi.
Lautenticazione pu essere fatta sulla base dellindirizzo MAC della stazione, o con varie tecniche crittografiche;
Invalidamento: utilizzato quando una stazione abbandona una cella, la precedente autenticazione perde di
validit e la stazione non pi autorizzata a trasmettere dati;
Riservatezza: protezione dei dati trasmessi, ottenuta con crittografia a chiave segreta;
Trasferimento dati: il servizio datagram, come in 802.3.

7.6 IEEE 802.2


Questo standard, detto Logical Link Control (LLC), definisce la parte superiore del livello di data link in
modo indipendente dai vari sottolivelli MAC. Ha due funzioni principali:
- fornisce al livello di network un'interfaccia unica, nascondendo le differenze fra i vari sottolivelli MAC;
- fornisce, se richiesto dal livello superiore, un servizio pi sofisticato di quello offerto dai sottolivelli
MAC (che, ricordiamo, offrono solo servizi datagram). Esso infatti offre servizi datagram, servizi datagram confermati, servizi affidabili orientati alla connessione.
Il frame LLC modellato ispirandosi a HDLC, con indirizzi di mittente e destinatario, numeri di sequenze,

84

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

numeri di Ack (questi ultimi due omessi per i servizi datagram), ecc.
Gli indirizzi LLC sono lunghi un byte e sostanzialmente indicano quale protocollo di livello superiore deve
ricevere il frame di livello di network; in questo modo LLC offre un supporto multiprotocollo al livello superiore.
Il frame LLC viene imbustato, in trasmissione, in un frame dell'opportuno sottolivello MAC. Il processo
inverso ha luogo in ricezione.

Figura 7-19: Buste LLC e MAC

7.7 Reti locali virtuali (VLAN)


(dalla voce VLAN di Wikipedia, lenciclopedia libera)

Mediante cablaggi opportuni UTP con hub o switch tutti gli host possono essere connessi mediante struttura ad albero facilmente separabile fisicamente. La separazione pu essere determinata da:
- necessit di ottimizzazione ( meglio che gli utenti di un database specifico molto usato non intasino la
rete locale con il loro traffico pesante)
- necessit di sicurezza ( meglio che il database dell'ufficio amministrativo sia tenuto in un ramo distinto
della rete locale, per minimizzare la possibilit di accessi non autorizzati)
Se la separazione della rete locale fosse effettuata fisicamente, gli utenti dello stesso ufficio dovrebbero essere collocati nello stesso luogo, ma questo non sempre si verifica. Inoltre, ogni spostamento interno (personale che cambia stanza ma non cambia ufficio, o viceversa) richiederebbe un ricablaggio della rete.
Per risolvere questi problemi, il comitato 802 ha standardizzato un protocollo chiamato VLAN (Virtual
LAN), che separa la topologia fisica della rete dalla sua topologia logica.
- La rete divisa in VLAN. Ogni VLAN vista dai switch come una rete locale separata dalle altre.
- Lo switch memorizza le VLAN collegate ad ogni sua porta dentro una tabella (differente da quella di
instradamento) configurata manualmente.
- Un frame appartenente ad una VLAN pu essere instradato solo sulle porte appartenenti a quella
VLAN.
- Lo switch memorizza una tabella di instradamento specifica per ogni VLAN, cio si comporta come
uno switch multiplo.

Figura 7-20: esempio di VLAN


Nellesempio sono configurate due VLAN: G (su sfondo Grigio) e W (su sfondo Bianco); le linee che trasportano i frame di una VLAN sono indicate con la lettera relativa. Alcune linee devono trasportare i frame
di entrambe le VLAN
Il comitato 802 ha standardizzato un protocollo per lutilizzo delle VLAN (802.1Q). Ciascuna VLAN identificata da un numero, detto VID (Vlan ID), che va da 1 a 4094 (0 e 4095 sono riservati).

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

85

Il frame 802.1Q ha, dopo il campo destination address, due byte con valore 0x8100, seguito da due byte di
Tag contenente il numero di 12 bit identificativo della VLAN, e dalla lunghezza del campo dati e dal resto
del frame.

Figura 7-21: formato frame 802.1Q


Il problema di modificare la struttura del frame sta nel fatto che i nuovi frame non possono essere riconosciuti dallhardware gi installato, ma stato risolto dal meccanismo di utilizzo del frame.
La presenza del tag deve essere compresa ed utilizzata soltanto per linstradamento del frame attraverso la
LAN, quindi dagli switch. Gli switch 802.1Q che ricevono un frame 802.1Q devono rimuovere il tag prima
di recapitare il frame verso una stazione (o uno switch) non 802.1Q compatibile. In questo modo tutta la
parte a valle dellultimo switch 802.1Q compatibile continuer a lavorare come prima.
La stazione che invia un frame genera un frame 802.3 standard, mentre il primo switch 802.1Q compatibile
che riceve un frame su una interfaccia assegnata ad una VLAN deve modificare il frame inserendo le informazioni di tagging; lo switch lo pu fare correttamente perch quellinterfaccia (a valle della quale non
c hardware che comprende le VLAN) assegnata ad una VLAN ben definita nelle sue tabelle
Questa tecnica permette lintroduzione del protocollo 802.1Q in modo progressivo, senza intaccare la funzionalit interna della rete non 802.1Q compatibile.
Una porta di uno switch che inoltra pacchetti con il VLAN TAG detta tagged o trunk port. Invece, una
porta che inoltra pacchetti senza VLAN TAG detta access port. Alcuni switch accettano anche un traffico
misto di pacchetti tagged e non tagged; una porta configurata in questo modo detta hybrid port.
Il modo pi semplice per definire l'appartenenza di un host ad una VLAN basato sulle porte: ciascuna
porta di uno switch configurata per appartenere ad una data VLAN. Ogni pacchetto proveniente da quella
porta sar etichettato con l'ID della sua VLAN, e su questa porta verranno inviati solo pacchetti provenienti
dalla sua VLAN. Questo il metodo pi diffuso e pi semplice da implementare, in quanto lo switch deve
guardare solo da quale porta viene un frame per attribuirgli un VID.

7.8 Esercizi
Commentare ogni espressione impostata ed etichettarla con un indice progressivo compreso tra [].
Motivare ogni passaggio non algebrico.
Indicare l'unit di misura dopo ogni risultato individuato.
1. data la rete mostrata in figura. Le interfacce di rete di ogni switch sono numerate con: 0, in alto; 1, a
destra; 2, in basso; 3, a sinistra. Le tabelle di instradamento degli switch sono inizialmente vuote.
---------------X ------| S1 |------| S2 |------| S3 |
---------------|
|
Y
Z

Per ogni passaggio, mostrare le variazioni nelle tabelle di instradamento compilando la tabella seguente.
(Legenda: Si:= Switch i-esimo; H:= Host; IR:= Interfaccia di rete.)
Passaggio

S1
H

S2
H

S3
H

X invia un pacchetto a Z.

Le risposte ai "Perch" non sono richieste quando la risposta non riguarda nessuno switch.
X invia un pacchetto a Z.
A. Quali switch imparano dove X? Perch? Perch gli altri switch non imparano?
B. Linterfaccia di rete di Y vede il pacchetto? Perch?
Successivamente, Z invia un pacchetto a X.

86

Reti di Elaboratori - 2014

C. Quali switch imparano dove Z? Perch? Perch gli altri switch non imparano?
D. Linterfaccia di rete di Y vede il pacchetto? Perch?

M.T.Bombi, A.Giunta e altri

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

87

8 Il livello di network
Il livello di network serve a controllare il movimento dei pacchetti dal mittente al destinatario. A differenza
del livello di data-link, che usa tutto il canale fisico, il livello di network attraversa soltanto i dispositivi intermedi (router) necessari. I compiti svolti dal livello sono:
- Instradare i pacchetti lungo la sottorete di comunicazione (routing dei pacchetti);
- Controllare il flusso dei dati per evitare di inviare troppi dati a un router (pi lento) che non riesce ad elaborarli tutti.
- Interconnettere reti diverse (internetworking).
Il livello di network delimita la sottorete di comunicazione; quindi, in una rete pubblica, i servizi di
network sono linterfaccia tra la societ di comunicazione e lutenza.

8.1 Router
Un router un dispositivo per il passaggio dei dati che agisce a livello di network e che instrada i frame
nella rete mediante un algoritmo opportuno. La funzione di router pu essere eseguita da un dispositivo
specializzato oppure da un computer contenente un software apposito.
Ogni router ha alcune linee di ingresso e di uscita. Quando un router riceve un frame da una linea, elimina
dal frame l'intestazione e la coda (che sono gestiti dal livello di data-link), esamina la parte rimanente e decide su quale linea inoltrarlo. (Quindi, dal frame eliminato l'indirizzo 802 a 48 bit. Il router ignora se il
frame arriva da una LAN oppure da una rete punto-a-punto.)
Il principale strumento di lavoro di un router la sua tabella di routing, che indica, per ogni possibile
destinazione, la linea in uscita da usare per raggiungere la destinazione. Il routing :
- Statico, se le tabelle dei router sono calcolate off-line e caricate nel router allaccensione.
- Dinamico, se i router calcolano periodicamente le proprie tabelle, per gestire eventuali variazioni nella
struttura della rete.
Normalmente ogni linea del router gestisce due buffer: in uno deposita i pacchetti entrati da quella linea e
nell'altro deposita i pacchetti che usciranno verso quella linea. Il router prende un pacchetto da un buffer di
ingresso, lo esamina per individuare la sua destinazione, consulta la propria tabella e deposita il pacchetto
nel buffer di uscita corrispondente.
NETW-1

Figura 8-1: Buffer di un router


Inoltre, se il livello di network offre un servizio affidabile, il router deve attendere il riscontro di ogni pacchetto instradato e solo dopo il riscontro pu eliminare il pacchetto dal buffer di uscita. Se una linea di uscita di un router non riceve i riscontri (ad es., perch c un guasto) oppure se la linea troppo lenta per
smaltire il traffico, il buffer di uscita della linea si riempie. Se questa situazione permane, il router non potr instradare pacchetti verso quella linea di uscita e quindi dovr conservare questi pacchetti nei buffer di
ingresso; di conseguenza, anche i buffer di ingresso si riempiranno e il router non potr accettare pacchetti
in ingresso. Questo fenomeno detto congestione. Se c' congestione, il lavoro del router viene notevolmente rallentato, e ci pu congestionare anche i nodi vicini.

8.2 Servizi offerti al livello superiore


I servizi offerti al livello superiore possono essere:
- servizio con connessione e con riscontro (circuito virtuale);
- servizio senza connessione e senza riscontro (servizio datagram, come in un telegramma).

88

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

Figura 8-2: Servizi orientati alla connessione (a) e privi di connessione (b)

8.2.1 Servizio orientato alla connessione


Questo servizio instrada i pacchetti attraverso un circuito virtuale, cio un percorso composto da router
individuato da un algoritmo opportuno durante la fase di connessione, in base al contenuto delle tabelle di
routing; il circuito rimane valido per tutta la durata della comunicazione ed identificato mediante un ID.
Ogni router del circuito memorizza, in una tabella delle connessioni, la linea in entrata e la linea in uscita
che usa per ogni circuito. Ogni pacchetto contiene l'ID del circuito. Tutti i pacchetti che contengono lo
stesso ID del circuito virtuale vengono instradati nello stesso modo.
Quando avviene la disconnessione, il circuito scompare definitivamente.
Una rete a circuito virtuale consegna un flusso ordinato di pacchetti. Se un nodo cade, anche la comunicazione cade e qualche pacchetto pu perdersi; ci rallenta il ripristino della comunicazione stessa.
Durante la connessione, c' una negoziazione che stabilisce alcune caratteristiche della connessione stessa;
ad esempio, si negozia la velocit massima di trasferimento dei pacchetti, per evitare che i router pi veloci
inondino di pacchetti i router pi lenti.
Se una rete a circuito virtuale usata spesso per spedire pochi pacchetti, il tempo di attivazione della connessione pu essere troppo alto rispetto al tempo di trasferimento dei pacchetti. In questo caso, preferibile
usare i circuiti virtuali permanenti. Un circuito virtuale permanente un circuito virtuale permanentemente memorizzato nella tabella di routing di ogni router coinvolto; la connessione attiva" il circuito
permanente gi memorizzato.
Nelle reti a circuito virtuali, il costo del servizio proporzionale alla durata della connessione.

8.2.2 Servizio non orientato alla connessione


Nel servizio datagram, ogni pacchetto segue un percorso non fissato. Ogni datagram contiene lindirizzo
completo del destinatario, per consentire ai router intermedi di determinare il percorso. Naturalmente, i
pacchetti possono arrivare in un ordine sbagliato, ma c' il vantaggio che se un nodo cade, il pacchetto seguir un altro percorso.
In questo tipo di comunicazione il costo del servizio proporzionale al numero di pacchetti trasmessi.

8.2.3 Confronto tra servizi orientati alla connessione e servizi datagram


Caratteristica

Circuito virtuale

Datagram
Maggiore (in ogni pacchetto c
Banda trasmissiva Minore (in ogni pacchetto c' l'ID del circuito)
l'indirizzo di destinazione)
Spazio sui router Maggiore (c' una tabella per i circuiti virtuali)
Minore
Ritardo per il setup
Presente
Assente
Ritardo per il routing
Assente
Presente
Maggiore ( possibile in ogni moCongestione
Minore (le risorse sono allocate in anticipo)
mento)
Vulnerabilit
Alta
Bassa

8.3 Algoritmi di routing


La funzione principale del livello di network linstradamento dei pacchetti; un pacchetto tipicamente fa
molti salti (hop) da un router ad un altro. Linstradamento scomponibile in due fasi: routing e forwarding.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

89

Il routing individua, mediante un particolare algoritmo (ad es., in base alla distanza minima tra due nodi),
il percorso che collega qualunque mittente a qualunque destinatario. Il routing crea, per ogni nodo della rete, alcune informazioni (ad es., nella tecnologia IP crea la tabella di routing) che specificano la direzione
per ogni destinazione.
Il forwarding (inoltro) si differenzia dal routing perch non individua il percorso globale, ma soltanto il
prossimo nodo del percorso. Non conosce in anticipo tutto il percorso; i dati arrivati in un nodo e vengono
inoltrati verso un nodo opportuno. (Queste informazioni locali sono state individuate precedentemente dal
routing.)
Ambedue i processi (routing e forwarding) sono necessari per l'operativit di una rete. Tuttavia, il forwarding deve essere obbligatoriamente gestito dall'architettura di rete; invece, il routing pu essere gestito
dall'amministratore.
Un algoritmo di routing individua i nodi raggiungibili e memorizza, in ogni nodo coinvolto dal percorso,
le informazioni che saranno necessarie al forwarding per andare verso questi nodi.
L'operazione di memorizzazione deve essere coerente, per evitare che due nodi prendano decisioni contrapposte quando i dati sono inviati verso una certa destinazione. L'incoerenza deleteria perch pu originare loop (un pacchetto viene rimpallato ciclicamente su un insieme di pi nodi), buchi neri (un pacchetto
viene ricevuto da un nodo che non sa in che direzione instradarlo e perci lo scarta) e altro ancora.
Un algoritmo di routing dovrebbe anche individuare il percorso migliore, secondo una metrica decisa
dallutente, tra quelli percorribili. L'utente pu scegliere il percorso avente il minimo tempo medio di recapito di un pacchetto, oppure quello avente il minimo numero di router attraversati, oppure quello avente la
banda maggiore, etc.
La metrica consente di individuare il costo, cio un numero che misura la qualit della soluzione trovata.
L'algoritmo preferir il percorso a costo minore secondo quella determinata metrica. Il costo pu essere
calcolato usando anche due o pi metriche pesate opportunamente; ad es., il costo pu dipendere dal ritardo medio con un peso del 75% e dalla distanza tra i due interlocutori con un peso del 25%. I criteri possono essere anche contrastanti; ad es., si vuole minimizzare il ritardo medio di ogni pacchetto e contemporaneamente massimizzare l'uso delle linee, ma il primo criterio si realizza minimizzando il riempimento dei
buffer nei router, mentre il secondo si ottiene massimizzando lo stesso parametro.
Un algoritmo ottimale (cio, che cerca il percorso migliore) solitamente aumenta le richieste di risorse
(memoria, CPU) ma talvolta individua una soluzione poco migliore di unaltra soluzione nota. Inoltre,
laumento delle richieste di risorse pi che proporzionale rispetto al numero di nodi; talvolta, un algoritmo pu richiedere un tempo di calcolo o una quantit di memoria inaccettabili.

8.3.1 Caratteristiche di un algoritmo


Un algoritmo di routing deve presentare le seguenti caratteristiche:
Semplicit: La semplicit riduce la possibilit di bachi e consente a un router (che ha CPU e memoria finite) di dedicarsi soprattutto a inoltrare pacchetti, invece di calcolare nuove tabelle di routing;
Adattabilit: L'adattabilit consente a un router di funzionare su una qualsiasi topologia di rete e di gestire
modifiche di topologia senza arrestare il funzionamento della rete. Le caratteristiche sono:
- Rilevamento degli errori: l'algoritmo deve individuare i guasti e isolarli.
- Autostabilizzazione: Quando c' un guasto in una parte della rete o nella rete ci sono nuovi elementi
(aggiunta di reti, nuovi link, etc.), l'algoritmo deve individuare un nuovo percorso di instradamento (se
esiste) velocemente e automaticamente.
- Robustezza: lalgoritmo deve individuare eventuali funzionamenti anomali dei nodi. (Es: Un nodo propaga informazioni coerenti ma errate sullo stato della rete. Ci pu succedere, ad esempio, se un hacker
obbliga un router ad inviare destinazioni o percorsi inesistenti.)
Ottimalit nella scelta dei cammini, rispetto alle metriche prescelte.
Stabilit: la rete deve raggiungere, a regime, uno stato stabile che un routing non cambia pi, tranne quando ci sono variazioni dei costi o della topologia.
Equit: non possono esistere nodi trascurati dalla scelta dei percorsi di instradamento.
Un algoritmo reale non sempre gestisce tutte le caratteristiche; spesso, non garantisce la robustezza.

8.3.2 Problematiche di transitorio


Un algoritmo ideale risolve istantaneamente un imprevisto (ad es., ad una variazione di topologia). Invece,

90

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

un nodo su una rete reale si accorge di un collegamento guasto soltanto quando questa informazione gli arriva. Quindi, nel transitorio, soltanto alcuni router conoscono la topologia aggiornata della rete.
La risoluzione di un imprevisto richiede un periodo necessario alla rete per tornare alla stabilit. I fenomeni pi tipici che possono accadere in questi casi sono:
Black Hole: Un router ignora altri percorsi per la destinazione e quindi scarta ogni frame che gli arriva.
Routing Loop: Alcuni router fanno circolare un frame all'interno dello stesso percorso finch il frame non
scartato per eccessivo time to live. Un loop pi pericoloso di un black hole, perch questo ricircolo
pu congestionare progressivamente la rete.

8.3.3 Classificazione
Come abbiamo gi anticipato, gli algoritmi di routing si dividono in due classi principali:
- algoritmi statici, che individuano il routing all'avvio della rete; i router usano sempre quel routing.
- algoritmi dinamici, che correggono continuamente il routing iniziale della rete, a seconda del traffico,
della topologia della rete, etc. Questi algoritmi sono eseguiti all'avvio della rete e rimangono in esecuzione sui router durante il funzionamento della rete. Gli algoritmi dinamici si differiscono fra loro per:
- la provenienza delle informazioni (locale, oppure dai router adiacenti, oppure da tutti i router);
- il periodo di revisione delle decisioni (a intervalli di tempo prefissati, oppure quando il traffico sulla
rete o la topologia cambiano);
- la metrica di valutazione adottata (distanza, numero di hop, tempo di transito stimato).
In molte reti (Internet compresa) si usano:
- un algoritmo dinamico nella zona interna della rete, per sfruttare al meglio le maglie della rete, oppure
in zone dove la variabilit dei percorsi pi elevata.
- un algoritmo statico nelle zone esterne della rete, perch pi semplice; inoltre, una zona esterna ha solitamente una topologia ad albero, cio c' un solo cammino che la connette al resto della rete; quindi, in
questo caso, un algoritmo dinamico inutile.

Figura 8-3: Utilizzo congiunto di routing statico e dinamico

8.3.4 Il principio di ottimalit


Il principio di ottimalit dice che se nel cammino ottimo fra i router i e k c' un router j , allora anche il
cammino ottimo fra j e k interno al cammino ottimo fra i router i e k.
Se cos non fosse, ci sarebbe un altro cammino fra j e k migliore di quello contenuto nel cammino ottimo
fra i e k (ad es. quello tratteggiato in figura); ma allora ci sarebbe anche un cammino fra i e k migliore di
quello ottimo, che contro l'ipotesi iniziale.

Figura 8-4: Principio di ottimalit


L'insieme dei cammini ottimi cha vanno da ogni router a uno specifico router r di destinazione costituisce
un albero, detto sink tree, per il router r. Un algoritmo di routing individua, per ogni possibile router di

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

91

destinazione, un sink tree, e quindi instrada i pacchetti dentro questo sink tree.

8.3.5 Algoritmi statici


8.3.5.1 Routing basato sul cammino minimo
Un host della rete memorizza la rete mediante un grafo pesato i cui i nodi rappresentano i router, gli archi
rappresentano le linee punto-a-punto e i pesi associati agli archi rappresentano il costo di attraversamento della linee (secondo una delle metriche viste). All'avvio della rete (o quando la topologia modificata)
un algoritmo calcola il cammino minimo da un nodo a ogni altro nodo del grafo e invia queste informazioni ad ogni router.
Vediamo l'algoritmo di Dijkstra, che risolve questo problema quando:
- Si vuole trovare il cammino minimo da un nodo fissato P ad ogni altro ogni nodo v.
- La distanza da un nodo u ad un nodo v >= 0. (Questa ipotesi soddisfatta quando il grafo rappresenta
una rete di computer, perch la distanza indica la larghezza di banda occupata o il tempo impiegato per
la trasmissione da u a v.)
Input:
- n Numero dei nodi del grafo.
- m Numero dei collegamenti tra i nodi.
- d[u][v] Distanza dal nodo u al nodo v.
- p Nodo di partenza dei cammini minimi da trovare.
Output:
- prec[v] Nodo immediatamente precedente a v nel cammino minimo da P a v.
- cMin[v] Costo del cammino minimo da P a v.
Algoritmo camminoMinDijkstra(n, m, d, p; prec, cMin)
Si associano ad ogni nodo v tre informazioni:
marcato[v]: indicazione se il nodo marcato. Inizialmente, false.
prec[v]: Inizialmente, null (perch il cammino minimo non ancora noto).
cMin[v]: Inizialmente, +.
Si associa il costo 0 al nodo p (perch il cammino parte e arriva allo stesso p).
Per ogni nodo non marcato
Si individua il nodo k a costo minore tra quelli non ancora marcati. // A
Si marca k.
Per ogni nodo v tra quelli non ancora marcati e collegati a k
Se il costo per raggiungere v diminuisce quando si passa per k
(cio, se d[k][v]+c[k] < c[v])
Il nuovo costo c[v] sostituito da d[k][v]+c[k]. // B
Fine-se
Fine-Per-v
Fine-Per-nodoNonMarcato
Fine-camminoMinDijkstra

Figura 8-5: Percorsi ottimi che partono da A


Risolviamo il problema esposto nella figura.

92

A
B
F
G
E
C
H
E

Reti di Elaboratori - 2014

Vicini non
marcati

B,
C,
E,
H
C,
D
D

G
F
G

A
m
F
T

p
=

B
c
0

m
F

p
=
A

C
c

m
F

p
=

m
F

M.T.Bombi, A.Giunta e altri

p
=

m
F

p
=

m
F

p
=

m
F

p
=
A

m
F

T
H

p
=

T
T

C
H

12
10

Vediamo il costo dell'esecuzione di questo algoritmo.


- Una singola esecuzione del passo A costa O(log(n)), se si usa una particolare struttura di dati (qui non
descritta) detta coda a priorit. Questo passo eseguito per ogni nodo tranne P; quindi, costa complessivamente O(n * log(n)).
- Una singola esecuzione del passo B costa O(log(n)) (se si usa una coda a priorit). Questo passo eseguito per ogni collegamento; quindi, costa complessivamente O(m * log(n)).
- Quindi, l'algoritmo costa complessivamente O((n + m) * log(n)), che diventa:
- O(n * log(n)) nel caso ottimo, cio se il grafo "quasi lineare ";
- O(pow(n, 2) * log(n)) nel caso pessimo, cio se il grafo "circa completo";
8.3.5.2 Flooding
Il flooding (inondazione) l'invio di ogni pacchetto su ogni linea tranne quella da cui il pacchetto arrivato. Teoricamente, il flooding pu generare un numero infinito di pacchetti. Ci sono delle tecniche per limitare i pacchetti generati:
- Si inserisce in ogni pacchetto un contatore che poi viene decrementato ad ogni hop. Quando il contatore arriva a zero, il pacchetto viene scartato. Un appropriato valore iniziale pu essere il diametro della
rete.
- Il router iniziale inserisce la coppia (ID del router iniziale, Indice di sequenza) in ogni pacchetto. Ogni router memorizza queste informazioni e quando le vede per la seconda volta scarta il pacchetto.
- selective flooding: Un pacchetto viene inoltrato solo sulle linee che vanno all'incirca nella giusta direzione (l'algoritmo deve gestisce delle apposite tabelle).
Il flooding non solitamente usabile come algoritmo di routing; per utile in campo militare (perch offre la massima affidabilit e robustezza), perch aggiorna contemporaneamente informazioni distribuite e
perch il suo risultato (che il cammino minimo) confrontabile con il risultato di altri algoritmi.

8.3.6 Algoritmi dinamici


Le reti moderne usano algoritmi dinamici, che si adattano automaticamente ai cambiamenti della rete.
8.3.6.1 Routing basato sui vettori di distanza (distance vector routing)
Ogni router r mantiene una tabella (vettore di distanza) che contiene, per ogni altro router r':
- la distanza (numero di hop, ritardo, ecc.) che separa r' dal router r;
- la linea in uscita da usare per arrivare da r' a r.
Il router stima la distanza dai suoi vicini immediati mandando speciali pacchetti ECHO sui collegamenti
corrispondenti e misurando il tempo della risposta.
A intervalli regolari ogni router manda la sua tabella ad ogni vicino, e riceve quelle dei vicini. Quando un
router riceve un'informazione, aggiorna la sua tabella scegliendo, per ogni destinazione, il percorso migliore, cio quello che ha la minima somma delle seguenti distanze:
- La distanza (misurata direttamente) fra il router stesso ed un suo vicino immediato r'.
- La distanza (inserita nella tabella ricevuta da r') fra quel vicino r' ed il router di destinazione.
Questo algoritmo molto lento quando un collegamento interrotto, perch i router non conoscono la topologia della rete e quindi non sanno gestire modifiche della topologia della rete.
Ad es., consideriamo una rete con i router A, B, C, D E collegati mediante una topologia lineare:
Router
Distanze da A dopo 4 scambi.

B
1

C
2

D
3

E
4

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

93

Se la linea fra A e B cade, si ha la seguente evoluzione:


Router
Distanze da A dopo 1 scambio.
Distanze da A dopo 2 scambi.
Distanze da A dopo 3 scambi.
Distanze da A dopo 4 scambi.

B
3

C
2

D
3

E
4

3
5
5

4
4
6

3
5
5

4
4
6

B
2
C
D
E

vuole arrivare
da A.)
vuole arrivare
vuole arrivare
vuole arrivare

ad A da C. (C dista
ad A da B o D.
ad A da C o E.
ad A da D.

Quindi, ogni router aumenta la sua distanza per arrivare ad A. Questo inconveniente detto conteggio
allinfinito.
Se la distanza rappresenta il numero di hop, si pu porre come limite il diametro della rete; invece, se rappresenta il ritardo, si deve porre un limite molto alto, altrimenti un cammino con un ritardo occasionalmente alto (ad es., a causa di congestione) verrebbe interrotto.
Sono state proposte molte soluzioni al problema del conteggio allinfinito, ma nessuna veramente efficace. Nonostante ci, il distance vector routing era l'algoritmo di routing di ARPANET ed usato anche in
Internet col nome di RIP (Routing Internet Protocol), e nelle prime versioni di DECnet e IPX.
8.3.6.2 Routing basato sullo stato dei canali (link state routing)
Nel link state routing, ogni router misura il tempo di invio fra s e ogni suo vicino e glielo comunica.
Mediante questo tempo, il router ricostruisce localmente la topologia completa dell'intera rete e calcola il
cammino minimo fra s e ogni altro. I passi da seguire sono:
- scoprire i vicini e identificarli;
- misurare il costo delle relative linee;
- costruire un pacchetto con tali informazioni;
- mandare il pacchetto a tutti gli altri router;
- costruire la topologia dell'intera rete mediante gli analoghi pacchetti arrivati dagli altri router.
- calcolare il cammino pi breve verso ogni altro router.
Quando il router si avvia, invia un pacchetto ECHO su ogni linea in uscita e quindi riceve da ogni vicino
r' l'indirizzo di r' (univoco in tutta la rete). Inviando vari pacchetti ECHO e misurando il tempo medio di
arrivo della risposta diviso 2, il router calcola il ritardo della linea.
Quindi, il router costruisce un pacchetto (pacchetto di link state) con: ID del mittente, indice di sequenza
del pacchetto, et del pacchetto, lista dei vicini con i relativi ritardi. La costruzione e l'invio di tali pacchetti
avviene tipicamente a intervalli regolari o quando accade un evento significativo (es.: una linea va gi o
torna su).
La distribuzione dei pacchetti fatta di solito mediante il flooding; nei pacchetti sono inserite le coppie (ID
del router iniziale, Indice di sequenza) per eliminare i duplicati. Ogni pacchetto confermato. Per evitare
la circolazione di qualche pacchetto nello stesso percorso (per qualche errore), l'et del pacchetto viene decrementata ogni secondo, e quando arriva a zero il pacchetto viene scartato.
Combinando le informazioni arrivate, ogni router costruisce il grafo della rete e calcola il cammino minimo verso ogni altro router.
Il link state routing usato in Internet: il protocollo standard OSPF (Open Shortest Path First) basato
su tale principio e sta diventando l'algoritmo pi utilizzato.

8.3.7 Routing gerarchico


Se la rete contiene decine di migliaia di nodi, le tabelle di routing diventano ingestibili. Il routing va quindi
impostato in modo gerarchico, come nei sistemi telefonici.
La rete divisa in regioni. Ci sono due livelli di routing: un primo livello all'interno di ogni regione e un
secondo livello fra tutti i router di confine, che sono quelli che collegano le regioni tra loro.
All'interno di una regione, un router (detto router interno) conosce il percorso verso ogni altro router della
regione. Un pacchetto destinato a un router di un'altra regione, spedito verso il router di confine della
propria regione. Di conseguenza, un router interno memorizza, nella sua tabella, la linea di collegamento a
ogni router interno e la linea di collegamento al router di confine di ogni regione.
Un router di confine sa a quale router di confine deve inviare i dati per farli arrivare alla regione di destinazione; quindi, memorizza nella sua tabella (oltre alle informazioni necessarie allinstradamento interno), il
prossimo router di confine di ogni regione da contattare e la linea da usare per arrivarci.
Se due livelli di routing non sono sufficienti, possibile aggiungerne un terzo.

94

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

Figura 8-6: Routing gerarchico

8.4 Controllo della congestione


Se ci sono troppi pacchetti in una parte della subnet, pu avvenire una congestione che degrada le prestazioni. Infatti, se un router non riesce a gestire un pacchetto che gli arrivato, lo perde e ci causa una ritrasmissione che aggrava la congestione.

Figura 8-7: Effetti della congestione


La congestione in un router pu derivare da diversi fattori, quali:
- pochi buffer nel router;
- processore lento nel router;
- linea di trasmissione lenta (il buffer nel router di partenza si riempie).
- memorizzazione prolungata nel proprio buffer dei pacchetti inviati ad un router vicino che bloccato e
quindi non conferma la ricezione.
Se la rete offre un servizio orientato alla connessione, la congestione pu essere controllata mediante la
preallocazione delle risorse; quando c' una connessione, si negoziano le risorse da riservare per la connessione stessa (numero massimo di bit al secondo che possono viaggiare sulla connessione, numero di
buffer da allocare nei router del circuito virtuale, ecc.). In questo modo si previene la congestione, anche se
tipicamente c' uno spreco di risorse allocate ma non utilizzate a pieno.
Nel caso di rete datagram, invece, la congestione controllata in tutta la rete, mediante due approcci differenti:
- controllo ad anello aperto (senza retroazione), che imposta l'instradamento in modo da evitare la congestione, ma poi non effettua azioni correttive.
- controllo ad anello chiuso (con retroazione), che controlla la situazione della rete e intraprende le azioni opportune quando necessario. In questa categoria rientrano i pacchetti di strozzamento.

8.4.1 Pacchetti di strozzamento


In questo approccio ad anello chiuso, un router misura, per ogni linea d'uscita, l'utilizzo istantaneo U e accumula, entro una media esponenziale M, la storia passata:
MNuovo = a * MVecchio + (1 - a) * U
dove il parametro a (compreso fra 0 ed 1) il peso

della storia passata e 1-a il peso dell'informazione pi


recente.
Quando, per una delle linee in uscita, M si avvicina a una soglia di pericolo prefissata, il router esamina i

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

95

pacchetti in ingresso per vedere se sono destinati alla linea d'uscita che in allarme. In caso affermativo,
invia all'host di origine del pacchetto un pacchetto di strozzamento (choke packet) per avvertirlo di diminuire il flusso.
Quando l'host sorgente riceve il pacchetto di strozzamento diminuisce il flusso (tipicamente lo dimezza) e
ignora i successivi pacchetti di strozzamento per un tempo prefissato, perch tipicamente ne arriveranno
molti in sequenza. Trascorso tale tempo prefissato, l'host attende altri pacchetti di strozzamento e se arrivano, riduce ancora il flusso; altrimenti, aumenta di nuovo il flusso.
L'unico problema di questa tecnica la lentezza di reazione, perch l'host che produce i pacchetti impiega
un certo tempo per ricevere i choke packet e per diminuire di conseguenza il ritmo della trasmissione. Per
migliorare le cose si pu costringere ogni router sul percorso, appena riceve tali pacchetti, a rallentare subito il ritmo. In tal caso si parla di hop-by-hop choke packet.
Questa tecnica alleggerisce molto pi velocemente il primo router che problemi di congestione, ma richiede pi spazio di buffer nei router sul percorso dall'host originario a quel router.

8.5 Internetworking
Come sappiamo, le architetture di rete possono differenziarsi, ad es., nei tipi di servizio offerti, nelle modalit di indirizzamento, nella grandezza massima dei pacchetti e nel loro formato.
La connessione di reti eterogenee (internetworking) presenta alcuni problemi non banali, tra i quali:
- difformit nei servizi offerti (ad esempio, solo su una rete offre un servizio connesso);
- difformit nei formati dei pacchetti e degli indirizzi;
- difformit, nelle subnet, dei meccanismi di controllo dell'errore e della congestione;
- difformit nella grandezza massima dei pacchetti.
Questi problemi sono gestiti mediante tecniche basate sull'uso di switch (che operano a livello di data-link)
e di router multiprotocollo (che operano a livello di network e che possono gestire contemporaneamente
pi protocolli di network).

8.5.1 Reti di router multiprotocollo


Un router multiprotocollo pu convertire il formato di un frame da un protocollo ad un altro. Quindi,
consente la comunicazione tra reti che usano differenti protocolli di network, cio realizza una
internetwork.
Le reti OSI possono parlare fra loro, e anche quelle IP. Nella sottorete costituita dai router multiprotocollo
circolano pacchetti di entrambe le architetture, che vengono instradati secondo le regole di competenza
della loro architettura.

Figura 8-8: Internetwork basata su router multiprotocollo

8.5.2 Tunneling
Il tunneling, una tecnica usata quando le due reti che comunicano sono entrambe di tipo X ma sono connesse da una rete diversa di tipo Y. (Questo caso pi semplice di quello gestito da un router multiprotocollo.)

96

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

Figura 8-9: Tunneling


La rete di tipo Y non necessita di un router multiprotocollo. Invece, ogni rete di tipo X ha un router multiprotocollo (per comunicare con la rete di tipo Y) che inserisce (o estrae) un pacchetto di tipo X dentro un
pacchetto di tipo Y e lo invia alla rete di tipo Y. Quindi, il pacchetto contiene due buste di livello di
network: una di tipo X e una di tipo Y.

Figura 8-10: Doppio livello di network nel tunneling

8.5.3 Frammentazione
Quando i pacchetti arrivati da una rete sono troppo grandi per transitare su un altra, il livello di network
della rete di origine deve spezzettare il pacchetto in frammenti prima di consegnarli alla rete intermedia e
il livello di network della rete di destinazione deve ricomporre i frammenti quando questi giungono dalla
rete intermedia in quella di destinazione. (Come vedremo, il protocollo IP gestisce questa funzionalit.)

8.5.4 Circuiti virtuali concatenati


Un circuito virtuale pu essere esteso su pi reti eterogenee, se queste offrono servizi connessi nel livello
di network. Questo circuito una concatenazione di circuiti virtuali ognuno dei quali attraversa una rete.
Ad ogni confine fra due reti c' un router multiprotocollo che:
- crea il circuito virtuale che attraversa la propria rete e che arriva ad un altro router multiprotocollo situato all'altra estremit della rete;
- instrada i pacchetti in questo circuito virtuale.

8.5.5 Gateway di trasporto


Un gateway di trasporto connette due computer che usano differenti protocolli orientati alla connessione
e converte opportunamente il formato di questi protocolli.
Ad esempio, un gateway di trasporto pu collegare un host che usa il protocollo orientato alla connessione
TCP/IP con un altro host che usa un protocollo orientato alla connessione detto SCTP.

8.5.6 Gateway di applicazione


Un gateway di applicazione connette due computer che usano applicazioni o dati di formato differente e
converte opportunamente questo formato.
Ad esempio, per mandare un messaggio di posta elettronica da un host Internet a un utente OSI:
- Si compone il messaggio secondo il formato Internet; l'indirizzo del destinatario un indirizzo OSI, ma
viene espresso secondo regole valide per Internet.
- Si invia il messaggio a un mail gateway, cio a un server di posta elettronica che pu convertire i formati.
- Il mail gateway estrae il testo dal messaggio, lo inserisce in un nuovo messaggio costruito secondo il
formato OSI (che, per la posta elettronica, definito dallo standard X.400) e lo invia sulla rete OSI
(consegnandolo al suo livello di trasporto).

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

97

8.5.7 Internetwork routing


In una internetwork, le singole reti componenti sono entit autonome, dette sistemi autonomi (AS).
In questo caso, il routing complessivo a due livelli:
- Un primo livello costituito dall'Interior Gateway Protocol (IGP), che l'algoritmo di routing usato
da un AS al proprio interno. Naturalmente, differenti AS possono utilizzare differenti IGP. Come abbiamo gi visto, un IGP pu anche essere gerarchico, in particolare quando le dimensioni dell'AS sono
considerevoli.
- Un secondo livello dato dall'Exterior Gateway Protocol (EGP), che l'algoritmo usato per gestire il
routing fra diversi AS. Tipicamente, EGP l'algoritmo di routing che gestisce i router multiprotocollo.
L'aspetto pi interessante di EGP che esso spesso deve adattarsi a specifiche leggi nazionali (ad esempio, divieto di far transitare dati sul suolo di una nazione ostile).

8.6 Il livello Internet


Internet una collezione di sistemi autonomi (AS) connessi gli uni con gli altri. Non c' una struttura rigida, ma comunque si possono distinguere alcune componenti:
- dorsali (backbone) principali, cio le linee ad alta velocit;
- reti regionali (USA);
- reti nazionali (Europa e resto del mondo);
- reti locali.

Figura 8-11: Organizzazione della rete Internet


La comunicazione gestita dal protocollo di livello di network dell'architettura TCP/IP, e cio IP (RFC
791). IP un protocollo datagram, quindi non connesso e non affidabile, che opera come segue:
- riceve i dati dal livello di trasporto e li incapsula in pacchetti di grandezza massima pari a 64 Kbyte
(normalmente circa 1.500 byte);
- instrada ogni pacchetto sulla sottorete di comunicazione, eventualmente frammentandolo lungo il viaggio;
- a destinazione, riassembla (se necessario) i frammenti in pacchetti, estrae da questi i dati del livello di
trasporto e li consegna nell'ordine in cui sono arrivati (che pu essere diverso da quello di partenza).

8.6.1 L'header IP (versione 4)


Un pacchetto IP costituito da un header (header) e dai dati. L'header ha una parte fissa di 20 byte e una
parte, opzionale, di lunghezza variabile.
I campi dell'header hanno le seguenti funzioni:
- Version: Identificativo della versione del protocollo (oggi 4).
- IHL Numero di parole contenute nell'header. Una parola una sequenza di 4 byte. Un header ha da 5 a
15 parole.
- Type of service caratterizza affidabilit e velocit richieste. di fatto ignorato dai router.
- Total length Numero di byte del pacchetto (inclusi i dati). Il massimo 65.535 byte.
- Identification Identificativo del pacchetto; tutti i frammenti di uno stesso pacchetto hanno lo stesso valore.
- DF (don't fragment) Se vale 1, il pacchetto non pu essere frammentato, a costo di scegliere una strada
pi lenta.
- MF (more fragments) Se vale 1, il pacchetto non ancora finito.
- Fragment offset indice del frammento nel pacchetto.

98

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

- Time to live contatore (inizializzato a 255) che decrementato di uno a ogni hop (o ad ogni secondo).
Quando arriva a zero, il pacchetto viene scartato.
- Protocol codice del protocollo di livello di trasporto a cui consegnare i dati (i codici sono definiti in
RFC 1700).
- Header checksum checksum di controllo dell'header: si sommano (in complemento ad uno) le parole a
16 bit dello header, considerando il checksum a zero; si complementa ad uno il risultato; ricalcolato ad
ogni hop (quando il time to live cambia).
- Source address indirizzo del mittente.
- Destination address indirizzi del destinatario.
- Options opzioni. Solo cinque sono definite oggi: security (quanto il pacchetto segreto), strict source
routing (cammino da seguire), loose source routing (lista di router da non mancare), record route (ogni
router appende il suo indirizzo) e timestamp (ogni router appende il suo indirizzo pi un timestamp).

Figura 8-12: Formato dell'header IP

8.6.2 Indirizzi IP
Un indirizzo IP un numero di 32 bit (cio, di 4 byte). Ogni host o router nell'intera rete Internet ha un
unico indirizzo IP; pi correttamente, l'indirizzo IP assegnato ad un'interfaccia di rete, non ad un host.
Quindi:
- Se un host ha un'unica interfaccia di rete (ad es., un PC in LAN), allora ha un unico indirizzo IP.
- Se un host ha n interfacce di rete (ad es., un router connesso ad una LAN e ad n-1 linee punto-a-punto)
ha n indirizzi.
In questo contesto, indicheremo (impropriamente) con il termine host una generica interfaccia di rete.
8.6.2.1 Prefissi
Gli indirizzi IP sono costruiti in modo gerarchico (a differenza degli indirizzi MAC). Ogni indirizzo di 32
bit composto:
- da una parte iniziale di lunghezza variabile, detta prefisso di rete, che identifica la rete IP dove c'
l'host;
- da una parte finale, detta host number, che identifica l'host nella rete.
Tutti gli host di una rete hanno lo stesso prefisso. Quindi, una rete possiede un blocco di indirizzi IP contigui.
Un indirizzo IP di un host scritto nella notazione decimale a punti: ognuno dei 4 byte dell'indirizzo
scritto in cifre decimali (da 0 a 255) e i byte sono separati da un punto. Ad es.: 193.192.140.37
Il prefisso di una rete scritto specificando:
- il pi basso indirizzo IP tra quelli posseduti dalla rete;
- il numero di bit del prefisso, preceduto dal carattere '/'.
Es. L'indirizzo IP 193.192.140.37 appartiene ad una rete che possiede pow(2, 8) indirizzi IP. Allora l'host
number ha 8 bit; quindi, il prefisso occupa 24 bit a partire dall'indirizzo 193.192.140.0, cio scritto
193.192.140.0 /24.
Poich la lunghezza del prefisso non individuabile mediante l'indirizzo IP, i protocolli del routing devono
indicarla ai router.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

99

La scrittura /n, dove n lunghezza del prefisso, simboleggia una sequenza, detta maschera di sottorete, i
cui primi n bit sono 1 e gli altri bit sono 0. Mediante un'operazione di AND tra i bit della maschera di sottorete e quelli dell'indirizzo IP possibile estrarre il prefisso della rete

Figura 8-13: a) L' indirizzo IP lungo 8+8+2 bit. b) La maschera di sottorete /18.
La struttura gerarchica degli indirizzi d un vantaggio e due svantaggi.
Il vantaggio che un router inoltra un pacchetto analizzando soltanto il prefisso di rete; ignora l'host number perch tutti gli host della stessa rete si trovano nella stessa direzione rispetto al router. L'host number
sar analizzato soltanto quando il pacchetto raggiunger la rete di destinazione. Quindi, le tabelle di routing sono le pi piccole possibili. Infatti, se un router dovesse memorizzare l'indirizzo di ognuno degli host
su Internet (che sono circa un miliardo), la sua tabella di routing sarebbe grandissima. Invece, usando questa gerarchia, i router devono memorizzare soltanto circa 300.00 prefissi.
Il primo svantaggio che l'indirizzo IP di un host dipende dalla rete in cui si trova, a differenza di un indirizzo Ethernet che pu essere usato ovunque nel mondo. Quindi, un router riuscir soltanto a inviare pacchetti destinati a quel prefisso di rete. Ad es., la progettazione di una rete mobile IP richiede di gestire host
che si spostano tra le reti ma vogliono conservare lo stesso indirizzo IP.
Il secondo svantaggio che la gerarchia spreca molti indirizzi se usata senza attenzione. Se ad una rete
sono assegnati troppi indirizzi, molti di questi indirizzi non saranno usati. Questo spreco sarebbe irrilevante
se gli indirizzi fossero sufficienti; per, stato calcolato che la crescita nell'uso di Internet utilizzer tutti
gli indirizzi entro venti anni. IPv6 la soluzione a questa futura penuria, ma finch non si affermer ci sar
bisogno di usare gli indirizzi IP in modo molto efficiente.
8.6.2.2 Indirizzi speciali
I seguenti prefissi generano indirizzi speciali, e quindi non possono essere assegnati.
- L'indirizzo 0.0.0.0 significa l'host corrente. usato da un host quando questo si sta inizializzando.
- Un indirizzo con tutti 0 nel prefisso significa la rete corrente. usato da un host quando fa riferimento alla propria rete ma non conosce il prefisso (ma deve conoscere la maschera di sottorete, per sapere
quali sono i bit dell'host number).
- Un indirizzo 127.x.y.z /8 significa loopback: un pacchetto inviato a questo indirizzo ricevuto (ed elaborato) soltanto dall'host che lo ha inviato; quindi, il pacchetto non trasmesso nella rete. usato quando si vuole inviare un pacchetto all'host senza conoscere il suo host number. (Ad esempio, usato per
testare localmente un software di rete, oppure per contattare un servizio che si trova sullo stesso host,
ma che l'utente pensa di trovare altrove.)
- L'indirizzo 255.255.255.255 significa ogni host della rete corrente. usato da un host per trasmettere
in broadcast sulla rete corrente.
I seguenti host number generano indirizzi speciali, e quindi non possono essere assegnati.
- Un indirizzo con tutti 0 nell'host number significa indirizzo della rete. usato per indicare sinteticamente tutti gli indirizzi della rete.
- Un indirizzo con tutti 1 nell'host number significa ogni host della rete indicata dal prefisso. usato
da un host per trasmettere in broadcast su una rete differente dalla propria. Molti amministratori di rete
disabilitano questa caratteristica per motivi di sicurezza.
8.6.2.3 ICANN
Lassegnazione degli indirizzi IP coordinata a livello internazionale da ICANN (Internet Corporation for
Assigned Names and Numbers), un ente non profit, con uffici a Marina del Rey e a Bruxelles, che anche
responsabile della gestione del sistema dei nomi a dominio generici di primo livello (gTLD; ad es., .com,
.net, .info) e dei domini nazionali (ccTLD; ad es., .it, .uk). ICANN si appoggia agli RIR (Regional Internet

100

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

Registy) che a loro volta coordinano i LIR (Local Internet Register).


8.6.2.4 Sottoreti
Ogni azienda gestisce autonomamente il proprio blocco di indirizzi IP, ma deve evitare di sprecare gli indirizzi; ci pu succedere quando la rete aziendale ampliata.
Es. Un'azienda usa il prefisso 192.1.0.0 /22 per gestire una rete Ethernet nel proprio dipartimento X (quindi, ha pow(2, (32-22))= 1024 indirizzi disponibili). Un anno dopo, il dipartimento Y della stessa azienda
vuole collegarsi ad Internet; successivamente, anche il dipartimento Z vuole collegarsi. L'azienda potrebbe
acquistare altri blocchi di indirizzi, ma questo sarebbe costoso; se ha ancora indirizzi disponibili, pu collegare i dipartimenti Y e Z ad Internet modificando l'organizzazione degli indirizzi.
@

Risolviamo il problema dividendo il blocco di indirizzi in pi parti; l'azienda vede ogni parte come una rete, mentre il mondo esterno vede il blocco di indirizzi come un'unica rete. Questa divisione detta subnetting; le reti ottenute dopo la divisione sono dette subnet o sottoreti. (Il termine "sottorete" in questo contesto differente dal termine, gi visto, di "sottorete" che indica l'insieme dei router e delle linee di comunicazione.)
Il router della sottorete (collegato ad Internet) potrebbe memorizzare, per ogni host destinatario, la coppia
{"indirizzo di host", "sottorete che contiene l'host"}, ma cos vanificherebbe il vantaggio della gerarchia.
Pi efficientemente, il router memorizza soltanto la maschera di ogni sottorete; quando riceve un pacchetto, gli estrae l'indirizzo di destinazione e individua la sottorete dell'host destinatario, cio la sottorete il cui
prefisso uguale al risultato dell'AND tra l'indirizzo IP e la maschera corrispondente.
La divisione in sottoreti potr essere cambiata in futuro (se sar necessario) aggiornando soltanto le maschere di sottorete all'interno dell'azienda. All'esterno, il subnetting non visibile; quindi, una nuova divisione non richiede di contattare ICANN n di modificare qualsiasi database esterno.
@

Es. Per risolvere il nostro problema aziendale, dividiamo il blocco 192.1.0.0 /22 in modo da assegnare met degli indirizzi al dipartimento X, un quarto degli indirizzi al dipartimento Y, un ottavo degli indirizzi al
dipartimento Z; il rimanente ottavo rimane disponibile. Sintetizziamo i risultati nella tabella seguente.
Sottorete interna Prefisso /Maschera di sottorete
Numero di indirizzi
Ultimo indirizzo
Dipartimento X
192.1.0.0 /23
pow(2, 32-23) = pow(2, 9) = 512
192.1.1.255
Dipartimento Y
192.1.2.0 /24
pow(2, 32-24) = pow(2, 8) = 256
192.1.2.255
Dipartimento Z
192.1.3.0 /25
pow(2, 32-25) = pow(2, 7) = 128
192.1.3.127
Parte disponibile
192.1.3.128 /25
pow(2, 32-25) = pow(2, 7) = 128
192.1.3.255
Individuiamo la rete che contiene l'host 192.1.3.9.
Sottorete interna

Prefisso /Maschera di sottorete

Dipartimento X
192.1.0.0 /23
Dipartimento Y
192.1.2.0 /24
Dipartimento Z
192.1.3.0 /25
Quindi, l'host destinatario nella rete del dipartimento Z.

AND(192.1.3.9,
maschera di sottorete)
192.1.1.0
192.1.3.0
192.1.3.0

AND = = Prefisso
false
false
true

Successivamente, l'azienda cambia la ripartizione degli indirizzi, in modo da lasciare disponibile il primo
quarto degli indirizzi e di dare un quarto degli indirizzi ad ogni sottorete. Sintetizziamo i risultati nella figura seguente.

Figura 8-14: Esempio di subnetting


@

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

101

8.6.2.5 Classi
Nel 1993 gli indirizzi IP sono stati divisi in cinque classi: A, B, C, D, E. La classe di una rete determina il
numero di bit appartenenti all'indirizzo di rete, secondo la seguente figura. Questa tecnica detta indirizzamento classful.

Figura 8-15: Formati degli indirizzi IP


Ricordando che i prefissi 0.x.y.z e 127.x.y.z non sono utilizzabili (e quindi non appartengono alla classe A)
e che gli host number "tutti 0" e "tutti 1" non sono utilizzabili in nessuna classe, sintetizziamo i valori nella
seguente tabella.
Clas
se

Range del
primo numero

N. di bit disponibili per


il prefisso

[1, 126]

7 (= 8-1)

[128, 191]

14 (= 16-2)

[192, 223]

21 (= 24-3)

D
E

[224, 239]
[240, 255]

N. di reti disponibili
126
(= pow(2,7)-2)
16.384
(= pow(2,14)
2.097.152
(= pow(2,21)

N. di bit disponibili per gli


host in ogni rete
24 (= 32-8)
16 (= 32-16)
8 (= 32-24)

N. di host disponibili in
ogni rete
16.777.214
(= pow(2,24)-2)
65.534
(= pow(2,16)-2)
254
(= pow(2,8)-2)

Questa struttura ha una grandezza rigida dei blocchi di indirizzi IP. Fornisce pi di 2 miliardi di indirizzi,
ma ne spreca molti milioni. Per molte organizzazioni, una rete di classe A, con 16 milioni di indirizzi,
troppo grande, e una rete di classe C, con 254 indirizzi, troppo piccola. La classe B, che ha 65.534 IP,
sembra dimensionata correttamente; ma alcuni studi hanno mostrato che met delle reti di classe B hanno
meno di 50 host.
Le reti che non usano la divisione rigida delle classi sono dette classless.
8.6.2.6 CIDRClassless InterDomain Routing
L'elevato numero di host di Internet ha indicato che l'indirizzamento IP pi flessibile senza l'uso delle
classi. Quindi, stato definito un nuovo standard di indirizzamento (e anche una nuova implementazione
del software dei router) svincolato dalla suddivisione in classi, detto CIDR (Classless InterDomain Routing) (e pronunciato [said*]). Il CIDR permette di aggregare le reti IP in superreti (oltre che dividerle
in sottoreti, come visto in precedenza).
Es. Un ente ha bisogno di circa 2000 indirizzi IP. Una rete di classe B troppo grande (64.000 indirizzi).
Quindi, acquisisce 8 reti di classe C (8 * 256 = 2.048 indirizzi), dalla 194.24.0.0 alla 194.24.7.0; queste 8
reti di classe C possono essere accorpate in un'unica superrete:
- Prefisso/ Maschera di sottorete: 194.24.0.0/ 21
- Range di indirizzi (escluso quelli speciali): [194.24.0.1, 194.24.7.254]
- Broadcast: 194.24.7.255
@

8.6.3 Routing IP
La sottorete che collega due router costituita soltanto dalle due interfacce di rete e dalla linea di comunicazione.
Una rete fisica (oppure, in questo contesto, semplicemente "rete") un insieme di host aventi le interfacce
di rete collegate fisicamente mediante una particolare tecnologia.

102

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

Una rete logica l'insieme delle interfacce di rete aventi lo stesso indirizzo di sottorete e collegate senza
attraversare un router; tale condizione viene detta di routing implicito.
IP assumeva originariamente una corrispondenza biunivoca tra reti fisiche e logiche; realizzazioni pi moderne ammettono anche pi reti logiche nella stessa rete fisica e viceversa.
Per scegliere il percorso di routing, bisogna determinare, mediante il prefisso di destinazione, se l'host destinatario diretto, cio se situato sulla stessa rete dell'host mittente, oppure indiretto, cio, situato
su una rete diversa da quella dell'host mittente.
Nel primo caso, un datagramma IP arriva direttamente all'host destinatario.
Nel secondo caso, un datagramma attraversa uno o pi router. Ogni router possiede una tabella (aggiornata
periodicamente) che:
- Per ogni host della rete collegata direttamente al router, memorizza il suo number host.
- Per ogni rete remota nota al router, memorizza:
- il suo prefisso;
- le informazioni necessarie per instradare il pacchetto;
- l'indirizzo del router successivo, nel caso delle linee punto-a-punto.
Inoltre, il router memorizza l'indirizzo di un default router (e la linea da usare per raggiungerlo) al quale
invia ogni pacchetto destinato a una rete sconosciuta.
In sintesi, dato un pacchetto avente il prefisso di rete pref, un router lo instrada come segue:
Se pref 127 // loopback
L'host elabora il pacchetto come se l'avesse ricevuto e non lo trasmette al suo esterno.
Altrimenti se pref 0 (e l'host number non 0) // prefisso di rete
oppure se pref uguale al prefisso di rete del mittente
oppure se pref 255.255.255.255 (broadcast sulla rete del mittente)
Il router non inoltra il pacchetto.
Altrimenti se pref noto al router
Il router inoltra opportunamente il pacchetto (consultando la sua tabella di routing).
Altrimenti
Il router inoltra il pacchetto al router di default.

Figura 8-16: Collegamento di router IP


Nell'esempio della figura precedente, il router X:
- Se riceve un pacchetto destinato a 150.1.10.1, allora lo invia sulla LAN di sinistra.
- Se riceve un pacchetto destinato a 150.2.10.3 e sa che la rete 150.2 accessibile mediante il router Y,
allora invia il pacchetto al router Y.
8.6.3.1 Interconnessione di sottoreti IP sulla stessa LAN
Quando un host invia un datagramma ad un host appartenente ad una sottorete (logica) IP differente, il datagramma deve attraversare un router anche se i due host sono connessi alla stessa LAN.
L'impianto della figura ha tre reti fisiche e due reti logiche. Gli host della rete fisica in alto a sinistra sono
distribuiti nelle due reti logiche, e quindi necessitano di un router per comunicare.
Ricapitolando, una rete IP estesa spesso ripartita in pi sottoreti, cos come una grande organizzazione
ripartita in una struttura gerarchica. Il subnetting semplifica alcuni compiti gestionali/amministrativi:
- Gli host di aree logiche distinte possono dialogare soltanto mediante un router per la connessione; questo aumenta la sicurezza. (Ad esempio gli host di un laboratorio didattico sono separati dagli host degli
uffici amministrativi.)
- La numerazione della rete pu essere affidata a un responsabile locale di una sottorete, invece di coin-

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

103

volgere l'amministratore.

Figura 8-17: Interconnessione di sottoreti


La creazione di sottoreti richiede una attenta progettazione del piano di numerazione. Ad es., se dopo avere
creato un blocco di 64 indirizzi per una sottorete si scoprir che la sottorete deve ospitare 80 host e quindi
non dispone di un numero sufficiente di indirizzi, una rinumerazione richieder la creazione di una nuova
sottorete che potrebbe utilizzare indirizzi che sono gi stati dedicati ad un'altra area logica e che determiner problemi di carattere gestionale. quindi importante:
- Identificare le aree logiche in cui suddividere la rete.
- Contare gli host di ogni area logica.
- Prevedere il tasso di crescita del numero di host, per lasciare un certo margine per il loro sviluppo.
Inoltre, bene ricordare che l'organizzazione di una rete IP in sottoreti comporta dei costi, per realizzare il
piano di numerazione e la presenza di almeno un router.

8.6.4 Indirizzi IP privati e Network Address Translation


Il principale problema causato dal protocollo IP versione 4 la scarsit degli indirizzi disponibili. Per questo motivo, la IANA (Internet Assigned Numbers Authority) ha riservato tre blocchi di indirizzi privati
(indicati nella tabella seguente), che non possono comparire su Internet.
Network Address Range
[10.0.0.0,
10.255.255.255]
(10.0.0.0 /8)
[172.16.0.0, 172.31.255.255]
(172.16.0.0 /12)
[192.168.0.0, 192.168.255.255]
(192.168.0.0 /16)

N. di host
16.777.216
1.048.576
65.536

Ogni host ha un suo indirizzo IP privato che usa per il traffico interno.
Il collegamento con l'esterno gestito dal protocollo NAT (Network Address Translation, RFC 3022).
Quando un pacchetto inviato da un host verso Internet, attraversa un dispositivo (che non un router),
detto NAT box, che sostituisce l'indirizzo IP privato dell'host contenuto nel pacchetto con un indirizzo
pubblico, identico per tutti gli host interni alla rete. Poi, un router inoltra il pacchetto come al solito.
Quando il server remoto invia la risposta allIP pubblico del router, il NAT box deve individuare l'host che
destinatario della risposta (e che condivide lo stesso IP pubblico con tutti gli altri host). Per risolvere questo problema, i progettisti del NAT hanno osservato che un pacchetto IP contiene un header inserito dal
protocollo TCP (o dall'UDP). Nel capitolo sul livello di trasporto, vedremo che questo header contiene una
porta sorgente e una porta destinazione. Ogni porta un intero di 16 bit che indica, rispettivamente, l'inizio
o la fine della connessione. Queste porte forniscono le informazioni di cui il NAT ha bisogno. Quando un
host interno vuole collegarsi mediante TCP con un server esterno, un processo apre una porta sorgente tra
quelle inutilizzate contenute nella propria macchina; il TCP invia alla porta sorgente i pacchetti ricevuti dal
server esterno su questo collegamento. Il processo apre anche una porta destinazione e le invia i pacchetti

104

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

destinati al server esterno. (Due host comunicano all'esterno mediante lo stesso indirizzo IP ma mediante
due differenti indirizzi di porta sorgente.)
Un'analogia nel campo telefonico pu chiarire l'uso delle porte. Immaginiamo un'azienda che possiede un
unico numero di telefono. Quando una persona telefona a questo numero, parla con un centralinista che
chiede il numero di interno desiderato e poi collega il telefonista esterno con il numero interno. Il numero
di telefono analogo all'unico IP pubblico condiviso tra tutti gli host e il numero interno analogo alle
porte.
Usando il campo "porta sorgente", possiamo individuare qual l'host destinatario della risposta. Quando il
NAT box attraversato da un pacchetto proveniente da un host interno, sostituisce l' indirizzo IP originario
con l'indirizzo IP pubblico e memorizza in una tabella di traduzione la coppia "indirizzo IP originario, porta sorgente"; infine, ricalcola i checksum e invia il pacchetto all'ISP.
Ogni server remoto risponde indicando l'IP pubblico destinatario (unico per tutti gli host della rete locale) e
la porta sorgente (che dipende dall'host connesso al server remoto). Quando il NAT box riceve un pacchetto dall'ISP, gli estrae il campo "porta sorgente", mediante la tabella di traduzione individua l'indirizzo IP
originario, e lo inserisce nel pacchetto; infine, ricalcola i checksum e invia il pacchetto al router interno
della rete.
Indirizzo privato Porta privata
10.0.0.5
21023
10.0.0.1
386
10.0.0.6
26600
10.0.0.3
1274

Indirizzo esterno
128.10.19.20
128.10.19.20
207.200.75.12
128.210.1.5

Porta esterna
80
80
21
80

Porta NAT
14003
14010
14012
14007

NETW-2

Figura 8-18: Collegamento


Questo schema risolve il problema del NAT ma criticato dai puristi delle reti. Vediamo alcune obiezioni.
- il NAT viola il principio che ogni indirizzo IP identifica un host.
- il NAT viola il principio che ogni host pu inviare un pacchetto ad un altro host quando vuole. Infatti,
un host interno pu collegarsi ad un server remoto, ma un utente remoto non pu collegarsi ad un server
interno alla rete, perch la tabella del NAT box non pu ricevere un pacchetto da una connessione se
prima non ha inviato un pacchetto sulla stessa connessione. (Pu farlo soltanto mediante tecniche speciali di configurazione.)
- se il NAT box va in crash, perde la tabella e ogni connessione TCP distrutta.
- il NAT viola il principio che i livelli dell'architettura devono essere indipendenti. Ad es., se il TCP (che
nel livello di trasporto) sar aggiornato ad un TCP-2 contenente un header differente, il NAT fallir.
Nonostante questi ed altri difetti, il NAT molto usato in pratica, specialmente per reti piccole, ed l'unica
tecnica che gestisce la penuria di indirizzi IP.
Il NAT ha anche una funzione di sicurezza perch (come detto prima) un utente esterno non pu connettersi verso un server interno. Inoltre il NAT nasconde molte informazione sulla struttura della rete che potrebbero essere usate da eventuali cracker. Spesso il NAT box contiene anche un firewall.

8.6.5 Protocolli di controllo


Assieme a IP, ci sono diversi protocolli per il controllo del funzionamento della rete.

Figura 8-19: Protocolli di controllo in Internet


8.6.5.1 ICMP (Internet Control Message Protocol, RFC 792)
IP non rileva o corregge gli errori, ma si affida al protocollo Internet Control Message Protocol (ICMP)
per la segnalazione degli errori avvenuti durante l'elaborazione di un datagramma e per la generazione di
messaggi amministrativi e di stato. ICMP un protocollo abbinato a IP; usato tra gli host o i router quando i datagrammi non possono essere consegnati, o quando un router non ha sufficiente memoria per conservare ed inoltrare dati del protocollo, eccetera. ICMP comunica all'host se una destinazione irraggiun-

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

105

gibile; inoltre, gestisce o crea un messaggio per segnalare il superamento del tempo massimo di permanenza in rete (TTL) di un datagramma. Infine, ICMP esegue alcune funzioni di modifica per determinare se
l'intestazione IP errata o incomprensibile.
Il protocollo ICMP descritto in RFC 792 ed un protocollo a basso livello che si appoggia direttamente
su IP. I messaggi viaggiano nel campo dati del datagram IP e sono manipolati dal software IP, non dagli
applicativi utente. ICMP imbustato in IP, indirizzato con 1 nel campo protocol.
Il formato del pacchetto ICMP prevede:
- tipo; indica un particolare messaggio ICMP (descritto nell'elenco successivo);
- codice; viene usato in alcuni messaggi ICMP per specificare alcune condizioni;
- checksum, per il controllo di errore; viene calcolato su tutto il pacchetto ICMP;
- la parte rimanente, per trasmettere dei dati legati al particolare messaggio ICMP.
Esistono molti tipi di messaggi, fra i quali:
- destination unreachable: non si trova la destinazione del pacchetto. Viene inviato al mittente del pacchetto;
- time exceeded: il contatore di un pacchetto arrivato a zero. Viene inviato al mittente del pacchetto;
- redirect: il router pensa che il pacchetto gli arrivato per errore, ad esempio perch un host mobile si
spostato. Viene inviato al mittente del pacchetto;
- echo request, reply: si vuole sapere se una destinazione viva e raggiungibile. Si invia request, si aspetta reply;
- timestamp request, reply: come il precedente, con in pi la registrazione dell'istante di arrivo e partenza,
per misurare le prestazioni della rete.
8.6.5.2 ARP (Address Resolution Protocol, RFC 826)
Il protocollo ARP invidua, dall'indirizzo IP dell'host di destinazione, l'indirizzo di livello di data link necessario per inviare il frame che incapsuler il pacchetto destinato all'host di cui all'indirizzo IP.
Si appoggia direttamente sul livello di data link e non su IP. Ad ogni stazione della LAN inviata, in data
link broadcast, una richiesta del tipo: "chi ha l'indirizzo IP uguale a 151.100.17.102 ?". Il messaggio ricevuto da ogni nodo della LAN, ma solo l'host che ha quell'indirizzo IP risponde, inserendo nella risposta il
proprio indirizzo data link.
8.6.5.3 RARP (Reverse Address Resolution Protocol, RFC 903)
Il protocollo RARP risolve il problema inverso, cio individua l'indirizzo IP corrispondente a un determinato indirizzo data link. Esso utile nel caso di stazioni senza disco interno di memoria, che si avviano caricando l'immagine del codice binario del sistema operativo da un server.
Il vantaggio che una sola immagine binaria va bene per tutte le stazioni: ogni stazione personalizza poi
l'immagine binaria con la determinazione del proprio indirizzo IP mediante una richiesta RARP, nella quale
invia il proprio indirizzo data link (che cablato nell'interfaccia di rete).
8.6.5.4 DHCP (Dynamic Host Configuration Protocol, RFC 2131)
Per funzionare correttamente, un host ha bisogno di un certo numero di informazioni:
- Deve ricevere un proprio numero di rete (detto numero IP).
- Deve conoscere il numero IP del "gateway", cio dell'apparecchio che collega la LAN ad Internet.
- Deve conoscere il numero IP del server DNS (cio di un particolare nodo cha traduce da un indirizzo di
rete in forma alfanumerica al numero IP corrispondente).
Queste informazioni possono essere impostate manualmente in modo facile. Tuttavia, in alcuni casi l'impostazione manuale frequente, e quindi poco pratica. (Ad es., quando un computer portatile collegato ad
una rete Wi-fi oppure quando un ISP ha un numero ristretto di indirizzi e deve gestire molti client ma non
contemporaneamente.)
Per impostare dinamicamente queste informazioni, si pu usare il protocollo DHCP, che configura automaticamente i parametri necessari ad un host che deve connettersi ad una rete locale.
Il funzionamento del DHCP concettualmente assai semplice.
Nella LAN vengono installati uno o pi server DHCP; ogni server DHCP dispone di un gruppo di indirizzi IP, ricorda quali tra questi indirizzi sono stati assegnati, "ascolta" le richieste e risponde adeguatamente.
Quando un host attiva il software per la gestione della rete, fa una "richiesta DHCP" mediante un messaggio "broadcast" (che viene ricevuto da ogni nodo). Per, soltanto i server DHCP rispondono al messaggio
DHCP, offrendo un numero IP e le altre informazioni necessarie. Il richiedente, fra tutti i numeri ricevuti,
ne sceglie uno ed avverte il server DHCP prescelto di memorizzare l'indirizzo IP assegnato; se non riceve

106

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

nessun numero, non pu collegarsi alla rete.


DHCP utilizza il protocollo UDP e l'indirizzamento IP broadcast.
L'assegnazione automatica dei parametri di rete deve trattare anche altri dettagli, qui non descritti, come la
scadenza delle offerte, la verifica periodica che un cliente sia ancora presente in rete, ecc.
8.6.5.5 IGMP (Internet Group Management Protocol)
Per operare correttamente, una rete multicast deve "conoscere" gli host (o gruppi di host) interessati a ricevere un determinato flusso. Queste informazioni sono raccolte dai router multicast che colloquiano con gli
host utilizzando un protocollo chiamato IGMP. Questo protocollo prevede delle interrogazioni periodiche
degli host da parte dei router multicast per avere uno stato coerente ed aggiornato su quali host sono interessati alla ricezione di flussi multicast. Fondamentalmente, a ciascun host viene trasmesso con cadenza
costante un pacchetto (Query) per tutta la durata della connessione con il fine di reperire l'informazione
dell'eventuale Host Group di appartenenza di quello specifico host. Un Host Group un insieme di host interessati a ricevere un determinato flusso e, quindi, identificati da un unico indirizzo multicast.
L'host risponde alle query con un secondo pacchetto (Report) che contiene l'informazione degli host group
a cui esso appartiene.
Il protocollo IGMP parte integrante del protocollo IP; quindi, i messaggi IGMP sono incapsulati in datagram IP.
Esistono due versioni di questo protocollo: IGMP v1 ed IGMP v2. Esse sono descritte rispettivamente nei
documenti RFC 1112 e RFC 2236 a cui si rimanda per una descrizione dettagliata.
Poich il protocollo, che prevede delle trasmissioni periodiche di dati verso il cliente, potrebbe influire sullo stato di attivit/inattivit della sessione PPP (Point to Point Protocol) che l'host ha stabilito per il collegamento ad internet indipendentemente dal fatto che egli stia richiedendo o meno di ricevere un flusso
multicast; in particolare, con alcuni router potrebbe non funzionare la procedura di disconnessione automatica per inattivit. Per maggiori informazioni, consultare il manuale del produttore del dispositivo.

8.6.6 Protocolli di routing in Internet


Nei primi anni ottanta, Internet era come una single network (SN) molto estesa e ogni router aveva tabelle
molto estese. Successivamente si abbandon il modello SN per suddividere Internet in un certo numero di
Sistemi Autonomi (AS) costituiti da un insieme di router e LAN sotto la medesima amministrazione, ad
esempio la rete degli enti di ricerca di una nazione (rete GARR in Italia) oppure la rete di una singola azienda.
Il routing complessivo organizzato in modo gerarchico, all'interno di un singolo AS si usa un solo Interior
Gateway Protocol (IGP) mentre per il routing fra gli AS si usa un Exterior Gateway Protocol (EGP).
Ogni Router vede crescere la propria tabella di routing in maniera lineare rispetto al numero di reti da instradare direttamente. Questa definizione, non molto flessibile, stata in seguito sostituita da una pi funzionale che prevede che i router all'interno di ogni AS siano reciprocamente raggiungibili. Le informazioni
di raggiungibilit sono scambiate mediante un protocollo dinamico IGP. Inoltre si prevede che gli AS si
scambino informazioni sulla rispettiva raggiungibilit utilizzando un protocollo opportuno genericamente
designato come EGP.
La definizione classica di un sistema autonomo quella di un insieme di router sotto una singola organizzazione ed amministrazione tecnica, utilizzante un IGP e metriche ad hop per gestire l'instradamento interno all'AS stesso, e un EGP per gestire il routing verso altri AS.
Se un router instrada un messaggio a un altro router appartenente allo stesso AS, ha nella propria tavola di
routing l'informazione di raggiungibilit idonea. Se invece deve raggiungere un router che appartiene ad un
differente AS, il messaggio inviato attraverso una coppia di router particolari detti exterior router, almeno
uno per AS.
Ciascun exterior router conosce le reti raggiungibili utilizzando i link che lo collegano agli altri exterior
router ma non conosce il modo in cui queste reti sono di fatto connesse all'interno dei rispettivi AS (secondo un modello tipicamente gerarchico).

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

107

Figura 8-20: Suddivisione di un AS in aree


8.6.6.1 Interior Gateway Protocol per Internet
Il protocollo originario era il RIP di tipo distance vector, ormai sostituito da OSPF (Open Shortest Path
First, RFC 1247), che di tipo link state. OSPF consente un routing gerarchico all'interno dell'AS, che
viene suddivisa in diverse aree, di cui una larea di backbone ed connessa a tutte le altre aree.
I router di un AS possono essere:
- interni a un area: si occupano del routing all'interno dell'area;
- sul confine di un'area: si occupano del routing fra le diverse aree via backbone;
- nell'area backbone: si occupano del routing sul backbone;
- sul confine dell'AS: si occupano del routing fra gli AS (applicando EGP); possono trovarsi anche sul
confine di un'area.
8.6.6.2 Exterior Gateway Protocol per Internet
Il protocollo EGP, usato dai router sul confine dell'AS e da quelli sulle dorsali ad alta velocit che connettono gli AS, si chiama BGP (Border Gateway Protocol, RFC 1654). fondamentalmente di tipo distance
vector, con due novit:
- possiede la capacit di gestire politiche di instradamento (derivanti, ad esempio, da leggi nazionali) che
vengono configurate manualmente nei router;
- mantiene (e scambia con gli altri router) non solo il costo per raggiungere le altre destinazioni, ma anche il cammino completo. Ci consente di risolvere il problema del count to infinity, perch se una linea
va gi il router pu subito scartare, senza quindi poi distribuirli, tutti i cammini che ci passano.

8.6.7 IP versione 6
Dopo un lungo lavoro, IETF ha approvato il successore di IP versione 4, cio la versione 6 (IPv6, RFC
1883, 1884, 1885, 1886, 1887). I requisiti principali di progetto erano:
- aumentare il numero di indirizzi, ormai quasi esauriti;
- ottenere una maggiore efficienza nei router (tavole pi piccole, routing pi veloce);
- supportare meglio il traffico real time;
- offrire maggiore sicurezza ai dati riservati.
Le principali differenze rispetto alla versione 4 sono:
- indirizzi di 16 byte, il che significa disporre di 216*8 = 2128 indirizzi IP, e cio 7*1023 indirizzi IP per metro quadro su tutto il nostro pianeta.
I primi 48 bit sono assegnati alla rete. I successivi 16 bit identificano la sottorete. Gli ultimi 64 bit (cio,
6 byte) sono ottenuti dall'indirizzo MAC.
Un indirizzo scritto mediante 8 numeri decimali separati dal carattere ':'. Ogni numero rappresenta 16
bit (e quindi varia da 0 a 65535) mediante il formato esadecimale (di 4 cifre; gli 0 iniziali sono facoltativi). La pi lunga successione di numeri zeri consecutivi pu essere abbreviata dalla stringa "::"; le altre
pi parti composte da zeri vanno scritte per esteso.
Es. L'indirizzo IPv6 2031:DB9::1 corrisponde a 2031:0DB9:0000:0000:0000:0000:0000:0001.
- header semplificato: 7 campi contro 13;
- funzioni di autenticazione e privacy, basate su crittografia;
- gestione della qualit di servizio attraverso un campo flow label, che consente di istituire delle pseudoconnessioni con caratteristiche negoziate in anticipo.

108

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

8.7 Realizzazione di piani di indirizzamento classless


Per aiutare a risolvere questo problema, si propone una metodologia per la soluzione di questi esercizi.
Sono dati:
- una determinata topologia della rete;
- il numero di host di ogni rete;
- un intervallo di indirizzi.
La realizzazione di un piano di indirizzamento IP pu essere schematizzata nei seguenti passi:
1. Individuazione delle reti IP a cui assegnare gli indirizzi.
2. Determinazione del numero di indirizzi da assegnare in ogni rete:
- Il numero di indirizzi una potenza di 2.
- Il numero di indirizzi comprende: l'indirizzo di rete; l'indirizzo di broadcasting; l'indirizzo del router
che, per consuetudine, il massimo tra quelli disponibili, cio quello che precede l'IP di broadcast.
- Il numero di indirizzi va scelto anche prevedendo espansioni future.
3. Individuazione se l'intervallo dato di indirizzi consente di realizzare il piano di indirizzamento; in caso negativo, partizione opportuna di qualche sottorete.
4. Assegnazione degli indirizzi di rete ad ogni rete.
5. Assegnazione degli indirizzi agli host/router sulla rete.

8.8 Esercizi svolti


8.8.1 Esempio di subnetting
Un'azienda possiede tre siti distribuiti su una grande area urbana: S1, S2, S3. Ciascun sito aziendale dotato di una LAN e di un router di uscita verso il mondo esterno. Tutti i siti sono interconnessi tra loro con
una rete MAN a maglia completa M. Il protocollo usato il TCP/IP.
Il sito S1 e il sito S2 hanno 50 host. Il sito S3 ha 20 host.
Progettare il piano di numerazione IP della rete mediante una rete di classe C di l'indirizzo 196.200.96.0.
Tutte le reti IP che gestiscono le LAN devono avere lo stesso numero di indirizzi.
Soluzione

Figura 8-21: Esempio di rete


Poich la rete di classe C, il progettista dispone di 8 bit per creare eventuali sottoreti.
Poich tutte le reti avranno lo stesso numero di indirizzi, devono avere i prefissi della stessa lunghezza.
Vediamo la fattibilit della consegna al variare del numero di bit assegnati al prefisso.
[a]
[b]
[c]
[d]
[e]
NBAPr NBDPr NSD NBAH NHDS
24

254

25
26

1
2

2
4

7
6

126
62

27
28
29
30

[a]:=
[b]:=

Note
Incompatibile con la consegna, perch la rete non divisibile
in 3 sottoreti.
Come sopra.

Incompatibile con la consegna, perch ogni sottorete ha meno


di 50 host.
4
16
4
14
Come sopra.
5
32
3
6
Come sopra.
6
64
2
2
Come sopra.
N. di Bit Assegnati al Prefisso di ogni sottorete.
N. di Bit Disponibili per numerare le sottoreti= [A] N. di bit costanti per l'azienda = [A] - 24
3

30

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

109

[c]:= N. di Sottoreti Disponibili = N. di prefissi disponibili = pow(2, [B])


[d]:= N. di Bit disponibili per Assegnare un numero a un Host = 32 [A]
[e]:= N. di Host Disponibili per ogni Sottorete = pow(2, [D]) 1(= indirizzo di rete) 1(= indirizzo di
broadcasting)
L'unica possibile soluzione quindi la seguente:
Sottorete Indirizzo di rete / Maschera di sottorete

Indirizzo di broadcasting

Indirizzo del router

S1
S2
S3

196.200.96.0 /26
196.200.96.64 /26
196.200.96.128 /26

196.200.96.63
196.200.96.127
196.200.96.191

196.200.96.192 /26

196.200.96.255

196.200.96.62
196.200.96.126
196.200.96.190
196.200.96.193
196.200.96.194
196.200.96.195

8.9 Esercizi
8.9.1 Piani di indirizzamento classfull
1. Ipotizzando un indirizzamento classful, indicare se gli indirizzi seguenti sono indirizzi di rete oppure
di host; indicare inoltre la loro classe di appartenenza.
Indirizzo
di rete? Classe
130.192.0.0
192.168.0.0
80.45.0.0
112.0.0.0
198.0.1.0
134.188.1.0
224.0.0.3
241.0.3.1
235.0.0.0

8.9.2 Piani di indirizzamento classless


Identificare ogni (sotto)rete mediante l'insieme dei router che le appartengono. (Es: SR{R1} la sottorete
che ha per router soltanto R1; SR{R1, R2} la sottorete che ha per router R1 e R2.)
Per ogni esercizio, realizzare un piano di indirizzamento classless rispondendo ai punti seguenti.
A. Compilare la seguente tabella e indicare se l'intervallo dato di indirizzi consente di realizzare il piano di
indirizzamento.
Sottorete
N di
N di indirizzi necesN di bit necessari
N di indirizzi assegnati alla sothost
sari
per gli host number
torete
B. In caso di risposta negativa al punto A, partizionare opportunamente qualche sottorete in modo da:
- Realizzare il piano di indirizzamento richiesto.
- Risparmiare indirizzi.
- Assegnare ad ogni sottorete l'indirizzo di rete contiguo agli indirizzi usati dalla sottorete precedente.
- Inserire nella prima partizione di ogni sottorete partizionata il numero massimo di host.
- Collegare tutte le partizioni della stessa sottorete iniziale al medesimo router.
Inserire i risultati individuati dalla partizione nella seguente tabella, in modo da:
- Ordinare le sottoreti in modo decrescente in base al "numero di bit per gli host number".
- Escludere dal "numero di indirizzi disponibili per host futuri" quelli indicati dal testo.
Giustificare la scelta che ha individuato le reti partizionate.
Sottorete
N. di bit per gli
Indirizzo di rete /
Indirizzo di
Numero di indirizzi dihost number
Maschera di sottorete
broadcasting
sponibili per host futuri
2. data una rete che ha l'intervallo di indirizzi 192.168.0.0 / 21 e che composta da:
- 3 router (R1, R2, R3), ognuno collegato agli altri due;
- altri 3 router (R4, R5, R6); R6 collegato agli altri due.
- 34 host appartenenti ad una LAN collegata a R1;
- 253 host appartenenti ad una LAN collegata a R2 e R4;
- 100 host appartenenti ad una LAN collegata a R3 e R5;
- 287 host appartenenti ad una LAN collegata a R6;
- 10 host appartenenti ad una WAN collegata a R1, R2 e R4.

110

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

9 Il livello di trasporto
Il livello di trasporto il cuore di tutta la gerarchia di protocolli. Ha suo compito di fornire un trasporto affidabile ed efficace dall'host mittente a quello destinatario, indipendentemente dalla rete utilizzata. Questo
il livello pi basso tra quelli che gestiscono una conversazione diretta (cio senza nodi intermediari) fra
sorgente e destinazione. Infatti, il software di livello di trasporto presente solo sugli host, e non nei router
della subnet di comunicazione.

9.1 Servizi offerti dal livello di trasporto


I servizi principali offerti ai livelli superiori sono i vari tipi di trasporto delle informazioni da un'entit di
trasporto a un'altra. Naturalmente, questi servizi sono realizzati dal livello di trasporto mediante i servizi ad
esso offerti dal livello di network.
Ci sono due tipi di servizi di livello di trasporto (come nel livello di network):
- servizi affidabili orientati alla connessione (tipici di questo livello);
- servizi datagram (poco usati in questo livello).
Essi hanno caratteristiche, vantaggi e svantaggi simili a quelli corrispondenti del livello di network. C'
questa duplicazione nei due livelli perch l'utente (che accede ai servizi di rete dall'alto) non pu controllare la sottorete di comunicazione, ma vuole comunque un servizio garantito (ad esempio, il trasferimento
corretto di un file); questo, dunque, deve essere fornito da un livello superiore a quello di network. In sostanza, il servizio del livello di trasporto pi affidabile di quello della sottorete di comunicazione.
Le primitive (di definizione dei servizi) offerte dal livello di trasporto sono semplici da usare ed indipendenti dai servizi dei livelli sottostanti. Questo succede perch le applicazioni di rete (che si basano sui servizi di livello di trasporto) sono progettate da molte persone, a differenza dei software basati sui servizi di
livello di network, che sono progettati da poche persone.
L'utente pu specificare la QoS (Quality of Service) desiderata; questa possibilit adatta soprattutto ai
servizi connection oriented, nei quali il richiedente pu specificare queste esigenze:
- Massimo ritardo per l'attivazione della connessione.
- Velocit richiesta di elaborazione.
- Massimo ritardo ammesso per il transito.
- Tasso tollerato d'errore.
- Tipo di protezione da accessi non autorizzati ai dati in transito.
In questo scenario, le peer entity negoziano per accordarsi sulla QoS, anche in funzione della qualit dei
servizi di livello di network di cui dispongono. L'accordo raggiunto vale durante tutta la connessione.
Le informazioni sono divise in blocchi detti segmenti.

9.2 Primitive di definizione del servizio


Esse definiscono il modo di accedere ai servizi del livello. Tipicamente nascondono i dettagli della sottorete di comunicazione, per esserne indipendenti e facili da usare. Ad es., un insieme di primitive :
Primitiva
Tipo di segmento spedito
Note
accept()
connect()
send()
receive()
disconnect()

=
CONN.REQUEST
DATA
=
DISCONN.REQUEST

Attende una connessione


Cerca di stabilire una connessione
Invia dei dati
Attende l'arrivo di un segmento DATA
Chiede di terminare la connessione

Ad esempio, consideriamo i seguenti frammenti di codice di un'applicazione client-server:


Server
Client
...
accept();
send();
receive();
...

...
connect();
receive();
send();
...
disconnect();

Queste due applicazioni possono dialogare senza errori (se, come succede spesso, il servizio utilizzato affidabile), ignorando completamente tutto quanto riguarda la meccanica della comunicazione.

9.3 Protocolli di livello di trasporto


I protocolli di livello di trasporto assomigliano a quelli di livello di data link. Ad es., gestiscono anche:
- il controllo degli errori;

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

111

- il controllo di flusso;
- il riordino dei segmenti.
Analogamente al livello di data link che migliora le caratteristiche dei servizi offerto dal livello fisico, il
livello di trasporto migliora le caratteristiche dei servizi offerti dal livello di network. Il caso pi evidente
il TCP (servizio affidabile orientato alla connessione) sopra lIP (servizio datagram non affidabile).
Ci sono per anche delle importanti differenze. Quella principale che tra le peer entity del livello di data
link c' un unico canale di comunicazione, mentre tra quelle del livello di trasporto c' l'intera sottorete di
comunicazione. Questo implica che, a livello di trasporto, necessario indirizzare esplicitamente il destinatario ed pi complicato stabilire la connessione. La rete infatti memorizza i segmenti; quindi questi possono arrivare anche quando il destinatario non li aspetta pi, e ci, pu creare dei problemi.
Anche il buffering e il controllo di flusso richiedono un approccio differente che nel livello di data link, a
causa del numero molto variabile di connessioni che si possono avere al momento.

9.4 Indirizzamento
Per attivare una connessione si deve ovviamente specificare il destinatario. L'indirizzo di livello di trasporto detto TSAP (Transport Service Access Point) e accede al livello di network mediante un NSAP
(Network Service Access Point) address.

Figura 9-1: I servizi trasporto sono basati sui servizi network


Tipicamente un TSAP ha la forma (NSAP address, informazione supplementare)
In Internet, un TSAP (cio un indirizzo TCP o UDP) ha la forma: (IP address:port number), dove:
- IP address il NSAP address;
- port number l'informazione supplementare.
Questo meccanismo di formazione degli indirizzi dei TSAP ha il vantaggio di determinare implicitamente
l'indirizzo di livello di network da usare durante la connessione. In assenza di tale meccanismo, l'architettura deve mappare l'indirizzo di livello di trasporto nel corrispondente indirizzo di livello di network.

9.5 Il livello di trasporto in Internet


Il livello di trasporto di Internet basato su due protocolli:
- TCP (Transmission Control Protocol) RFC 793, 1122 e 1323;
- UDP (User Data Protocol) RFC 768.
L'UDP un IP con l'aggiunta di un breve header, e fornisce un servizio di trasporto datagram (quindi non
affidabile). Lo vedremo brevemente nel seguito.

9.6 Il protocollo TCP


Il protocollo TCP fornisce un flusso di byte affidabile, da sorgente a destinazione, su una rete non affidabile. Dunque, offre un servizio affidabile e orientato alla connessione, e si occupa di:
- Accettare dati dal livello di applicazione.
- Spezzare i dati in segmenti TCP (di grandezza massima 64 Kbyte, tipicamente circa 1.500 byte).
- Consegnare i segmenti al livello di network, eventualmente ritrasmettendoli.
- ricevere segmenti dal livello di network;
- rimetterli in ordine, eliminando buchi e doppioni;
- consegnare i dati, in ordine, al livello di applicazione.
Le caratteristiche pi importanti sono le seguenti:
- un servizio full-duplex con gestione di ack e regolazione della velocit del flusso.
- Usa un meccanismo di sliding window di tipo go-back-n con timeout; se questo scade, il segmento ritrasmesso. (Le grandezze della finestra scorrevole e i valori degli ack sono espressi in numero di byte,
non in numero di segmenti.)

112

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

- ogni segmento numerato con un numero d'ordine a 32 bit, che usato per il controllo di flusso e per la
gestione degli ack;
- un segmento TCP formato da un header e dai dati da trasportare. Lheader costituito da una parte fissa di 20 byte e da una parte opzionale.

9.6.1 Indirizzamento
I servizi di TCP creano una connessione, a livello di trasporto, identificata da una coppia di punti d'accesso
detti socket. Ogni socket ha un socket number formato dalla coppia: (IP address: Port number)
Il socket number costituisce il TSAP.
I port number hanno 16 bit; quelli minori di 1024 sono i cosiddetti well-known port, e sono riservati per i
servizi standard. Ad esempio:
Port number
Servizio
7
20
21
23
25
80
110

Echo
Ftp (control)
Ftp (data)
Telnet
Smtp
Http
Pop versione 3

Poich le connessioni TCP (che sono full-duplex e point to point) sono identificate dalla coppia di socket
number alle due estremit, un singolo host pu attivare pi connessioni locali sullo stesso socket number.
Le connessioni TCP trasportano un flusso di byte, non di messaggi: i confini fra i messaggi non sono n
definiti n preservati. Ad esempio, se il processo mittente (di livello di applicazione) invia 4 blocchi di 512
byte, quello destinatario pu ricevere indifferentemente 8 "pezzi" da 256 byte, 1 "pezzo" da 2.048 byte,
ecc... Poi, le entit TCP suddividono il flusso (arrivato dal livello di applicazione) in segmenti, trasmettono questi segmenti e li ricombinano in un flusso che consegnato al livello di applicazione di destinazione.
Il livello di applicazione pu chiedere l'invio immediato di dati mediante l'invio di un flag urgente che,
quando arriva dall'altra parte, interrompe l'applicazione e attiva l'esame dei dati urgenti (Es. L'utente, durante una sessione di emulazione di terminale, pu digitare il comando Abort (Ctrl-C) dell'applicazione
corrente.)

9.6.2 L'header del segmento TCP

Figura 9-2: Formato del segmento TCP


I campi dell'header hanno le seguenti funzioni:
Identificano gli end point (locali ai due host) della connessione. Essi, assieme ai corriSource port,
destination port spondenti numeri IP, formano i due TSAP.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

113

Sequence number il numero d'ordine del primo byte contenuto nel campo dati.
il numero d'ordine del prossimo byte aspettato.
Ack. number
TCP
header il numero di parole di 32 bit contenute nell'header. ( necessario perch il campo options di grandezza variabile.)
length
Vale 1 se urgent pointer usato, 0 altrimenti.
URG
Vale 1 se l'ack number valido (cio se si convoglia un ack), 0 altrimenti.
Ack
Dati urgenti (pushed data), da consegnare senza aspettare che il buffer si riempia.
PSH
Richiesta di reset della connessione (ci sono problemi!).
RST
usato nella fase di setup della connessione:
SYN
SYN=1 Ack=0 richiesta connessione; SYN=1 Ack=1 accettata connessione.
usato per rilasciare una connessione.
FIN
Il controllo di flusso di tipo sliding window di grandezza variabile. Window size dice
quanti byte possono essere spediti a partire da quello (compreso) che viene confermato
Window size
con l'ack number. Il valore 0 significa: fermati e attendi l'arrivo di un uguale ack number con un valore di window size diverso da 0.
simile a quello di IP; il calcolo include uno pseudoheader.
Checksum
puntatore ai dati urgenti.
Urgent pointer
fra le pi importanti, negoziabili al setup:
- grandezza massima dei segmenti da spedire;
Options
- uso di selective repeat invece che go-back-n;
- uso di NAK.
Il checksum comprende anche uno pseudoheader, in aperta violazione della gerarchia, perch il livello
TCP in questo calcolo opera su indirizzi IP.

Figura 9-3: Formato dello pseudoheader TCP


Lo pseudoheader non trasmesso, ma precede concettualmente l'header. I suoi campi hanno le seguenti
funzioni:
Source IP address, destination IP address
indirizzi IP (a 32 bit) di sorgente e destinatario.
Protocol
il codice numerico del protocollo TCP (pari a 6).
TCP segment length
il numero di byte del segmento TCP, header compreso.

9.6.3 Attivazione della connessione


Questa operazione, apparentemente semplice, complicata perch un segmento pu essere memorizzata
dalla sottorete di comunicazione e quindi pu arrivare anche dopo la scadenza del timeout associato al
segmento; quindi il mittente reinvia questo segmento che diventa un duplicato ritardatario se il segmento
originario arriva (in ritardo) a destinazione. (Invece, un timeout nel livello di data link indica che il frame
associato perso.)
Quindi, una connessione pu essere attivata ed effettuata due volte. Si immaginino le conseguenze di tale
inconveniente se la connessione avesse richiesto a una banca di versare un miliardo sul conto di una persona di dubbia onest.
Se un duplicato creato dopo l'attivazione della connessione, il problema risolto da un qualunque protocollo a finestra scorrevole. Infatti, durante il setup della connessione, le peer entity si accordano sul numero iniziale di sequenza, e quindi i duplicati sono rifiutati.
Invece, se un duplicato creato durante la fase di attivazione della connessione, il problema risolto da
una soluzione detta three-way handshaking (Tomlinson, 1975). Questa soluzione richiede di determinare
il tempo massimo T di vita dei pacchetti nella rete; se nell'intervallo di tempo T la sottorete di comunicazione non riuscita a recapitare un pacchetto, questo deve essere distrutto. Il protocollo di connessione

114

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

funziona cos:
- il richiedente richiede una connessione mediante un segmento CONN.REQUEST contenente un numero x
che indica l'inizio della sequenza. Il numero x scelto in modo che un contatore da 0 a x impieghi tempo maggiore di 2*T. In questo modo, uneventuale altra richiesta di connessione generata in precedenza
con lo stesso numero di sequenza e gli eventuali ack di risposta ad essa sono gi arrivati a destinazione
o sono stati distrutti dalla sottorete di comunicazione.
- il destinatario invia un segmento contenente un ack contenente la conferma di x e la proposta di un proprio numero y di inizio sequenza, letto anchesso da un contatore che completa il suo conteggio in un
tempo maggiore di 2*T.
- il richiedente invia un segmento contenente i primi dati del dialogo e la conferma di y.
In assenza di errori, il funzionamento il seguente:

Figura 9-4: Attivazione di una connessione TCP


I valori di x e y sono individuati dagli host sulla base dei loro clock di sistema; il valore incrementato di 1
ogni 4 microsecondi.
Se arriva a destinazione un duplicato della richiesta di attivazione, il destinatario risponde come prima ma
il mittente, che sa di non aver richiesto una seconda connessione, lo informa dell'errore.

9.6.4 Rilascio della connessione


Il rilascio della connessione avviene considerando la connessione full-duplex come una coppia di connessioni simplex indipendenti, e si svolge nel seguente modo:
- quando una delle due parti non ha pi nulla da trasmettere, invia un FIN;
- quando il FIN confermato, la connessione in uscita viene rilasciata;
- quando anche l'altra parte completa lo stesso procedimento e rilascia la connessione nell'altra direzione,
la connessione full-duplex termina.
I timer sono impostati al doppio della vita massima di un pacchetto.
Il protocollo di gestione delle connessioni si rappresenta comunemente come una macchina a stati finiti.
Questa una rappresentazione molto usata nel campo dei protocolli, perch pu definire, facilmente e senza ambiguit, protocolli anche molto complessi.

9.6.5 Politica di trasmissione


L'idea la seguente: la grandezza delle finestre scorrevoli non strettamente legata agli ack (come invece
di solito avviene), ma viene continuamente adattata mediante un dialogo fra destinazione e sorgente. In
particolare, quando la destinazione invia un ack di conferma, dice anche quanti ulteriori byte possono essere spediti.
Nell'esempio seguente, le peer entity si sono preventivamente accordate su un buffer di 4K a destinazione.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

115

Figura 9-5: Esempio di controllo del flusso TCP


Anche se riceve win=0, il mittente pu comunque inviare dati urgenti e pu richiedere il reinvio dell'ultimo
ack spedito (per evitare il deadlock se esso si perso).
9.6.5.1 Controllo congestione
Il protocollo TCP assume che il mancato arrivo di un ack sia dovuto a congestione della sottorete invece
che a errori di trasmissione (perch le moderne linee di trasmissione sono molto affidabili). Dunque, TCP
deve risolvere la scarsit di buffer a destinazione e la congestione della sottorete. Ciascuno dei problemi
viene gestito da una specifica finestra mantenuta dal mittente:
- la finestra del buffer del destinatario (quella di cui all'esempio precedente);
- la congestion window, che rappresenta quanto si pu spedire senza causare congestione.
Il mittente si regola sulla pi piccola delle due.
La congestion window viene gestita in questo modo:
- il valore iniziale uguale alla grandezza del massimo segmento usato nella connessione;
- quando un ack risponde prima del timeout, la finestra si raddoppia, fino a un valore threshold, inizialmente pari a 64 Kbyte, e dopo aumenta linearmente di 1 segmento alla volta;
- quando c' un timeout per un segmento, il valore di threshold viene impostato alla met della grandezza
della congestion window e la grandezza della congestion window viene impostata alla grandezza del
massimo segmento usato nella connessione.
Vediamo un esempio con segmenti di grandezza 1 KB, threshold a 32 KB e congestion window a 40 KB:

116

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

Figura 9-6: Esempio di controllo della congestione TCP

9.7 Il protocollo UDP


Il livello di trasporto fornisce anche un protocollo non connesso e non affidabile, utile per inviare dati senza stabilire connessioni (ad esempio per applicazioni client-server).
L'header di un segmento UDP molto semplice:

Figura 9-7: Formato dello header UDP


Il calcolo del checksum pu essere disattivato; tipicamente disattivato nel caso di traffico in tempo reale
(come voce e video) perch in genere pi importante mantenere un elevato tasso di arrivo dei segmenti
invece di evitare i rari errori che possono accadere.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

117

10 Il livello di applicazione
Nell'architettura "Internet Protocol Suite", il livello di applicazione sopra quello di trasporto, e fornisce le
applicazioni usate direttamente dall'utente. Questo livello contiene diverse tipologie di protocolli ed applicazioni:
- protocolli di supporto a tutte le applicazioni, come ad esempio:
- DNS (Domain Name System, RFC 1034 e 1035);
- protocolli di supporto ad applicazioni di tipo standardizzato, come ad esempio:
- SNMP (Simple Network Management Protocol, RFC 1157) per la gestione della rete;
- FTP (File Transfer Protocol, RFC 959) per il trasferimento di file;
- SMTP e POP3 (Simple Mail Transfer Protocol, RFC 821, e Post Office Protocol, RFC 1225) per
la posta elettronica;
- HTTP (HyperText Transfer Protocol, RFC 1945) alla base del World Wide Web (WWW);
- applicazioni scritte in conformit ai protocolli di cui sopra;
- applicazioni proprietarie, basate su regole di private (ad esempio, un'applicazione di tipo client/server
per la gestione remota di un magazzino).
Le applicazioni seguono il paradigma client-server e utilizzano i servizi del TCP. Questi servizi si ottengono creando una connessione con il livello di trasporto, identificata da una coppia di punti d'accesso detti
socket. Ogni socket ha un numero formato dalla coppia: indirizzo IP: numero di porta.
Un numero di porta formato da 16 bit ed usato dallentit TCP per sapere a quale applicazione deve
consegnare i dati che riceve. I numeri minori di 1024 corrispondono alle cosiddette well-known port, riservate per i servizi standard.

10.1 World Wide Web


(Da Wikipedia, l'enciclopedia libera voce World Wide Web)

Sicuramente, l'applicazione pi utilizzata nella rete Internet il World Wide Web (abbreviato in Web o
WWW), che letteralmente significa ragnatela intorno al mondo.
L'idea del World Wide Web nata nel 1989, presso il CERN (Conseil Europen pour la Recherche Nuclaire) di Ginevra, il pi importante laboratorio di fisica europeo. All'epoca, il ricercatore inglese Tim
Barnes-Lee fu impressionato da alcuni colleghi italiani che trasmettevano informazioni da un piano all'altro dell'istituto tramite linea telefonica e tramite video. Il 13 marzo 1989 present al proprio supervisore il
documento Information Management: a Proposal che fu valutato "vago ma interessante"; era basato sul
progetto, dello stesso Berners-Lee e del suo collega Robert Cailliau, di un software per condividere la documentazione scientifica in formato elettronico, indipendentemente dalla piattaforma informatica usata, e
per migliorare la comunicazione, e quindi la cooperazione, tra i ricercatori dell'istituto.
Furono definiti, oltre il software, anche gli standard e i protocolli per scambiare documenti su reti di calcolatori: il linguaggio HTML e il protocollo di rete HTTP, che sono gli elementi alla base del WWW.
La caratteristica principale della rete Web che i nodi della rete sono collegati tramite i cosiddetti link,
formando un enorme ipertesto1 multimediale. Mediante la rete, un utente pu diventare editore con una
spesa esigua e pu raggiungere un pubblico potenzialmente vastissimo distribuito in tutto il mondo.
Il Web un'applicazione distribuita di tipo client-server. Su alcuni nodi della rete Internet sono in esecuzione dei Web server. Ogni Web server gestisce uno o pi siti Web; un sito un insieme di risorse Web
(documenti html, immagini, file multimediali ed altro). Queste risorse sono inviate alle applicazioni client
(browser Web) che le richiedono. I server e i client Web comunicano tra loro mediante il protocollo http. I
browser poi visualizzano sullo schermo le informazione ricevute secondo le indicazioni fornite dal codice
HTML delle pagine.
Le pagine Web, anche appartenenti a siti diversi, sono collegate fra loro (in modo non sequenziale) attraverso i link (o collegamenti), parti di testo o grafica di una pagina web che possono accedere ad un'altra
pagina web, di scaricare particolari contenuti, o di accedere a particolari funzionalit, cliccandoci sopra
con il mouse, e cos creano un ipertesto.
Ogni risorsa Web identificata da un indirizzo chiamato URL (Uniform Resource Locator). La struttura
pi semplice dellURL protocollo://nomeNodo/percorso, dove:

1 Un ipertesto un insieme di documenti collegati mediante parole chiave. Equivale ad una rete i cui nodi sono i documenti. La
propriet principale di un ipertesto che la lettura pu essere non lineare: il lettore pu scegliere il "successivo" documento
dell'ipertesto mediante le parole disponibili come collegamenti. (da Wikipedia, l'enciclopedia libera, voce Ipertesto)

118

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

- protocollo il protocollo da utilizzare per il trasferimento (normalmente http, ma pu essere ad esempio https, ftp, );
- nomeServer lindirizzo IP oppure il nome DNS del server che ospita il sito (es.
www.itiseveripadova.gov.it);
- percorso il nome completo della risorsa Web allinterno del sito (es. guidahtml/guidahtml.html)

Figura 10-1: Una porzione del Web


(This Wikipedia and Wikimedia Commons image is from the user Chris 73 and is freely available at //commons.wikimedia.org/wiki/File:WorldWideWebAroundWikipedia.png under
the creative ommons cc-by-sa 3.0 license).

Non esiste un indice aggiornato in tempo reale dei contenuti del Web; quindi, nel corso degli anni, sono nati ed hanno riscosso notevole successo i motori di ricerca, siti che consentono di cercare contenuti nel
Web in modo automatico mediante parole chiave inserite dall'utente, e i portali Web, siti che consentono
di accedere ad ampie quantit di contenuti selezionati dai redattori del portale mediante l'utilizzo di motori
di ricerca o segnalati dai redattori dei siti Web stessi.
Inizialmente, i protocolli utilizzati nel Web gestivano soltanto pagine HTML statiche, cio file ipertestuali,
preparati precedentemente, visualizzabili e, soprattutto, navigabili utilizzando i browser. Per dare al Web
una maggiore interattivit e dinamicit sono state seguite due strade. Da un lato, sono state aumentate le
funzionalit dei browser attraverso un'evoluzione del linguaggio HTML e la possibilit d'interpretazione di
linguaggi di scripting (come il JavaScript). Dall'altro, si migliorata la qualit di elaborazione dei server
attraverso una nuova generazione di linguaggi integrati con il Web Server (come JSP, PHP, ASP, etc.), trasformando i Web Server in quelli che sono oggi pi propriamente noti come Application Server.
La diffusione di queste soluzioni ha avviato l'uso del Web come piattaforma applicativa che oggi trova la
sua massima espressione nei Web Service, alla cui realizzazione e diffusione sta lavorando l'intera industria
mondiale del software per la gestione d'azienda.

10.2 Hypertext Transfer Protocol


(Da Wikipedia, l'enciclopedia libera voce Hypertext Transfer Protocol)

L'Hypertext Transfer Protocol (HTTP) (protocollo di trasferimento di un ipertesto) il principale protocollo per la trasmissione di informazioni sul Web. Le specifiche del protocollo sono gestite dal World Wide
Web Consortium (W3C).
Un server HTTP generalmente resta in ascolto sulla porta 80 usando il protocollo TCP.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

119

La prima versione, la 0.9, dell'HTTP risale alla fine degli anni '80 e costituiva, insieme con l'HTML e gli
URL, il nucleo base della World Wide Web portata avanti da Tim Berners-Lee al CERN di Ginevra per
condividere le informazioni tra i fisici delle alte energie. La prima versione effettivamente disponibile del
protocollo, la HTTP/1.0, fu implementata dallo stesso Berners-Lee nel 1991 e proposta come RFC 1945
all'ente normatore IETF nel 1996. La versione attuale HTTP/1.1, presentato come RFC 2068 nel 1997 e
successivamente aggiornato nel 1999 come descritto dal RFC 2616.
L'HTTP funziona su un meccanismo richiesta/risposta (client/server): il client richiede ed il server risponde; vi sono quindi due tipi di messaggi HTTP: messaggi di richiesta e messaggi di risposta.
HTTP differisce da altri protocolli del livello di applicazione (come FTP) perch le connessioni sono generalmente chiuse quando una particolare richiesta (o una serie di richieste correlate) stata soddisfatta. Questo comportamento rende il protocollo HTTP ideale per il World Wide Web, in cui le pagine molto spesso
contengono dei link a pagine ospitate da altri server.
HTTP supporta, oltre la richiesta di una pagina, altre operazioni dette metodi.

10.2.1 Messaggio di richiesta


Il messaggio di richiesta composto da tre parti:
- riga di richiesta (request line);
- sezione header (informazioni aggiuntive);
- body (corpo del messaggio).
La riga di richiesta composta da: metodo, URI, versione del protocollo.
URI (Uniform Resource Identifier) indica l'oggetto della richiesta (ad es., la pagina Web che si intende
ottenere, un video, un'immagine).
I metodi di richiesta, per la versione 1.1, sono: GET, POST, HEAD, PUT, DELETE, TRACE, OPTIONS.
- Il metodo GET ritorna il contenuto della risorsa indicata dall'URI (ad es., il contenuto di una pagina
HTML).
- HEAD ritorna i campi dell'header, (ad es., verifica la data di modifica del file). Una richiesta con metodo HEAD non prevede l'uso del body.
- Il metodo POST invia informazioni al server (ad esempio i dati di un modulo). In questo caso l'URI indica che cosa si sta inviando e il body ne indica il contenuto.
Gli header di richiesta pi comuni sono:
- Host: Nome del server a cui si riferisce l'URI. obbligatorio nelle richieste conformi HTTP/1.1 perch
permette l'uso dei virtual host basati sui nomi.
- User-Agent: Identificazione del tipo di client: tipo browser, produttore, versione, ...

10.2.2 Messaggio di risposta


Il messaggio di risposta composto dalle seguenti tre parti:
- Riga di stato (status-line)
- Sezione header
- Body (contenuto della risposta)
I codici di risposta pi comuni sono:
- 200 OK. Il server ha fornito correttamente il contenuto nella sezione body.
- 301 Moved Permanently. La risorsa richiesta non raggiungibile perch stata spostata in modo permanente.
- 302 Found. La risorsa raggiungibile mediante un altro URI indicato nel header Location. Di norma i
browser eseguono la richiesta all'URI indicato in modo automatico senza interazione dell'utente.
- 400 Bad Request. La risorsa richiesta non comprensibile al server.
- 404 Not Found. La risorsa richiesta non stata trovata e non se ne conosce l'ubicazione. Di solito avviene quando l'URI stato indicato in modo incorretto, oppure il contenuto stato rimosso dal server.
- 500 Internal Server Error. Il server non pu rispondere alla richiesta per un suo problema interno.
- 505 HTTP Version Not Supported. La versione di http non supportata.
Gli header della risposta pi comuni sono:
- Server. Indica il tipo e la versione del server. l'equivalente dell'header di richiesta User-Agent
- Content-Type. Indica il tipo di contenuto restituito.

120

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

10.2.3 Esempi di messaggi HTTP


Richiesta:
GET /wiki/Pagina_principale HTTP/1.1
Connection: Keep-Alive
User-Agent: Mozilla/5.0 (compatible; Konqueror/3.2; Linux) (KHTML, like Gecko)
Accept: text/html, image/jpeg, image/png, text/*, image/*, */*
Accept-Encoding: x-gzip, x-deflate, gzip, deflate, identity
Accept-Charset: iso-8859-1, utf-8;q=0.5, *;q=0.5
Accept-Language: en
Host: it.wikipedia.org

La richiesta deve terminare con una riga vuota, cio con due "a capo" consecutivi.
Risposta:
HTTP/1.0 200 OK
Date: Mon, 28 Jun 2004 10:47:31 GMT
Server: Apache/1.3.29 (Unix) PHP/4.3.4
X-Powered-By: PHP/4.3.4
Vary: Accept-Encoding,Cookie
Cache-Control: private, s-maxage=0, max-age=0, must-revalidate
Content-Language: it
Content-Type: text/html; charset=utf-8
Age: 7673
X-Cache: HIT from wikipedia.org
Connection: close

seguita dai dati richiesti.

10.3 Il DNS (Domain Name System)


Poich estremamente scomodo indicare una risorsa (server oppure indirizzo di posta elettronica) mediante un indirizzo IP numerico (nella forma x.y.z.w), stato creato un meccanismo che identifica una risorsa
tramite un nome logico, cio una stringa di caratteri (molto pi comprensibile per un essere umano) come,
ad esempio:
sparc1.unimi.it (riferimento ad un host);
john@cern.ch (indirizzo di posta elettronica).
La corrispondenza fra gli indirizzi IP numerici ed i nomi logici effettuata dal DNS. Esso consiste di:
- un protocollo per il mantenimento e la distribuzione delle informazioni sulle corrispondenze;
- un database distribuito (cio, residente su pi server) che implementa lo schema di denominazione;
- uno schema gerarchico di denominazione, basato sul concetto di dominio (domain), descritto ppi
avanti.
Lo spazio dei nomi DNS gerarchico e diviso in domini, eventualmente suddivisi in sottodomini. Esiste
un insieme di domini di massimo livello (TLD o top-level domain), i pi alti nella gerarchia.
In un host, il nome logico costituito da alcune sottostringhe separate da punti, come ad es.
host.subdomain3.subdomain2.subdomain1.topleveldomain, dove:
- la prima sottostringa (quella pi a sinistra) identifica il nome dell'host;
- ogni altra sottostringa, tranne l'ultima, identifica un sottodominio della sottostringa successiva.

10.3.1 TLD
I TLD sono suddivisi in domini nazionali e domini generici. Nello standard ISO-3166 stato assegnato un
dominio nazionale per ogni Paese del mondo, anche quelli non ancora connessi ad Internet. Esempi di domini nazionali sono:
au
ch
fr
it
jp
uk

Australia
Svizzera
Francia
Italia
Giappone
Inghilterra

I TLD generici attualmente disponibili sono stati definiti in pi riprese e sono usati, almeno in teoria, da
una classe particolare di soggetti. Sono formati da tre o pi lettere ed indicano il loro utilizzo (ad esempio
".com" dovrebbe essere usato esclusivamente da aziende o organizzazioni commerciali). Per molti TLD
generici queste indicazioni non sono vincolanti, ma per altri s; questi ultimi si dicono domini patrocinati.
La responsabilit di un dominio patrocinato (sponsored) affidata ad una organizzazione, di solito quella

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

121

che richiede l'attivazione del dominio, che limita la registrazioni ai propri affiliati (come il .aero gestito
dalla Socit Internationale de Tlcommunications Aronautiques) oppure a siti che possiedono determinate caratteristiche (come il .cat per i siti in lingua catalana).
La registrazione di altri gTLD (.gov, .edu, .mil e .int) riservata a particolari categorie di enti statunitensi.
.aereo
.arpa
.biz
.cat
.com
.coop
.edu
.eu
.gov
.info
.int
.jobs
.mil
.mobi
.museum
.name
.net
.org
.pro
.travel

dominio riservato ai membri del trasporto aereo


Arpanet
dominio per gli affari (Business)
comunit culturale catalana
dominio per uso commerciale generico
dominio per le Cooperative
dominio Educativo (USA)
dominio per uso generico (Paesi UE)
dominio Governativo (USA)
dominio per uso informativo generico
Internazionale (Paesi NATO)
risorse umane
Militare (USA)
siti accessibili alla telefonia mobile
dominio per i Musei
dominio per le persone fisiche
fornitore accesso alle reti commerciali (Network)
dominio per Organizzazioni senza scopo di lucro
dominio per i Professionisti
turismo

La gestione dei domini di primo livello assegnata ad un organismo di nome ICANN (Internet Corporation for Assigned Names and Numbers); ogni dominio responsabile della creazione dei suoi sottodomini,
che devono essere registrati presso una apposita autorit delegata da ICANN.
L'estensione di un dominio del tutto indipendente da quella delle reti e sottoreti IP.

10.3.2 Funzionamento
Ogni dominio deve fornire il servizio DNS di propria competenza, cio deve rispondere a interrogazioni
riguardanti ogni host contenuto nel dominio stesso. Il funzionamento del DNS, in breve, il seguente:
- Un'applicazione, per collegarsi ad una risorsa di cui conosce il nome logico (ad es. sparc1.unimi.it), invia una richiesta al DNS server locale, mediante un'apposita procedura di libreria detta resolver.
- Il DNS server locale, se conosce la risposta, la invia direttamente al richiedente; altrimenti, interroga a
sua volta un DNS server di livello superiore, e cos via. Quando finalmente arriva la risposta, il DNS
server locale la passa al richiedente.
- Quando l'applicazione riceve la risposta (costituita dal numero IP della risorsa richiesta), crea una connessione TCP con la (o spedisce segmenti UDP alla) destinazione, usando l'indirizzo IP appena ricevuto.
Ci si ottiene mediante un processo (o pi) detto name server, che pu gestire le seguenti informazioni:
- informazioni di corrispondenza fra nomi simbolici e indirizzi IP. Per ogni host del dominio c' un resource record che contiene tali informazioni ed detto authoritative record, perch gestito dal DNS
server responsabile del dominio (che supposto fornire sempre informazioni corrette e aggiornate).
- l'identit dei name server responsabili dei sottodomini inclusi nel dominio, per poter inviare loro le richieste che gli pervengono dall'alto della gerarchia;
- l'identit del name server responsabile del dominio di livello immediatamente superiore, per potergli inviare le richieste che gli pervengono dal basso della gerarchia.
Una richiesta che arriva a un name server pu dunque viaggiare verso l'alto nella gerarchia oppure (se perviene a un top-level domain server) verso il basso, a seconda dei casi. Quando una risposta ritorna indietro,
essa viene tenuta dal server in una sua cache per un certo periodo; qui costituisce un nuovo record, detto
cached record perch contiene della informazione che potrebbe anche divenire, col passare del tempo, obsoleta e non pi corretta.
I server DNS sono in ascolto sulla porta 53.

10.4 Servizi di directory


(Da Wikipedia, l'enciclopedia libera, voci Servizi di Directory e LDAP)

Un Servizio di directory un programma o un insieme di programmi che organizza e memorizza informazioni su reti di computer e su risorse condivise disponibili tramite la rete. Inoltre, il servizio di directory
controlla gli accessi sull'uso delle risorse condivise per favorire il lavoro dell'amministratore di sistema. Un

122

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

servizio di directory fornisce uno strato di astrazione tra le risorse e gli utenti.
Si parla direttamente di directory riferendosi alla struttura di dati ordinata dove viene immagazzinata
dell'informazione. In particolare, nei sistemi distribuiti le directory sono usate per archiviare le informazioni relative agli account utente e quindi per consentire i servizi di autenticazione.

10.4.1 Directory client e server


Laccesso alle directory di solito utilizza il modello di comunicazione client/server. Unapplicazione che
vuole leggere o scrivere informazioni in una directory non vi accede direttamente, ma invoca una funzione
che invia un messaggio ad un altro processo. Questo secondo processo accede alle informazioni della
directory per conto dellapplicazione che ne ha fatto richiesta via TCP/IP. La porta TCP/IP di default 636
per le comunicazioni sicure crittografate e 389 per le comunicazioni non crittografate.
Il risultato delloperazione di lettura o di scrittura restituito quindi allapplicazione.
Processo di applicazione <--> Messaggio <--> Processo 2 <--> Informazioni

Una richiesta di solito fatta dal directory client, e il processo che cerca linformazione nella directory
chiamato directory server. In generale, i server forniscono un servizio specifico ai client. Qualche volta un
server pu diventare un client di altri server, per ottenere le informazioni necessarie per soddisfare la richiesta. Client e server possono risiedere o meno sulla stessa macchina. Un server pu soddisfare diversi
client; pi server possono eseguire richieste in parallelo. Si possono essere anche code di processi quando i
server sono occupati mentre stanno eseguendo unaltra richiesta.
Il formato e il contenuto dei messaggi scambiati tra client e server devono rispettare un protocollo concordato.

10.4.2 Tipi di directory


Una directory pu essere locale o globale, a seconda se si tratti di un'area limitata oppure estesa
alluniverso di interesse, che pu essere unazienda, una nazione o tutto il mondo. I client che accedono ad
una directory possono essere locali o remoti. I client locali sono nello stesso edificio, o comunque possono
accedere alla stessa LAN. I client remoti possono invece trovarsi in qualsiasi punto del pianeta.
Una directory inoltre pu essere centralizzata o distribuita, a seconda che sia gestita da un solo server oppure da pi server sparsi nella rete.
Nelle directory distribuite, le informazioni possono essere partizionate (cio ogni server gestisce un'informazione non replicabile) o replicate (cio la stessa informazione accessibile da diversi server).

10.5 La posta elettronica


(Da Wikipedia, l'enciclopedia libera, voci e-mail, SMTP, POP3, IMAP)

La e-mail o email ("electronic mail" o "posta elettronica") un servizio Internet usato da un utente per inviare o ricevere dei messaggi. nata nel 1972, quando Ray Tomlinson install su ARPANET un sistema in
grado di scambiare messaggi fra le varie universit; il suo funzionamento fu definito da Jon Postel.

Figura 10-2:Schema di funzionamento del servizio mail

10.5.1 Modello di servizio


Lo scopo del servizio di e-mail il trasferimento di messaggi da un utente ad un altro.
Ciascun utente possiede o pi caselle e-mail, su cui pu ricevere messaggi, che vengono conservati per lui.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

123

Quando l'utente lo desidera, pu consultare il contenuto della sua casella, organizzarlo, inviare messaggi a
uno o pi utenti.
L'accesso alla casella di posta elettronica normalmente controllato da una password o da altre forme di
autenticazione. La trasmissione di un messaggio asincrona, cio non richiede che mittente e destinatario
siano contemporaneamente attivi o collegati.
La consegna al destinatario dei messaggi inviati non garantita. Se un server SMTP non consegna un messaggio che ha ricevuto, tenta normalmente di inviare una notifica al mittente per avvisarlo della mancata
consegna, ma anche questa notifica a sua volta un messaggio di e-mail (generato automaticamente dal
server), e quindi la sua consegna non garantita.
Il mittente pu anche richiedere una conferma di consegna o di lettura dei messaggi inviati, ma il destinatario pu decidere se vuole inviare o meno tale conferma. Il significato della conferma di lettura pu essere
ambiguo, in quanto aver visualizzato un messaggio per pochi secondi in un client non significa averlo letto,
compreso o averne condiviso il contenuto.

10.5.2 Indirizzi e-mail


A ciascuna casella sono associati uno o pi indirizzi di e-mail. Questi hanno la forma nomeutente@dominio, dove nomeutente un nome, scelto dall'utente o dall'amministratore del server, che identifica in maniera univoca un utente (o un gruppo di utenti), e dominio un nome DNS.
L'indirizzo e-mail pu contenere qualsiasi carattere alfabetico (escluso quelli accentati) e numerico e alcuni
simboli come l'underscore (_) ed il punto (.). Un utente pu usare un servizio di reindirizzamento per inoltrare automaticamente ogni messaggio arrivato su una casella e-mail verso un'altra di sua scelta; cos, l'utente pu ricevere la posta arrivata in ogni sua casella e-mail consultando soltanto una di queste.

10.5.3 Architettura del sistema di e-mail


I componenti fondamentali del sistema di e-mail sono:
- i client (detti in gergo MUA, Mail User Agent), utilizzati per accedere ad una casella di posta elettronica
e per inviare messaggi
- i server, che svolgono due funzioni fondamentali:
- immagazzinare i messaggi per uno o pi utenti (detti in gergo MS, Message Store)
- ricevere i messaggi in arrivo ed in partenza e smistarli (detti in gergo MTA, Mail Transfer Agent).
I protocolli tipicamente impiegati per lo scambio di email sono: l'SMTP, usato per l'invio, la ricezione e l'inoltro dei messaggi tra server; POP e IMAP, usati per la ricezione e consultazione dei messaggi da parte
degli utenti.
I client devono configurare i server da contattare, e sono quindi adatti principalmente ai computer usati regolarmente. anche molto diffusa la possibilit di consultare una casella e-mail attraverso il web.

10.5.4 Messaggi e-mail


Un messaggio di e-mail costituito da:
- una busta (envelope)
- una sezione di intestazioni (header)
- un corpo del messaggio (body)
La busta l'insieme delle informazioni a corredo del messaggio che vengono scambiate tra server attraverso il protocollo SMTP, principalmente gli indirizzi e-mail del mittente e dei destinatari. Queste informazioni normalmente corrispondono a quelle che possibile ritrovare nelle intestazioni, ma possono esserci delle differenze.
Le intestazioni sono informazioni di servizio che controllano l'invio del messaggio, o tracciano le manipolazioni subite. Ogni intestazione composta da una riga di testo, con un nome seguito dal carattere ':' e dal
corrispondente valore. Alcune intestazioni sono definite direttamente dall'utente; tra le principali, ci sono:
- Subject: (Oggetto:) dovrebbe contenere una breve descrizione dell'oggetto del messaggio. considerata
buona educazione utilizzare questo campo per aiutare il destinatario a capire il contenuto del messaggio.
- From: (Da:) contiene l'indirizzo e-mail del mittente.
- To: (A:) contiene gli indirizzi e-mail dei destinatari principali.
- Cc: contiene gli indirizzi e-mail dei destinatari in copia conoscenza (Carbon Copy).
- Bcc: (Ccn:) contiene gli indirizzi e-mail dei destinatari in "Copia conoscenza nascosta" (Blind Carbon
Copy). Questa in realt una pseudo-intestazione, in quanto visibile solo al mittente del messaggio, e
per definizione non riportata nei messaggi inviati ai destinatari.

124

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

- Reply-to: (Rispondi a:) contiene l'indirizzo e-mail al quale devono essere inviate le eventuali risposte al
messaggio, se diverso da quello del mittente.
- Date: (Data:) contiene la data e l'ora in cui il messaggio stato scritto.
Gli indirizzi dei destinatari principali (To: o A:) e di quelli in copia conoscenza (Cc:) sono ugualmente visibili a tutti i destinatari.
La scelta di mettere un destinatario in uno dei due campi dipende dal ruolo del destinatario riguardo all'argomento del messaggio. Ad esempio, se un messaggio richiede di eseguire un compito, si intende che la
richiesta fatta al destinatario principale (To: o A:), mentre i destinatari in copia conoscenza (Cc:) vengono
informati che questa richiesta stata fatta, ma non sono incaricati dell'esecuzione del compito.
Gli indirizzi dei destinatari in copia conoscenza nascosta (Bcc: o Ccn:) non appaiono nel messaggio consegnato ai destinatari. Ci consente l'invio di un messaggio a un terzo senza che i destinatari "ufficiali" ne
siano a conoscenza. "Mettere in CC" o "in CCN" una locuzione diffusa negli ambienti lavorativi e nei
gruppi sociali organizzati. Quando l'e-mail diffonde un messaggio a persone che non si conoscono tra loro
(ad es., comunicati pubblici, annunci, messaggi spiritosi pi o meno utili), preferibile nascondere a ciascun destinatario gli altri destinatari e i loro indirizzi, per ragioni di privacy e di sicurezza. In particolare,
se si invia un messaggio ad un gran numero di persone che non si conoscono tra di loro, costoro probabilmente non saranno d'accordo che il loro indirizzo sia reso noto ad estranei. Inoltre, molti worm si propagano per e-mail, e utilizzano gli indirizzi presenti nei messaggi per diffondersi; l'invio di un messaggio con
gli indirizzi dei destinatari in chiaro espone ogni destinatario ad un ulteriore rischio di contagio. Per ovviare a questo problema, consigliabile utilizzare in questi casi il Bcc: (o Ccn:), oppure una mailing list.
Altre intestazioni vengono aggiunte dai programmi che manipolano il messaggio. La pi importante Received:, che viene aggiunta da ciascun server SMTP che manipola il messaggio, indicando da quale indirizzo IP il messaggio stato ricevuto, a che ora, e altre informazioni utili a tracciarne il percorso.
Altre intestazioni segnalano ad esempio che il messaggio stato valutato da qualche tipo di filtro automatico antivirus o antispam, e la valutazione espressa dal filtro.
Il Message-ID: (Identificativo del messaggio) un codice costruito dal client su cui il messaggio stato
composto, che dovrebbe permettere di identificare univocamente un messaggio.
Il corpo del messaggio composto dal contenuto informativo che il mittente invia ai destinatari. Esso era
originalmente composto di testo semplice; ci causava problemi se i messaggi avevano caratteri accentati
(ad es., Francese e Italiano), caratteri di alfabeti non latini (ad es., Russo ed Ebreo), caratteri di alfabeti non
impostati su fonemi (ad es., Cinese e Giapponese) o erano privi di caratteri (ad es., file audio, immagini,
documenti binari). Questa problema stato risolto dalla codifica MIME (Multipurpose Internet Mail Extensions) che gestisce, oltre il formato gi esistente, anche il trasferimento di caratteri non-Ascii.
In seguito stata introdotta la possibilit di inserire dei file in un messaggio e-mail (allegati), ad esempio
per inviare immagini o documenti. Gli allegati vengono utilizzati anche per comporre un messaggio e-mail
in formato HTML, generalmente per ottenere una pi gradevole visualizzazione dello stesso. Questa pratica non molto apprezzata dai puristi di Internet, in quanto aumenta notevolmente la grandezza dei messaggi e, inoltre, non tutti i client e-mail sono in grado di interpretare l'HTML.

10.5.5 Funzionamento dei Client


Un client di posta elettronica un programma che agisce sul contenuto di una o pi caselle di posta. La
stragrande maggioranza dei client presenta all'incirca le stesse caratteristiche principali, differenziandosi
soltanto per presentazione grafica e per funzionalit avanzate.
Il client di posta elettronica tradizionalmente un programma eseguito sul calcolatore utilizzato dall'utente,
ma molto diffusa anche la possibilit di utilizzare le stesse funzionalit sotto forma di applicazione web
(webmail). Questo programma visualizza la lista dei messaggi presenti nella casella di posta e, per ogni
messaggio, alcuni header, come il Subject, la data, il mittente, e talvolta le prime righe di testo del corpo
del messaggio. Le operazioni possibili su un messaggio sono tipicamente:
- Lettura del corpo del messaggio
- Reply (Rispondi): Risposta al messaggio, cio la composizione di un nuovo messaggio destinato al mittente e che spesso comprende il testo del messaggio ricevuto (quoting). Il subject del messaggio di risposta lo stesso subject del messaggio iniziale, preceduto dalla sigla "Re:" ("R:" su alcuni client) per
indicare che una risposta.
- Reply to All (Rispondi a tutti): Risposta al messaggio indirizzata al mittente e a tutti gli altri destinatari
del messagio ricevuto.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

125

- Forward (Inoltra): Invio, ad altri indirizzi, di una e-mail ricevuta.


- Cancella: Eliminazione del messaggio.
Esiste inoltre naturalmente la funzione per comporre e inviare un nuovo messaggio.

10.5.6 Protocollo SMTP


Simple Mail Transfer Protocol (SMTP) il protocollo standard per la trasmissione via internet di e-mail.
In italiano si pu tradurre come "Protocollo elementare di trasferimento postale".
un protocollo relativamente semplice, testuale, nel quale sono specificati uno o pi destinatari di un messaggio; verificata la loro esistenza, il messaggio trasferito.
Mediante un client telnet, abbastanza facile verificare come funziona un server SMTP. Il protocollo
SMTP utilizza TCP come protocollo di livello transport. Il client apre una sessione TCP verso il server sulla porta 25. Il server SMTP associato a un dato nome di dominio (DNS) mediante un Resource Record.
Poich SMTP un protocollo testuale basato sulla codifica ASCII (in particolare ASCII NVT), proibito
trasmettere direttamente un testo composto con un diverso set di caratteri o un file binario. Il MIME permette di estendere il formato dei messaggi mantenendo la compatibilit col software esistente. Per esempio, attualmente molti server SMTP supportano l'estensione 8BITMIME, che pu trasferire un testo contenente caratteri accentati (non-ASCII) senza transcodifica. Altri limiti di SMTP, come la lunghezza massima
di una riga, proibiscono la spedizione di file binari senza transcodifica.
Quella che segue una transazione SMTP valida. Le righe inviate dal client sono precedute da "C:", mentre quelle inviate dal server da "S:". Su molti computer si pu stabilire una connessione mediante il seguente comando telnet, che apre una connessione a www.example.com sulla porta 25 di TCP.
telnet www.example.com 25
S:
C:
S:
C:
S:
C:
S:
C:
S:
C:
C:
C:
C:
C:
C:
C:
S:
C:
S:

220 www.example.com ESMTP Postfix


HELO mydomain.com
250 Hello mydomain.com, pleased to meet you
MAIL FROM: <sender@mydomain.com>
250 sender@mydomain.com ... Sender ok
RCPT TO: <friend@example.com>
250 friend@example.com ... Recipient Ok
DATA
354 End data with "." on a line by itself
Subject: messaggio di prova
From: sender@mydomain.com
To: friend@example.com
Ciao,
questa una prova.
.
250 Ok: queued as 12345
QUIT
221 Bye

Anche se non obbligatorio, quasi ogni client richiede sono le estensioni del protocollo SMTP supportate
dal server, usando il saluto EHLO. Questi client usano HELO soltanto se il server non risponde ad EHLO.

10.5.7 Protocolli POP3 e IMAP


Post Office Protocol (POP) un protocollo che permette, mediante autenticazione, l'accesso ad un
account di posta elettronica presente su di un host per scaricare le e-mail dell'account. Il POP (nella versione 3) attende sulla porta 110 dell'host (di default, ma pu anche essere diversa) una connessione TCP da
parte di un client. Un messaggio di posta elettronica, per essere letto, deve essere scaricato sul computer
(questa una notevole differenza rispetto all'IMAP), anche se possibile lasciarne una copia sull'host. Il
protocollo POP3 non prevede cifratura, quindi le password usate per l'autenticazione fra server e client
passano in chiaro. Questo problema risolto dall'estensione APOP che utilizza MD5.
Dopo aver stabilito una connessione tra il mittente (il client) e il destinatario (il server), c l'apertura di
una sessione POP3. Nella successiva conversazione, qualsiasi cosa inviata dal client preceduta con "C:",
e qualsiasi cosa inviata dal server preceduta da "S:". Su molti computer si pu stabilire una connessione
mediante il seguente comando telnet, che apre un collegamento POP3 verso l'host www.example.com.
telnet www.example.com 110
S:+OK <22593.1129980067@example.com>

126

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

C:USER pippo
S:+OK
C:PASS pluto
S:+OK
C:LIST
S:+OK
1 817
2 124
.
C:RETR 1
S:+OK
Return-Path: <pippo@example.org>
Delivered-To: pippo@example.org
Date: Sat, 22 Oct 2005 13:24:54 +0200
From: Mario Rossi <mario@rossi.org>
Subject: xxxx
Content-Type: text/plain; charset=ISO-8859-1
testo messaggio
.
C:DELE 1
S:+OK
C:QUIT
S:+OK

L'Internet Message Access Protocol (IMAP) un protocollo di comunicazione per la ricezione di e-mail. Il
protocollo stato inventato da Mark Crispin nel 1986 come alternativa pi moderna all'utilizzatissimo
POP. La porta predefinita del demone IMAP sull'host la 143. Se si utilizza una connessione sicura tramite
SSL, la porta la 993.
10.5.7.1 Differenze tra IMAP e POP
Il protocollo POP 3 scarica la posta direttamente sul PC e la cancella dal server. Il protocollo IMAP pu
conservare sul server una copia delle e-mail (per scaricarle successivamente su altri computer). Ecco un elenco delle caratteristiche dell'IMAP ma non del POP:
- Accesso alla posta sia online che off-line: mediante il POP3, il client si connette per scaricare i nuovi
messaggi e poi si disconnette; mediante l'IMAP, il client rimane connesso e risponde alle richieste fatte
dall'utente mediante l'interfaccia; questo permette di risparmiare tempo se ci sono messaggi lunghi.
- Pi utenti possono utilizzare la stessa casella di posta: il protocollo POP consente ad un solo client la
connessione ad una determinata mailbox (casella di posta), quella che gli stata assegnata. Al contrario,
l'IMAP4 permette connessioni simultanee alla stessa mailbox, fornendo meccanismi per controllare i
cambiamenti apportati da ogni utente.
- Supporto all'accesso a singole parti MIME di un messaggio strutturato ad albero, dove ogni ramo un
contenuto diverso (intestazioni, allegati o parti di esso, messaggio in un dato formato, eccetera): il protocollo IMAP4 permette di scaricare una singola parte MIME o addirittura sezioni delle parti, per avere
un'anteprima del messaggio o per scaricare una mail senza i file allegati.
- Supporto per attributi dei messaggi tenuti dal server: attraverso l'uso di attributi, tenuti sul server e definiti nel protocollo IMAP4, ogni client pu tenere traccia di ogni messaggio, per esempio per sapere se
gi stato letto o se ha avuto una risposta.
- Accesso a molteplici caselle di posta sul server: mediante l'IMAP4, un utente pu creare, modificare o
cancellare mailbox (di solito associate a cartelle) sul server, e pu condividere cartelle tra utenti diversi.
- Possibilit di fare ricerche sul server: l'IMAP4 permette al client di ricevere soltanto i che messaggi
soddisfano un certo criterio, per fare, per esempio, delle ricerche sui messaggi senza doverli scaricare
tutti.
- Supporto di un meccanismo per la definizione di estensioni: le specifiche dell'IMAP descrivono come
un server pu far sapere agli utenti se ha delle funzionalit extra.

10.5.8 Abusi
L'SMTP non riesce ad impedire abusi del sistema di posta elettronica; in particolare, non possiede strumenti semplici ed efficaci per controllare quali messaggi vengono consegnati nella casella di un utente (autorizzazione), ed inoltre non gestisce l'autenticazione del mittente riportato da un messaggio. Questo causa
diversi tipi di abusi.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

127

Il principale utilizzo improprio dell'e-mail lo spam, cio l'invio massiccio a molti utenti di messaggi indesiderati, in genere di natura pubblicitaria-commerciale. Secondo alcune fonti, l'incidenza di questi messaggi raggiungerebbe i due terzi del traffico totale di posta elettronica.
Un altro fenomeno negativo costituito dalle catene di sant'Antonio, messaggi che contengono informazioni allarmanti, promesse di facili guadagni o vere e proprie bufale, ed invitano ad inoltrare il messaggio
ai propri conoscenti, finendo talvolta per circolare per mesi o per anni.
inoltre possibile falsificare il nome e l'indirizzo del mittente visualizzati nel programma client del destinatario, inducendo l'utente a ritenere attendibile un messaggio del tutto falso. Questa vulnerabilit usata
per costruire vere e proprie truffe o scherzi che si basano sulla fiducia che la maggior parte degli utenti erroneamente ripone nel "mittente" di un messaggio di posta elettronica. Anche i worm che si replicano per
posta elettronica usano questo meccanismo, per indurre gli utenti ad interessarsi o a fidarsi di un messaggio, in modo che lo aprano ed eventualmente installino allegati infetti.
Il Garante della privacy afferma che la posta elettronica deve avere la stessa tutela di quella ordinaria. Anche se la rete consente una vasta conoscibilit degli indirizzi di posta elettronica, considerato illegale l'uso di questi dati personali per scopi diversi da quelli per cui sono presenti on-line (compreso l'invio di messaggi a scopo commerciale, pubblicitario...). quindi obbligatorio, per non violare la privacy degli utenti,
accertarsi del loro consenso prima di utilizzare il loro indirizzo e-mail per qualsiasi scopo.
10.5.8.1 E-mail privacy sul posto di lavoro
Il problema riguarda da una parte il fatto che il datore di lavoro desidera che gli strumenti disponibili
(internet, e-mail, ..) vengano usati solo per scopi prettamente lavorativi, e dall'altro la legittima tutela dei
dati personali del dipendente. L'autorit Garante ha stabilito che il datore di lavoro pu controllare le email dei dipendenti esclusivamente in rari casi. Sono state definite le norme per l'utilizzo della posta elettronica sul luogo di lavoro; infatti spetta al datore di lavoro il compito di fissare le regole consentite all'interno dell'azienda per l'uso di Internet e delle e-mail e soprattutto per effettuare i controlli. Quindi, la soluzione pi efficace l'adozione da parte dell'azienda di un regolamento interno, coinvolgendo anche i sindacati.
Si verificano problemi anche quando un dipendente assente e il datore di lavoro o un superiore presume
che al suo indirizzo siano stati inviati messaggi di lavoro a cui necessario accedere per il funzionamento
dell'azienda. Queste situazioni possono essere prevenute creando caselle di posta associate a particolari uffici o persone oltre a quelle individuali, e usando queste caselle per le attivit lavorative che possono essere
gestite da pi persone.
10.5.8.2 Posta elettronica certificata
La Posta Elettronica Certificata un servizio di posta elettronica che garantisce la ricezione del messaggio (da parte del destinatario) e l'integrit del messaggio ricevuto. In Italia l'invio di una e-mail certificata
(nelle forme stabilite dalla normativa vigente) equiparato a tutti gli effetti di legge alla spedizione di una
raccomandata cartacea con avviso di ricevimento. Ai fini della legge, il messaggio si considera consegnato
al destinatario quando accessibile nella sua casella di posta.
- Quando il gestore di posta elettronica certificata gestisce l'email del mittente, gli invia una ricevuta di
accettazione, che certifica l'avvenuto invio.
- Quando il gestore deposita il messaggio nella casella del destinatario, invia al mittente una ricevuta di
consegna che certifica l'avvenuta ricezione.
La ricevuta di accettazione e quella di consegna sono in formato elettronico, e ricevono la firma digitale
del gestore.
Se il gestore di posta elettronica certificata del mittente diverso dal gestore del destinatario, c un passaggio ulteriore: il gestore del destinatario, nel momento in cui riceve la mail dal gestore del mittente, emette una ricevuta di presa a carico, in formato elettronico, a cui appone la propria firma digitale. Se il gestore di posta elettronica non pu depositare la mail nella casella del destinatario, invia una ricevuta di
mancata consegna. I gestori di posta certificata devono rifiutare le mail contenenti virus.
I gestori di posta elettronica certificata sono soggetti privati che devono possedere alcuni requisiti stabiliti
dalla legge (devono, per esempio, possedere gli stessi requisiti di onorabilit previsti per l'attivit bancaria,
e avere un capitale sociale non inferiore a 1 milione di euro), e possono operare solo se sono autorizzati dal
CNIPA, il Centro Nazionale per l'Informatica nella Pubblica Amministrazione.
Le pubbliche amministrazioni possono essere gestori di posta elettronica certificata, ma in tal caso gli indirizzi rilasciati hanno validit solo limitatamente agli scambi di mail fra il titolare dell'indirizzo e l'Amministrazione che lo ha rilasciato.

128

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

11 Sicurezza nelle reti


La sicurezza informatica quella branca dell'informatica che si occupa della salvaguardia dei sistemi informatici da potenziali rischi e/o violazioni dei dati.
(Da Wikipedia, l'enciclopedia libera, voce Sicurezza informatica).

Come vedremo, il tema della sicurezza informatica (e in particolare nelle reti) un problema estremamente complesso, che coinvolge diversi tipi di aspetti e che quindi presenta soluzioni diverse e articolate
su diversi livelli.
Sotto l'aspetto fisico, gli elaboratori che svolgono funzioni delicate (server, router, proxy, firewall, ..) devono essere posti in luoghi sicuri, ai quali possono accedere solo i tecnici autorizzati.
Sotto l'aspetto sistemistico, si devono prevedere meccanismi di accesso basati su autenticazione ed accounting, e meccanismi di monitoraggio dei file di log, in cui vengono registrate le operazioni effettuate dagli
utenti e le eventuali anomalie.
Le problematiche di sicurezza di una rete sono distinte da quelle legate alla sicurezza dei sistemi informativi o dei singoli calcolatori e richiedono strumenti appositi. Per garantire la sicurezza globale delle informazioni necessario che gli strumenti per la garanzia della sicurezza nei calcolatori, nei sistemi operativi e
nelle reti possano interagire in modo sinergico per aumentare la garanzia il pi possibile.
Gli accorgimenti tecnologici usati per non sono sufficienti per raggiungere gli obiettivi, perch lelemento
umano risulta essere determinante. Ad esempio, inutile impostare un accesso basato su autenticazione
degli utenti se questi utilizzano password facili da indovinare o addirittura le espongono presso la propria
postazione di lavoro.
Inoltre, non esiste la sicurezza assoluta, ma soltanto un livello di sicurezza che si intende raggiungere
(livello di fiducia). Maggiore il livello di protezione che si intende raggiungere e maggiori sono i costi
da sostenere, e quindi le scelte aziendali si baseranno su unattenta analisi del rapporto costi/benefici e degli effettivi rischi che si corrono in tema di sicurezza informatica.
In definitiva, ogni organizzazione dovr impostare una propria politica per la sicurezza informatica, considerando le proprie politiche aziendali, le disponibilit tecnologiche e umane e rispettando le disposizioni
legislative vigenti in materia.

11.1 Aspetti legali della sicurezza nei Sistemi Informatici


Lavvento dellinformatica e lo sviluppo di Internet hanno generato nuovi problemi giuridici, causati
dallapplicazione alle nuove tecnologie di concetti nati per altre situazioni (una truffa tradizionale differisce da una frode informatica).
Purtroppo, in Italia si sono succedute negli ultimi anni molte normative relativa alla sicurezza informatica,
a volte in parziale contrasto tra loro. Vediamo le principali.

11.1.1 D.lgs 196/03 relativo alla tutela della privacy


Questo decreto sostituisce tutta la normativa pre-vigente in materia di tutela dei dati personali, introducendo significative modifiche soprattutto nel settore security.
Vincoli il trattamento personali e li suddivide i dati personali in: dati aggregati e anonimi, dati comuni, dati
sensibili, dati giudiziari. Sono particolarmente significativi gli articoli riportati di seguito.
11.1.1.1 Art. 31 D.lgs 196 del 2003: Obblighi di sicurezza:
I dati personali oggetto di trattamento sono custoditi e controllati, anche in relazione alle conoscenze acquisite in base al progresso tecnico, alla natura dei dati e alle specifiche caratteristiche del trattamento, in
modo da ridurre al minimo, mediante l'adozione di idonee e preventive misure di sicurezza, i rischi di distruzione o perdita, anche accidentale, dei dati stessi, di accesso non autorizzato o di trattamento non consentito o non conforme alle finalit della raccolta.
11.1.1.2 Art. 33 D.lgs 196 del 2003: misure minime:
Nel quadro dei pi generali obblighi di sicurezza di cui allarticolo 31, o previsti da speciali disposizioni, i
titolari del trattamento sono comunque tenuti ad adottare le misure minime individuate nel presente capo,
volte ad assicurare un livello minimo di protezione dei dati personali.
11.1.1.3 Art. 34 D.lgs 196 del 2003: trattamenti con strumenti elettronici:
1. Il trattamento di dati personali effettuato con strumenti elettronici consentito solo se sono adottate, nei
modi previsti dal disciplinare tecnico contenuto nellallegato B), le seguenti misure minime:
a) autenticazione informatica;
b) adozione di procedure di gestione delle credenziali di autenticazione;

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

129

c) utilizzazione di un sistema di autorizzazione;


d) aggiornamento periodico dellindividuazione dellambito del trattamento consentito ai singoli incaricati
e addetti alla gestione o alla manutenzione degli strumenti elettronici;
e) protezione degli strumenti elettronici e dei dati rispetto a trattamenti illeciti di dati, ad accessi non consentiti e a determinati programmi informatici;
f) adozione di procedure per la custodia di copie di sicurezza, il ripristino della disponibilit dei dati e dei
sistemi;
g) tenuta di un aggiornato documento programmatico sulla sicurezza;
h) adozione di tecniche di cifratura o di codici identificativi per determinati trattamenti di dati idonei a rivelare lo stato di salute o la vita sessuale effettuati da organismi sanitari.

11.1.2 D.lgs. 518/92 relativo alla tutela del software


Di recente modificato, prevede sanzioni penali a chi copia abusivamente software a fini di profitto (prima
si prevedeva il fine di lucro).

11.1.3 D.P.R. 445/00: la firma elettronica e digitale. Il documento informatico


il testo unico delle disposizioni legislative e regolamentari in materia di documentazione amministrativa;
prevede diverse forme di firme elettroniche:
Firma elettronica debole: l'insieme dei dati in forma elettronica, allegati o associati ad altri dati elettronici, e utilizzati come metodo di autenticazione informatica.
Il documento informatico sottoscritto con firma elettronica soddisfa il requisito legale della forma scritta.
Sul piano probatorio il documento stesso liberamente valutabile, tenuto conto delle sue caratteristiche
oggettive di qualit e sicurezza.
Esso inoltre soddisfa l'obbligo previsto dagli articoli 2214 e seguenti del codice civile e da ogni altra analoga disposizione legislativa o regolamentare
Nella prassi del commercio elettronico il modo pi usato per manifestare il consenso alla conclusione
dellaccordo quello del point and click, cio del comportamento consistente nella pressione del cosiddetto tasto negoziale virtuale.
Per quanto riguarda i contratti B2B, il referente normativo lart. 1341 cc. Le condizioni on-line sottoscritte dal contraente lo vincoleranno soltanto se non contengano clausole vessatorie da approvare per iscritto.
Firma elettronica avanzata: la firma elettronica ottenuta mediante una procedura informatica che garantisce la connessione univoca al firmatario e la sua univoca identificazione, creata con mezzi controllati
esclusivamente dal firmatario e collegata ai dati firmati in modo da consentire di rilevare se i dati stessi
siano stati successivamente modificati.
Il documento informatico, quando sottoscritto con firma elettronica avanzata ma non qualificata, liberamente valutabile dal giudice tenuto conto delle sue caratteristiche oggettive di qualit e sicurezza.
Ovviamente, data la maggiore sicurezza di questo tipo di firma, le possibilit che il giudice consideri valido il documento informatico sono pi alte rispetto alla firma elettronica debole.
Firma elettronica qualificata: la firma elettronica avanzata che sia basata su un certificato qualificato
e creata mediante un dispositivo sicuro per la creazione della firma
Il documento informatico, quando sottoscritto con firma elettronica avanzata, e basata su un certificato
qualificato e generata mediante un dispositivo per la creazione di una firma sicura, prova pienamente, fino
a querela di falso, della provenienza delle dichiarazioni da chi l'ha sottoscritto.
La firma digitale riconosciuta, ai sensi dell'articolo 2703 del codice civile, quando la sua apposizione
autenticata dal notaio o da altro pubblico ufficiale autorizzato. L'autenticazione della firma digitale consiste
nell'attestazione, da parte del pubblico ufficiale, che la firma digitale stata apposta in sua presenza dal titolare, previo accertamento della sua identit personale, della validit della chiave utilizzata e del fatto che
il documento sottoscritto risponde alla volont della parte e non in contrasto con lordinamento giuridico
ai sensi dell'articolo 28, primo comma, n. 1 della legge 6 febbraio 1913, n. 89. L'apposizione della firma
digitale da parte del pubblico ufficiale integra e sostituisce ad ogni fine di legge la apposizione di sigilli,
punzoni, timbri, contrassegni e marchi comunque previsti
La firma digitale: la firma elettronica qualificata basata su un sistema di chiavi asimmetriche a coppia,
una pubblica e una privata, che consente al titolare tramite la chiave privata e al destinatario tramite la
chiave pubblica, rispettivamente, di manifestare e di verificare la provenienza e l'integrit di un documento
informatico o di un insieme di documenti informatici.

130

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

11.2 Sicurezza dei dati


Anche per ottemperare alle richieste del D.lgs 196/03 per quanto riguarda i dati si devono garantire:
Disponibilit: dati e documenti devono sempre essere disponibili per chi ha il diritto di utilizzarli. Questo
obiettivo si raggiunge principalmente mediante backup periodici, luso di dischi RAID per ripristinare i dati eventualmente persi, e luso di programmi antivirus per ridurre le possibilit di danneggiamento doloso
dei dati stessi.
Confidenzialit: dati e documenti possono essere letti solo da chi autorizzato. Richiede di definire ruoli
e responsabilit allinterno dellorganizzazione; successivamente, i principali meccanismi da attivare per
garantire la confidenzialit dei dati sono:
- internamente allorganizzazione, introduzione di un sistema di protezione basato su account;
- esternamente, utilizzo di sistemi crittografia durante il transito dei dati in rete.
Integrit: dati e documenti possono essere modificati solo da chi autorizzato a farlo. Richiede di definire
ruoli e responsabilit allinterno dellorganizzazione mediante l'uso di account all'interno dell'organizzazione e di firme digitali durante il transito dei dati in rete.
Autenticit: si deve individuare con certezza la sorgente di un dato o documento ricevuto o memorizzato.
Non ripudio: una transazione informatica non pu essere ripudiata dal soggetto che lha effettuata. Si ottiene mediante firme digitali e protocolli crittografici.

11.3 Strategie per la sicurezza della rete


Per gestire la sicurezza, bisogna individuare le strategie da adottare per ridurre al minimo i rischi. Ricordiamo che non esiste un approccio o una strategia che possa risolvere tutti i problemi, cio non possibile
fornire una protezione perfetta.

11.3.1 Sicurezza attraverso l'obscurity


Una semplice strategia di sicurezza detta security through obscurity: un sistema considerato sicuro
soltanto perch si suppone che nessuno conosca la sua esistenza. Tuttavia, ci sono molti modi per individuare l'esistenza di un host e per estrargli informazioni sensibili. Ad esempio, conoscendo l'hardware, il software e la versione del sistema operativo di un host, possibile individuare le tecniche da utilizzare per accedervi. In molti casi la versione del proprio sistema operativo viene rivelata al server al momento del login.
Si inviano informazioni sensibili anche durante la connessione ad un host esterno alla propria rete. Ad esempio, durante una connessione ad un server HTTP, il client comunica la versione del browser e del sistema operativo utilizzati.
A lungo termine, quindi, la scelta della tecnica di obscurity si rivela poco efficace.

11.3.2 Host security


Una strategia molto utilizzata quella basata sulla sicurezza a livello di host: si aumenta il pi possibile la
sicurezza di ogni host separatamente. Tale soluzione presenta difficolt di scalabilit al crescere del numero e della variet degli host (hardware o sistemi operativi o applicazioni diverse, configurazioni eterogenee,
etc.).
Questa strategia dipende molto dalle competenze e dallonest di chi ha un accesso privilegiato ad un host.
Quindi pu essere molto appropriata per piccoli siti.

11.3.3 Network security


Al crescere della complessit degli ambienti di elaborazione, la strategia basata sulla sicurezza a livello di
host diviene sempre meno gestibile. Per questo motivo, molte organizzazioni usano una strategia a livello
di network, che controlla gli accessi alla rete ed ai servizi offerti. Questa strategia usa firewall per protezione le reti e i sistemi interni, meccanismi di autenticazione forte e la cifratura per proteggere i dati particolarmente sensibili.
Un sito pu ottenere importanti vantaggi usando questa strategia. Infatti, un singolo firewall pu proteggere molti host da attacchi provenienti da reti esterne, senza preoccuparsi del tipo di sicurezza a livello dei
singoli host.

11.3.4 Least privilege


Molto probabilmente, la strategia fondamentale per la sicurezza quella dei privilegi minimi: prevede che
utenti, amministratori, programmi, sistemi, dovrebbero possedere solamente i privilegi necessari per eseguire uno specifico task. La strategia dei privilegi minimi limita l'esposizione agli attacchi e i danni.
In generale, nessun utente necessita di accedere ad ogni servizio Internet, o di modificare o leggere ogni

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

131

file in un sistema, o di conoscere la password di amministratore di una macchina. Probabilmente, nessun


amministratore di sistema necessita di conoscere le password di amministrazione di tutti i sistemi. Molti
sistemi operativi non sono configurati con privilegi minimi, anche per semplificare l'avviamento all'uso
della macchina da parte dell'utente.

11.3.5 Defense in depth


Questa strategia basata sulla difesa in profondit: usa diverse strategie tra quelle suddette, anche per motivi di fault tolerance. Le strategie usate possono fornire backup e ridondanza:
- network security (firewall);
- di host security;
- sicurezza per gli utenti.
Un'assunzione fondamentale per la sicurezza la forza di una catena di sicurezza uguale alla forza del
suo anello pi debole. Gli attaccanti pi scaltri cercano di individuare il punto pi debole in una rete e si
concentrano solo ed esclusivamente su di esso.
necessario che l'amministratore sia a conoscenza dei punti deboli delle proprie difese per poterli eliminare quanto pi possibile e per controllare attentamente quelli non eliminabili.

11.3.6 Strategie di configurazione


Ci sono due modi per configurare gli accessi alla rete: default deny e default permit.
La configurazione default deny sicuramente la migliore per la sicurezza: tutto ci che non esplicitamente consentito proibito. Questa configurazione proibisce di default qualunque cosa; per poter individuare
cosa consentito, occorre:
- esaminare i servizi necessari agli utenti;
- considerare le conseguenze dell'erogazione di tali servizi sulla sicurezza;
- permettere solamente i servizi che si conoscono, che possono essere forniti in maniera sicura e che sono
strettamente necessari.
I servizi in questo modo vengono abilitati in maniera controllata.
La configurazione default permit invece sicuramente la migliore per gli utenti: tutto ci che non esplicitamente proibito permesso. In questo caso importante la responsabilit degli utenti, che devono essere
adeguatamente istruiti sulle possibilit di attacco che provengono dal Web e dalla rete in generale e che
non possono installare servizi non autorizzati.
La difficolt sta nellindividuare tutto ci che pericoloso e che quindi deve essere vietato.

11.3.7 Sicurezza dei servizi


L'aumento dell'uso di molti servizi Internet standard aumenta anche la probabilit che il servizio fornito
possa rendere una rete vulnerabile ad attacchi mirati a violare o addirittura a distruggere le informazioni
contenute nella rete a cui l'utente accede.
Parlando di servizi sicuri, tipicamente ci si riferisce a servizi che forniscono due tipi di garanzie:
- il servizio pu essere usato soltanto per le operazioni previste.
- non possibile leggere o falsificare le transazioni che avvengono attraverso il servizio.
Comunque, queste garanzie non bloccano transazioni non sicure. Per esempio, l'uso dell'HTTP (HyperText
Transfer Protocol) per effettuare il download di un file garantisce che nessuno sta modificando il file nel
transito, ma non pu garantire che il file sia privo di virus o di programmi dannosi.

11.4 Tipi di sicurezza


(Da Wikipedia, l'enciclopedia libera, voce Sicurezza informatica).

Quando si parla di "sicurezza informatica", spesso si usano i concetti di sicurezza passiva e di sicurezza attiva.
La sicurezza passiva l'insieme di tecniche e di strumenti di tipo difensivo, ossia quel complesso di soluzioni finalizzate ad impedire l'accesso a risorse, sistemi, impianti, informazioni e dati di natura riservata da
parte di utenti non autorizzati. Il concetto di sicurezza passiva pertanto molto generale: ad esempio, per
l'accesso a locali protetti, l'utilizzo di porte di accesso blindate, congiuntamente all'impiego di sistemi di
identificazione personale, uno strumento di sicurezza passiva.
La sicurezza attiva , invece, l'insieme delle tecniche e degli strumenti mediante i quali le informazioni ed
i dati di natura riservata sono resi intrinsecamente sicuri e protetti dalla possibilit che un utente non autorizzato possa accedervi (confidenzialit) o possa modificarli (integrit).

132

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

evidente che la sicurezza passiva e quella attiva sono complementari ed entrambe indispensabili per raggiungere il desiderato livello di sicurezza di un sistema. Ci sono molte tecniche di attacco; perci necessario usare contemporaneamente diverse tecniche difensive per proteggere un sistema informatico, realizzando pi barriere fra l'attaccante e l'obiettivo.
Spesso l'obiettivo dell'attaccante non il sistema informatico, ma i suoi dati; quindi, la sicurezza informatica deve impedire l'accesso ad utenti non autorizzati, ma anche a soggetti con autorizzazione limitata a certe
operazioni, per evitare la copia, la modifica o la cancellazione dei dati del sistema informatico.
Le violazioni possono essere molteplici: tentativi non autorizzati di accesso a zone riservate, furti di identit digitale o di file riservati, usi di risorse che l'utente non potrebbe utilizzare, ecc. La sicurezza informatica
si occupa anche di prevenire eventuali Denial of service (DoS); i DoS sono attacchi al sistema finalizzati a
rendere non utilizzabili alcune risorse per danneggiare gli utenti del sistema. Per prevenire le violazioni si
utilizzano strumenti hardware e software.

11.4.1 Sicurezza dei programmi


Il problema della sicurezza dei programmi e dell'invio e ricezione di dati protetti molto studiato dagli sviluppatori di software, a causa dell'aumento dell'uso degli strumenti informatici e di internet. La sicurezza
nella produzione di un software "protetto" l'assenza di condizioni capaci di produrre danni mortali o irreparabili ad un sistema. Un software quindi deve essere progettato in modo da raggiungere il compromesso
pi funzionale tra l'efficienza del suo uso e la sua capacit di "sopravvivenza" ad attacchi esterni e ad errori.
Due caratteristiche fondamentali esplicano il concetto di sicurezza:
- Safety (sicurezza): una serie di accorgimenti atti ad eliminare la produzione di danni irreparabili all'interno del sistema;
- Reliability (affidabilit): prevenzione da eventi che possono produrre danni di qualsiasi gravit al sistema.
Un software tanto pi sicuro quanto minori sono la probabilit di un guasto e la gravit del danno conseguente al guasto stesso. Vediamo, in ordine crescente, i possibili effetti dei guasti in cui un software pu
incorrere:
- Nessun effetto
- Rischio trascurabile
- Rischio significativo
- Rischio elevato
- Rischio catastrofico
Il software prodotto deve essere collaudato per cercare i difetti presenti ed eventualmente eliminarli. I modelli di sicurezza per il controllo dei programmi sono basati su due metodi differenti:
- Modelli di sicurezza basati sulla semantica: la sicurezza del programma controllato esaminata in
termini di comportamento del programma
- Modelli di sicurezza basati sul linguaggio: i tipi delle variabili sono seguiti dall'esplicazione delle politiche adottate per l'uso dei dati tipati.
Per essere efficace, un programma deve essere controllato nelle sue specifiche e deve essere privo di difetti
nel codice; a questo fine, sono controllate le specifiche del programma e delle prestazioni correlate all'affidabilit, ed analizzata ogni parte di codice e funzione del sistema.
L'IEEE ha catalogato gli errori nel software in tre diverse voci a seconda della natura degli errori stessi:
- Error: un errore umano verificatosi durante l'interpretazione delle specifiche oppure durante l'uso di
un metodo o nel tentativo di risoluzione di un problema
- Failure: un comportamento del software imprevisto ed incongruo rispetto alle specifiche del programma stesso
- Fault: un difetto del codice sorgente.
Gli errori di programma non nocivi, come ad esempio gli spyware ed il buffer overflow, non modificano i
file di sistema e non danneggiano le caratteristiche del sistema.

11.5 Principali tecniche di attacco


11.5.1 Exploit
(Da Wikipedia, l'enciclopedia libera, voce Exploit)

Un exploit un programma che, sfruttando un bug o una vulnerabilit, porta all'acquisizione di privilegi o
al denial of service di un computer.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

133

Ci sono diversi modi per classificare gli exploit. La classificazione pi comune distingue il modo usato
dall'exploit per contattare l'applicazione vulnerabile. Un exploit remoto sfrutta la vulnerabilit al primo
accesso al sistema. Un exploit locale richiede un precedente accesso al sistema e solitamente aumenta i
privilegi dell'utente rispetto a quelli impostati dall'amministratore.
Un'altra classificazione distingue il tipo di vulnerabilit sfruttato dagli exploit (buffer overflow, heap overflow, format string attacks, race condition, double free(), integer overflow, SQL injection, cross-site scripting, cross-site request forgery, remote file inclusion e local file inclusion).
Lo scopo di molti exploit quello di acquisire i privilegi di root su un sistema. Alcuni exploit dapprima accedono con i minimi privilegi e poi li alzano fino ad arrivare a root.
Normalmente un exploit pu sfruttare solo una specifica falla; quando viene divulgato, questa falla riparata dal programma e l'exploit diventa innocuo per le nuove versioni del programma. Per questo motivo,
alcuni blackhat hacker non divulgano gli exploit trovati ma li tengono riservati per loro o per la loro comunit. Questi exploit sono chiamati zero day exploit, e scoprire il loro contenuto il pi grande desiderio per
gli attacker senza conoscenze, altrimenti detti script kiddie.

11.5.2 Buffer overflow


(Da Wikipedia, l'enciclopedia libera, voce Buffer overflow)

Il buffer overflow una vulnerabilit di sicurezza che pu colpire un software che, senza controllare la
lunghezza dei dati ricevuti, li copia in un buffer di capienza prestabilita, confidando che l'utente (o il mittente) non superi questa capienza.
Quando, per errore o per malizia, sono inviati dati pi lunghi della capienza del buffer destinato a contenerli, i dati extra sovrascrivono le variabili interne del programma o il suo stack; di conseguenza, a seconda
delle variabili sovrascritte e dei nuovi valori, il programma pu dare risultati errati o imprevedibili, bloccarsi, o (se un driver di sistema o lo stesso sistema operativo) bloccare il computer. Chi conosce bene il
software in questione, il sistema operativo e il tipo di computer su cui gira, pu individuare una serie di dati malevoli che, inviata per provocare un buffer overflow, consenta ad un malintenzionato di controllare il
programma (e a volte, tramite questo, l'intero computer).
Questa debolezza nota da molto tempo, ma solo di recente usata dai cracker per bloccare o controllare
altri computer collegati in rete. Un programma ha questo tipo di vulnerabilit se:
- Il programma legge dati di lunghezza variabile e non nota a priori;
- Il programma immagazzina i dati in un buffer allocato in un'area di memoria vicina ad altre strutture di
dati vitali per il programma stesso;
- Il programma non controlla la correttezza dell'input in corso.
- L'area di memoria dello stack eseguibile, se si tenta di scrivere dello shellcode sullo stack; questo non
vero sui computer pi recenti dotati di NX bit.
La prima condizione facilmente verificabile, mediante le specifiche del programma; le altre due invece
sono interne ad esso e riguardano la sua completezza in senso teorico.

11.5.3 Shellcode
(Da Wikipedia, l'enciclopedia libera, voce Shellcode)

Uno shellcode un programma in linguaggio assembly che tradizionalmente esegue una shell (ad es., la
shell Unix '/bin/sh' o la shell command.com sui sistemi operativi DOS e Microsoft Windows). Uno shellcode pu sfruttare un bug mediante un exploit, consentendo ad un hacker o un cracker di accedere alla riga di comando di un computer, o, pi in generale, di eseguire codice arbitrario.
Uno shellcode tipicamente inserito nella memoria del computer mediante un buffer overflow nello stack
o nell'heap, o tramite un format string attack. Lo shellcode pu essere eseguito sovrascrivendo l'indirizzo di
ritorno dello stack con l'indirizzo dello shellcode. In questo modo, quando una subroutine prova a ritornare
al chiamante, ritorna invece al codice dello shellcode che apre una riga di comando che pu essere usata
dal cracker.

11.5.4 Cracking
(Da Wikipedia, l'enciclopedia libera, voce Cracking)

Il cracking la modifica di un software per rimuovere la protezione dalla copia, oppure per accedere ad
un'area riservata.
Il cracking anche la violazione di sistemi informatici, collegati ad Internet o ad un'altra rete, per danneggiarli, rubare informazioni oppure sfruttare i servizi telematici della vittima (connessione ad Internet, traffico voce, sms, accesso a database ecc..) senza la sua autorizzazione (thiefing).

134

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

11.5.5 Backdoor
(Da Wikipedia, l'enciclopedia libera, voce Backdoor)

Una backdoor una porta che consente di superare in parte o in tutto le procedure di sicurezza attivate in
un sistema informatico (analogamente alle porte di servizio nel retro di una casa). Questa porta pu essere
intenzionalmente create dai gestori del sistema informatico per facilitare la manutenzione della struttura informatica oppure, pi spesso, da cracker intenzionati a manomettere il sistema. Pu anche essere installata
autonomamente da alcuni malware (come virus, worm o trojan), per consentire ad un utente esterno controllare da remoto la macchina senza l'autorizzazione del proprietario.
Oltre ad essere molto pericolosa per l'integrit delle informazioni presenti sul sistema, una backdoor installata dai virus pu essere utilizzata per condurre un attacco di tipo DDoS.

11.5.6 Port scanning


(Da Wikipedia, l'enciclopedia libera, voce Port scanning)

Il Port Scanning individua quali porte sono usate da un computer connesso ad una rete.
Letteralmente significa "scansione delle porte" e consiste nell'inviare richieste di connessione al computer
bersaglio (soprattutto pacchetti TCP, UDP e ICMP creati ad arte): elaborando le risposte, si pu stabilire
(anche con precisione) quali servizi di rete sono attivi su quel computer. Il risultato della scansione di una
porta rientra solitamente in una delle seguenti categorie:
- aperta: l'host ha risposto che un servizio in ascolto su quella porta
- chiusa: l'host ha risposto che le connessioni alla porta saranno rifiutate (ICMP port-unreachable)
- bloccata/filtrata: l'host non ha risposto; quindi, probabilmente c' un firewall o un ostacolo di rete che
pu bloccare laccesso alla porta ed impedire di individuarne lo stato.
Di per s, il port scanning non pericoloso per i sistemi informatici, e viene comunemente usato dagli
amministratori di sistema per effettuare controlli e manutenzione. Rivela per informazioni dettagliate che
potrebbero essere usate da un eventuale attaccante per preparare una tecnica mirata a minare la sicurezza
del sistema; pertanto un amministratore deve osservare attentamente i port scan effettuati verso i computer
della propria rete.

11.5.7 Sniffing
(Da Wikipedia, l'enciclopedia libera, voce Sniffing)

Lo sniffing l'attivit di intercettazione passiva dei dati che transitano in una rete telematica. Tale attivit
pu essere svolta sia per scopi legittimi (ad es., l'individuazione di problemi di comunicazione o di tentativi di intrusione) sia per scopi illeciti (ad es., l'intercettazione fraudolenta di password o altre informazioni
sensibili).
I prodotti software che eseguono queste attivit sono detti sniffer e, oltre ad intercettare e memorizzare il
traffico, offrono funzionalit di analisi del traffico stesso.
Gli sniffer intercettano i singoli pacchetti, decodificando le varie intestazioni di livello datalink, rete, trasporto, applicativo. Inoltre, possono offrire strumenti che analizzano, ad esempio, tutti i pacchetti di una
connessione TCP per valutare il comportamento del protocollo o per ricostruire lo scambio di dati tra le
applicazioni.
Per intercettare i dati in una rete locale necessario possedere od ottenere l'accesso fisico al mezzo trasmissivo.
Nelle reti ethernet non-switched, il mezzo trasmissivo (cavo coassiale o, attualmente, cavo UTP o STP
connesso ad un hub) condiviso; quindi, ogni scheda di rete di un computer nella rete locale riceve tutti i
pacchetti, anche quelli destinati ad altri, e seleziona i propri a seconda dell'indirizzo MAC (indirizzo
hardware univoco della scheda di rete). Lo sniffing, in questo caso, imposta sull'interfaccia di rete la cosiddetta "modalit promiscua" che disattiva questo "filtro hardware" per permettere al sistema l'ascolto di tutto il traffico passante sul cavo.
Nelle reti ethernet switched, lo switch invia ad ogni interfaccia di rete solo i pacchetti destinati al proprio
indirizzo ed i pacchetti di broadcast. L'impostazione della modalit promiscua quindi non pu intercettare
il traffico in una rete gestita da switch. In questo caso, ci si pu collegare ad una porta (detta "Span" da Cisco, "Roving Analysis" da 3Com, "port mirroring" dagli altri produttori) che riceve il traffico circolante su
tutte le porte dello switch. Alcune tecniche che gestiscono tutto il traffico diretto dallo switch da una porta
qualunque sono il MAC flooding, l'ARP poisoning e il port stealing.
Per intercettare i dati che transitano su reti geografiche, si utilizzano tecniche "Man in the middle" analoghe a quelle accennate in precedenza, che operano per a livello di instradamento del traffico IP oppure
che inviano alle vittime informazioni fasulle per quanto riguarda la corrispondenza tra nomi a dominio e
indirizzi IP, sfruttando l'assenza di autenticazione del sistema DNS.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

135

11.5.8 Keylogger
(Da Wikipedia, l'enciclopedia libera, voce Keylogger)

Un keylogger uno strumento che pu intercettare tutto ci che un utente digita sulla tastiera del proprio
computer.
Un keylogger hardware collegato al cavo di comunicazione tra la tastiera ed il computer o all'interno
della tastiera. molto efficace, perch la sua installazione molto semplice e il sistema non pu accorgersi
della loro presenza. Quando installato fra la tastiera e il PC, sembra un adattatore oppure in uno cavo di
prolunga. Quando nascosto nella tastiera, sembra invisibile. Un keylogger hardware completamente indipendenti dal sistema operativo e pu intercettare anche le password di bootstrap. Un keylogger memorizza i tasti premuti o li invia a un dispositivo wireless. Per leggere il contenuto dei dati memorizzati localmente, di solito si utilizza una combinazione di tasti o si lancia uno specifico software.
Un keylogger software un programma che controlla e salva la sequenza di tasti digitata da un utente.
Spesso, un keylogger software trasportato ed installato nel computer da worm o trojan ricevuti tramite
Internet ed in genere serve a intercettare password e numeri di carte di credito ed inviarli tramite posta elettronica al creatore degli stessi. Un programma di keylogging pu sovrapporsi fra il browser ed il World
Wide Web. In questo caso intercetta le password, comunque vengano inserite nel proprio PC. La password
catturata indipendentemente dalla modalit di input: digitazione da tastiera, oppure copia/incolla da un
file di testo prima di collegarsi a Internet per evitarne la digitazione, oppure mediante un programma di
dettatura vocale. Anche in caso di connessione sicura (cifrata), se sul computer presente un keylogger che
invia le password in remoto, tali password potranno essere utilizzate dalla persona che le riceve.

11.5.9 Spoofing
(Da Wikipedia, l'enciclopedia libera, voce Spoofeing)

Lo spoofing un attacco informatico che in qualche modo falsifica l'identit (spoof). Lo spoofing pu avvenire in qualunque livello della pila ISO/OSI e inoltre pu anche falsificare le informazioni applicative.
Quando la falsificazione dell'identit non avviene in campo informatico si parla di social engineering.
Uno spoofing deve far credere alla vittima che c' qualcosa di diverso: un hostname, un indirizzo ethernet
o altro ancora.
11.5.9.1 Spoofing a livello 2
Quando l'informazione falsificata un indirizzo MAC, si parla di MAC-spoofing. L'attacco immette in rete un pacchetto che contiene un MAC address diverso da quello dell'attaccante ed uguale a quello della vittima. Un esempio di questa tecnica impiegata nel MAC-flooding in cui un attaccante manda continuamente pacchetti in rete contenenti un MAC che non il suo. Questo attacco satura il forwarding database
dello switch, causandone malfunzionamenti. Un attacco che riguarda la sicurezza del layer 2 ma non direttamente il mac spoofing l'ARP poisoning.
11.5.9.2 Spoofing a livello 3
Quando un indirizzo IP falsificato, si parla di IP spoofing. In generale facile falsificare un indirizzo
perch il protocollo non implementa alcun sistema di sicurezza. Ci causa un routing asimmetrico perch il
pacchetto di risposta a quello falsificato sar inviato al vero IP. Gli ISP possono attivare diversi sistemi di
sicurezza per impedire l'IP spoofing. Il primo metodo impedisce che da una interfaccia (di un router/firewall) vengano inviati pacchetti in cui l'IP sorgente diverso da quello atteso. Il secondo metodo usa
delle tabelle di routing; se l'interfaccia di provenienza per un pacchetto diversa da quella che sarebbe
scelta dal router per l'inoltro del pacchetto di risposta, allora questo pacchetto viene scartato. Questo sistema si chiama uRPF[1].
11.5.9.3 Spoofing a livello 4
Il livello 4 della pila ISO/OSI non rilevante in fase di autenticazione; quindi non si parla di UDP/TCP
spoofing, ma di un attacco di IP-spoofing portato verso uno di questi due protocolli.
Lo spoofing UDP analogo al caso IP. Poich UDP un protocollo connectionless, un datagram UDP
falsificato mediante l'immissione di informazioni desiderate e la falsificazione dell'header.
Lo spoofing TCP decisamente pi complesso del caso UDP. TCP infatti un protocollo connection oriented che richiede una sessione tramite il three way handshake. Se un pacchetto SYN contiene l'indirizzo
IP falsificato e questo inviato ad un server, il server, prima di inviare i dati, cercher di concludere l'handshake rispondendo con un pacchetto SYN/Ack. Questo pacchetto conterr l'indirizzo IP falsificato e quindi non verr inviato indietro all'attaccante che quindi non potr rispondere con il terzo e ultimo pacchetto
(il pacchetto Ack). Per concludere questo attacco, necessario inviare un pacchetto Ack al server contenente nuovamente l'indirizzo IP falsificato, ma anche il sequence number inserito dal server nel pacchetto

136

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

SYN/Ack; per scegliere questo numero, l'attaccante deve sapere come stato scelto dal server. Poich l'attaccante invia il primo e il terzo pacchetto senza vedere il secondo, questo attacco si chiama blind spoofing.
11.5.9.4 WEB Spoofing
Quando lo spoofing coinvolge il web (server applicativo, host server o protocolli web) si parla di web spoofing. Nell'accezione pi comune, il web spoofing falsifica un server web per far credere ad un utente di
essere connesso ad un certo server mentre connesso ad un server malevolo.
Nel caso in chiaro (non TLS), la prima azione di un attaccante per redirigere un client verso un server falso
(anche chiamato shadow server o server ombra) la falsificazione dell'associazione tra l'indirizzo web e
l'indirizzo IP. Questa operazione viene effettuata tramite un attacco di dns poisoning. A questo punto, l'attaccante ha fatto credere al client che l'indirizzo del server vero quello invece del server falso. L'attaccante ha costruito in precedenza un server falso che pu contenere una copia del server vero (ogni pagina
stata copiata in locale sul server ombra) oppure pu rigirare pagina per pagina le connessioni del client
verso il server vero. In entrambi questi casi, l'attaccante si finge il server vero, catturando, per esempio, le
credenziali di accesso. La creazione dello shadow server uguale a ci che si fa nel phishing, ma in questo
caso c' stato un preventivo attacco diretto al client.
Nel caso TLS la cosa si complica notevolmente perch bisogna violare il sistema crittografico di TLS. Poich gli algoritmi stessi sono difficilmente violabili, un attaccante opera un attacco a met tra l'informatica e
il social engineering. L'attacco si svolge come nel caso senza TLS, ma le connessioni sono girate verso il
server vero. Quando il client riceve il certificato del server, dovrebbe verificarne l'autenticit. Allora, l'attaccante genera un certificato server falso, totalmente uguale al certificato vero, che per non firmato dalla stessa CA. L'utente quindi riceve un certificato che sembra valido ma solo un'analisi approfondita rivela
la sua falsit. L'attaccante potrebbe rendere ancora pi ardua l'identificazione usando una CA falsa, ma uguale a quella vera (cio con stessi nomi, identificativi, ecc.). Se l'utente non conosce sufficientemente la
problematica, pu cliccare per accettare anche se la prova crittografica non completa. A questo punto il
server dell'attaccante si connette al server vero agendo da proxy e intercettando le comunicazioni. Questo
un attacco di tipo "man in the middle".

11.5.10 Trojan
(Da Wikipedia, l'enciclopedia libera, voce Trojan)

Un trojan (o trojan horse, dall'inglese per Cavallo di Troia), un tipo di malware. Deve il suo nome al fatto che le sue funzionalit sono nascoste all'interno di un programma apparentemente utile; dunque l'utente stesso che, installando ed eseguendo un certo programma, inconsapevolmente, installa ed esegue anche
il codice trojan nascosto.
In genere il termine Trojan indica i trojan ad accesso remoto (detti anche RAT dall'inglese Remote Administration Tool), composti generalmente da 2 file: il file server, che viene installato nella macchina vittima,
ed un file client, usato dall'attaccante per inviare istruzioni che il server esegue. In questo modo ( come con
il mitico stratagemma adottato da Ulisse) la vittima introduce il programma nella citt, ossia (fuor di metafora) lo esegue il programma. Esistono anche alcuni software legali, come GoToMyPC o PCAnywhere,
con funzionalit simili ai trojan, ma che non sono dei cavalli di Troia poich l'utente conosce la situazione.
Spesso il trojan viene installato dallo stesso attaccante, quando prende il controllo del sistema, acquisendone i privilegi amministrativi. In questo caso il trojan serve a "mantenere lo stato di hacking", cio a mantenere il controllo della macchina, senza che l'amministratore legittimo si accorga che alcuni programmi nascondono delle altre funzioni.
I trojan non si diffondono autonomamente come i virus o i worm, quindi richiedono un intervento diretto
dell'aggressore per far giungere l'eseguibile maligno alla vittima. A volte agiscono insieme: un worm viene
iniettato in rete proprio per installare dei trojan sui sistemi. Spesso la vittima stessa che scarica un trojan
sul proprio computer, perch i cracker amano inserire queste "trappole" in programmi molto richiesti (ad
es., nei videogiochi piratati). Vengono in genere riconosciuti da un antivirus aggiornato come tutti i malware. Se un trojan non ancora stato scoperto dalle software house degli antivirus, talvolta pu essere rilevato, con la scansione euristica, come probabile malware.
Un trojan pu contenere qualsiasi tipo di istruzione maligna. Spesso i trojan sono usati come veicolo alternativo ai worm e ai virus per installare delle backdoor o dei keylogger sui sistemi bersaglio.
All'incirca negli anni successivi al 2001 o 2002, i trojan incominciarono ad essere utilizzati sistematicamente per operazioni criminose; in particolare per inviare messaggi di spam e per rubare informazioni personali quali numeri di carte di credito e di altri documenti o anche solo indirizzi email.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

137

I Trojan di nuova generazione hanno molteplici funzionalit; ad es., connessioni tramite bot IRC, formando
appunto Botnet, e opzioni per nascondersi meglio nel sistema operativo, utilizzando tecniche di Rootkit.

11.5.11 Virus informatici


(Da Wikipedia, l'enciclopedia libera, voce Virus informatici)

Nell'ambito dell'informatica un virus un software, appartenente alla categoria dei malware, che, una volta
eseguito, pu infettare dei file in modo da riprodursi facendo copie di s stesso, generalmente senza farsi
rilevare dall'utente. Talvolta, un virus non danneggia direttamente il sistema operativo che lo ospita, ma
anche nel caso migliore spreca risorse in termini di RAM, CPU e spazio sul disco fisso. Come regola generale, un virus danneggia direttamente solo il software della macchina che lo ospita, anche pu indirettamente danneggiare anche l'hardware, ad esempio surriscaldando la CPU mediante overclocking, oppure
fermando la ventola di raffreddamento.
Nell'uso comune il termine virus viene frequentemente ed impropriamente usato come sinonimo di malware, indicando quindi di volta in volta anche categorie di "infestanti" diverse, come ad esempio worm, trojan
o dialer.
Un virus composto da un insieme di istruzioni, come qualsiasi altro programma per computer. solitamente composto da un numero molto ridotto di istruzioni, (da pochi byte ad alcuni kilobyte), esegue soltanto poche e semplici operazioni ed ottimizza l'uso delle risorse, per rendersi il pi possibile invisibile.
Caratteristica principale di un virus quella di riprodursi e quindi diffondersi nel computer ogni volta che
viene aperto il file infetto.
Tuttavia, un virus di per s non un programma eseguibile (come un virus biologico non di per s una
forma di vita). Un virus, per essere attivato, deve infettare un programma ospite, o una sequenza di codice
che viene lanciata automaticamente, come ad esempio nel caso dei boot sector virus. La tecnica solitamente usata dai virus quella di infettare i file eseguibili: il virus inserisce una copia di s stesso nel file eseguibile che deve infettare, pone tra le prime istruzioni di tale eseguibile un'istruzione di salto alla prima linea della sua copia ed alla fine di essa mette un altro salto all'inizio dell'esecuzione del programma. In questo modo quando un utente lancia un programma infettato, viene dapprima impercettibilmente eseguito il
virus, e poi il programma. L'utente vede l'esecuzione del programma e non si accorge che il virus ora in
esecuzione in memoria e sta compiendo le varie operazioni contenute nel suo codice.
Principalmente, un virus esegue copie di s stesso spargendo l'epidemia, ma pu avere anche altri compiti
molto pi dannosi (cancellare o rovinare dei file, formattare l'hard disk, aprire delle backdoor, far apparire
messaggi, disegni o modificare l'aspetto del video, ..)
I virus informatici pi semplici sono composti da due parti essenziali, sufficienti ad assicurarne la replicazione:
- una routine di ricerca, che ricerca i file adatti ad essere infettati dal virus e controlla che gli stessi non ne
contengano gi una copia, in modo da evitare l'infezione ripetuta di uno stesso file;
- una routine di infezione, che copia il codice del virus all'interno di ogni file selezionato dalla routine di
ricerca in modo che venga eseguito ogni volta che il file infetto viene aperto, in maniera trasparente rispetto all'utente.
Molti virus sono progettati per eseguire attivit differenti dalla replicazione del virus stesso, e contengono
dunque altri due elementi:
- la routine di attivazione, che contiene i criteri in base ai quali il virus decide se effettuare o meno l'attacco (es. una data, o il raggiungimento di un certo numero di file infetti);
- il payload, che una sequenza di istruzioni in genere dannosa per il sistema ospite, come ad esempio la
cancellazione di alcuni file o la visualizzazione di messaggi sullo schermo.
I virus possono essere cifrati e magari cambiare algoritmo e/o chiave ogni volta che vengono eseguiti,
quindi possono contenere altri tre elementi:
- una routine di decifratura, contenente le istruzioni per decifrare il codice del virus;
- una routine di cifratura, di solito cifrata anch'essa, che contiene il procedimento per cifrare ogni copia
del virus;
- una routine di mutazione, che modifica le routine di cifratura e decifratura per ogni nuova copia del virus.

11.5.12 DoS
(Da Wikipedia, l'enciclopedia libera, voce DoS)

DoS, scritto con la maiuscola al primo e terzo posto, la sigla di denial of service (negazione del servizio). Questo tipo di attacco attacca un sistema server, ad esempio un sito web al limite delle prestazioni, la-

138

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

vorando su uno dei parametri d'ingresso, per renderlo incapace di erogare il servizio.
Gli attacchi vengono abitualmente attuati inviando molte richieste al server (di solito un server Web, FTP o
di posta elettronica), saturando le sue risorse e "destabilizzando" il suo sistema; quindi, qualsiasi sistema
collegato ad Internet e che fornisca servizi di rete basati sul TCP pu subire di attacchi DoS.
Inizialmente questo tipo di attacco veniva attuato dai "cracker" come gesto di dissenso etico nei confronti
dei siti web commerciali e delle istituzioni.
Oggi gli attacchi DoS vogliono (pi "criminalmente") impedire l'accesso ai siti web attaccati. L'attacco, per
essere pi efficace, in genere utilizza molti computer inconsapevoli sui quali precedentemente ha inoculato
un programma appositamente creato e che si attiva ad un comando proveniente dal cracker creatore. Se il
programma maligno diffuso su molti computer, migliaia di questi PC, violati da un cracker, possono produrre inconsapevolmente e contemporaneamente un flusso incontenibile di dati che travolgeranno anche i
link pi capienti del sito bersaglio.
Oltre i sistemi server, anche semplici utenti e client (come iPhone) possono essere attaccati da un DoS.
La probabilit sempre minore di incontrare sistemi veramente vulnerabili ha diminuito gli attacchi DoS pi
eclatanti; per si scoperta un'estrema vulnerabilit della rete per l'aumento costante della potenza operativa degli attuali personal computer e dell'accesso ad Internet tramite i sistemi DNS.
L'implementazione del protocollo TCP/IP, che non garantisce l'identificazione dei mittenti di pacchetti ma
anzi ne protegge l'anonimato, pu venir sfruttato per mascherarne la vera provenienza. Trattandosi di connessioni apparentemente legittime, impossibile bloccarle senza interrompere anche il flusso realmente
inoffensivo. Per, la riduzione drastica del numero di sessioni aperte simultaneamente riduce l'impatto
dell'attacco senza limitare il flusso dei pacchetti regolari.
Anche limitando il discorso al blocco di un sito web, esistono, e sono stati utilizzati, parecchi modi di ottenere questo risultato.
Lo scopo di questo attacco saturare la backlog queue con richieste di attivazione di un servizio (TCP
SYN settato) oltre la scadenza dei relativi timeout e non consentendo alla vittima di completare il 3-way
handshake; in questo modo, non sar in grado di gestire i SYN leciti a cui verr negato il servizio.
Lattacco pu essere:
- diretto: l'attaccante interagisce direttamente con la vittima; in questo caso, l'attaccante si dice reale e la
vittima si dice di primo livello;
- indiretto: l'attaccante sfrutta terze parti per colpire la vittima, in questo caso l'attaccante si dice riflesso,
le terze parti si dicono vittime di secondo livello e la vittima finale si dice vittima di primo livello.
Storicamente il SYN-Flooding il capostipite degli attacchi DoS, e discende dal Ping of Death. Il temine
SYN Flooding (= "inondazione di pacchetti di tipo SYN") nasce dal fatto che quando un utente clicka su
un link di una pagina web, richiede l'apertura di una connessione (di tipo TCP) verso quel sito; il primo
passo di questa connessione l'invio di un pacchetto TCP che richiede l'apertura di una connessione.
Il protocollo TCP esige che il sistema risponda allocando alcune risorse (in pratica memoria) per la connessione. Se si programma opportunamente un semplice PC, possibile richiedere l'apertura di diverse migliaia di connessioni al secondo, che "inondando" il server, ne consumano rapidamente tutta la memoria, e
lo bloccano o lo mandano in crash.
Il problema di questo tipo di attacco che il computer attaccante deve poter mandare il flusso di pacchetti
attraverso la connessione ad Internet fino al server attaccato; oppure l'utente malintenzionato deve fornire
delle "credenziali" di accesso valide per usufruire della vulnerabilit insorta nel sistema operativo e portare
a termine, efficacemente, l'attacco al sito bersaglio.
I pacchetti dannosi predisposti con un indirizzo IP, falsificato rispetto all'originale, procureranno al computer "vulnerabile" una situazione, temporanea, di Denial of Service; poich le connessioni che sono normalmente disponibili, sia per i buoni che per i cattivi, sono lente, questo diventa impossibile.
Un esempio potrebbe essere il seguente: l'attaccante, identificato dal nome STE, invia una serie di richieste
alla sua vittima, identificata col nome CRI: la macchina server, sulla quale vengono eseguiti dei servizi,
non riuscir a gestire tutte le richieste e i servizi andranno in crash, risultando prima molto rallentati e poi,
successivamente, inaccessibili. In questa maniera, un utente qualunque (identificato dal nome UTENTE)
non riuscir ad accedere ai servizi e ricever un errore di richiesta scaduta o timeout.
Il protocollo classico usato nei DoS il ping; inviando milioni di ping si riuscir a bloccare l'operativit di
qualunque sito Internet, ma trattandosi di un modello di attacco "uno a uno", ad un pacchetto in uscita corrisponder la ricezione di un solo pacchetto al sistema attaccato. Occorrer quindi che i cracker dispongano

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

139

di un gran numero di PC client, "controllati"; per, difficile "inoculare" il codice maligno in un numero
tanto elevato di macchine grazie all'azione specifica di antivirus, patch di sicurezza e tecnici informatici.
Una modalit di attacco pi sofisticata, detta Smurf attack, usa un flusso di pacchetti modesto, che invia
attraverso una normale connessione via modem, ed una rete esterna mal configurata, che agisce da moltiplicatore di pacchetti, i quali si dirigono infine verso il bersaglio finale lungo linee di comunicazione ad alta velocit. Tecnicamente, viene mandato uno o pi pacchetti di broadcast verso una rete esterna composta
dal numero maggiore possibile di host e con l'indirizzo mittente che punta al bersaglio (broadcast storm).
Ad esempio, pu venir usata una richiesta echo ICMP (Internet Control Message Protocol) precedentemente falsificata dallattaccante.
Questo tipo di attacco possibile solo in presenza di reti che abbiano grossolani errori di configurazione
dei sistemi (nello specifico, nella configurazione dei router) che le collegano tra loro e con Internet.
Il DDoS (Distributed Denial of Service) un attacco DoS realizzato utilizzando numerose macchine attaccanti che insieme costituiscono una botnet. Gli attaccanti non si espongono direttamente, perch le forze
dell'ordine potrebbero risalire facilmente ai computer utilizzati per l'attacco. Gli attaccanti, per evitare di
essere individuati e per disporre di un numero sufficiente di computer per l'attacco, inizialmente infettano
un numero elevato di computer con dei virus o worm che lasciano aperte delle backdoor a loro riservate; i
computer che sono controllati dall'attaccante vengono chiamati zombie.
Ogni computer infettato entra in una botnet utilizzabile dall'attaccante; c un distinguo interessante tra le
macchine che eseguono un Sistema Operativo Windows (definiti, in gergo, rxbot) e quelle che invece eseguono un sistema Unix, particolarmente adatte all'UDP Flooding (Flooding sul protocollo UDP). Una particolarit degli zombies Windows la possibilit, per l'attaccante, di programmare un trojan in grado di diffondersi automaticamente a una serie di contatti presenti sul computer infettato (funzione di autospreading); questi contatti sono contenuti nella rubrica degli indirizzi e nei contatti di programmi di Instant
Messaging, come Microsoft Messenger, e permettono al computer zombie di infettare, in maniera completamente autonoma, altre macchine che, a loro volta, diverranno parte della botnet dell'attaccante.
Quando il numero di zombies ritenuto adeguato, o quando avviene una data condizione, i computer infetti si attivano e sommergono il server bersaglio di richieste di connessione. Con l'avvento della banda larga
il fenomeno dei DDOS sta assumendo proporzioni preoccupanti, dato che attualmente esistono milioni di
persone dotate di una connessione ad Internet molto veloce e permanente ma con scarse o nulle conoscenze
e contromisure riguardanti la sicurezza informatica.
Il danno maggiore dell'attacco di tipo DDoS dovuto principalmente alla "asimmetria" che si viene a creare tra "la" richiesta e le risposte correlate in una sessione DNS (Domain Name System). Il flusso enorme di
risposte generato provocheranno nel sistema una tale "inondazione" di traffico rendendo il server inadeguato alla gestione delle abituali funzioni on-line.
Inoltrando, al Sito preso di mira, una risposta di alcuni Kilobyte, per ogni richiesta contenente solo pochi
byte, si ottiene un'amplificazione esponenziale tale da saturare i canali dati pi capienti, raggiungendo con
il DDoS livelli finora inattuabili con gli altri tipi di attacco DoS.
Le configurazioni predefinite, standard e quelle "consigliate" di firewall contrastano solo gli "attacchi"
sferrati dall'esterno, ad esempio di un'azienda, ma poich il traffico in Rete gestito tramite sistema DNS
vitale, per fronteggiare questo tipo di attacco non si potranno attuare le stesse strategie impiegate nei confronti degli attacchi ai ping.
Quindi il Network manager dovr tenere scrupolosamente sotto controllo e monitoraggio i canali di flusso
dati e, per escludere l'intervento o contrastare l'azione di un cracker, riconfigurer il DNS responsabile del
sito.

11.5.13 Ingegneria sociale


(Da Wikipedia, l'enciclopedia libera, voce Ingegneria sociale)

Nel campo della sicurezza delle informazioni per ingegneria sociale (dall'inglese social engineering) si intende lo studio del comportamento individuale di una persona al fine di carpire informazioni.
Questa tecnica anche un metodo (improprio) di crittoanalisi quando usata su una persona che conosce
la chiave crittografica di un sistema. Similmente al metodo del tubo di gomma pu essere un modo sorprendentemente efficiente per ottenere la chiave, soprattutto se comparato ad altri metodi crittoanalitici.
Con l'evoluzione del software, l'uomo ha migliorato i programmi a tal punto che essi presentano pochi bug
(errori che i programmatori generalmente commettono quando creano un software). Per un cracker sarebbe

140

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

impossibile attaccare un sistema informatico in cui non riesce a trovare bug. Quando ci accade l'unico
modo che il cracker ha per procurarsi le informazioni di cui necessita quello di attuare un attacco di ingegneria sociale.
Un ingegnere sociale (social engineer) se sa fingere, sa ingannare gli altri, in una parola sa mentire. Un
social engineer molto bravo a nascondere la propria identit, fingendosi un'altra persona: in tal modo egli
riesce a ricavare informazioni che non potrebbe mai ottenere con la sua identit reale. Nel caso sia un cracker, pu ricavare informazioni attinenti ad un sistema informatico. Il social engineering quindi una tecnica per ricavare informazioni molto usata dagli hacker esperti e dalle spie, e dato che comporta (nell'ultima fase dell'attacco) il rapporto pi diretto con la vittima, questa tecnica una delle pi importanti per carpire informazioni. In molti casi il cosiddetto ingegnere potr riuscire a ricavare tutto ci che gli serve dalla
vittima ignara.
Il social engineer comincia con il raccogliere informazioni sulla vittima per poi arrivare all'attacco vero e
proprio. Durante la prima fase (che pu richiedere anche alcune settimane di analisi), l'ingegnere cercher
di ricavare tutte le informazioni di cui necessita sul suo bersaglio: e-mail, recapiti telefonici, ecc. Superata
questa fase, detta footprinting, l'ingegnere passer alla fase successiva, cio quella che gli permetter di verificare se le informazioni che ha ricavato sono pi o meno attendibili, anche telefonando all'azienda del
bersaglio e chiedendo cortesemente di parlare con la vittima. La fase pi importante, quella che determiner il successo dell'attacco, lo studio dello stile vocale della persona per la quale vuole spacciarsi (ad esempio cercando di evitare in tutti i modi l'utilizzo di espressioni dialettali e cercando di essere quanto pi
naturale possibile, sempre utilizzando un tono neutro e cortese). In questa fase l'attaccante avr sempre vicino a s i propri appunti con tutte le informazioni raccolte nella fase di footprinting, dimostrandosi pertanto sicuro nel caso gli venisse posta qualche domanda.
Molto spesso il social engineering viene utilizzato per ricavare informazioni su privati (phishing). Un esempio di azione di questo genere pu essere una falsa e-mail, mandata da un aspirante ingegnere sociale
fingendosi magari un amministratore di sistema, o un membro di qualche grosso ente. Vengono richiesti al
malcapitato di turno nome utente e password di un suo account, ad esempio quello di posta elettronica, con
la scusa di fare dei controlli sul database dell'azienda. Se la vittima cade nel tranello, il social engineer ottiene il suo obiettivo, ossia una breccia nel sistema della vittima, da cui potr iniziare una fase di sperimentazione allo scopo di violare il sistema stesso.

11.6 Firewall
Un firewall (parete tagliafuoco) l'incarnazione moderna del fossato pieno d'acqua (e anche di coccodrilli)
e del ponte levatoio che proteggevano gli antichi castelli.
Il principio lo stesso: obbligare tutto ci che transita (esseri umani nell'antichit, traffico di rete oggi) a
passare per un unico punto di ingresso e uscita, dove si possono effettuare gli opportuni controlli.
Un firewall un componente attivo che seziona e collega due o pi tronconi di rete, normalmente la rete
aziendale e quella esterna. In tal modo, tutto il traffico dall'una all'altra parte deve per forza transitare attraverso il firewall e consente di impostare una politica di sicurezza a livello di network.
Con il termine personal firewall invece ci si riferisce a dei programmi (es. Zone Alarm o similari) che
consentono di impostare regole di filtraggio (e quindi una politica di sicurezza) solo a livello di host.
Il firewall quindi un punto obbligato di passaggio tra la rete interna e la rete esterna permette di filtrare i
pacchetti che passano da una parte allaltra sulla base di regole importate dallamministratore di rete con
funzioni di controllo, modifica e monitoraggio.
Criteri tipici di filtraggio dei pacchetti, che possono anche essere combinati fra loro, sono:
- indirizzo IP (o range di indirizzi) di partenza o di destinazione: questo pu servire per connettere fra loro due reti aziendali remote attraverso una rete esterna, ottenendo una cosiddetta extranet;
- numero di port di destinazione: questo pu servire per abilitare soltanto alcuni (ad esempio, si disabilita
in ingresso il port 23: nessuno dalla rete esterna pu fare login su un elaboratore della rete interna). C'
il problema che alcuni servizi (come il Web) sono spesso offerti anche su porte non standard;
- tipo di connessione usata: frequente bloccare tutto il traffico UDP, che pi difficile da analizzare.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

141

Figura 11-1: Tipica configurazione di un firewall


Spesso oltre al firewall si installa sulla rete interna un server proxy, cio un oggetto che agisce da intermediario fra i clienti della rete interna ed i serventi della rete esterna.
Ad esempio, nel caso di un server proxy per il protocollo HTTP (HTTP proxy) i client della rete interna
vengono configurati in modo da fare riferimento all'HTTP proxy e il firewall viene configurato per lasciar
transitare il traffico HTTP da e per l'HTTP proxy.
Quando un utente attiva un link che punta a un server Web della rete esterna succede questo:
- il client apre una connessione col proxy e gli invia la richiesta;
- il proxy (che pu passare dal firewall) apre una connessione con il server Web esterno e gli invia la richiesta del client;
- il server Web esterno invia la risposta al proxy;
- il proxy "gira" la risposta al client.

Figura 11-2: Uso di un HTTP proxy


Il filtraggio del firewall opera a livello IP e TCP, mentre i proxy lavorano a livello di applicazione e consentono quindi di impostare regole di filtraggio basate su tale livello. Inoltre i proxy server hanno una funzione di caching delle pagine pi recenti, in modo da poterle offrire immediatamente se vengono richieste
pi di una volta, aumentando cos l'efficienza e diminuendo l'uso di banda trasmissiva.

11.6.1 Configurazione di firewall Linux


Esistono in commercio firewall dedicati (es. CISCO), tuttavia possibile realizzare un firewall utilizzando
un normale elaboratore (con almeno 2 schede di rete!) con sistema operativo Linux.
Per lavorare meglio, consideriamo il seguente ambiente di riferimento, in cui il nodo firewall verr configurato per collegare a Internet i due nodi interni (saranno ovvie le modifiche da fare se la rete locale interna avesse pi di due nodi).
Client A
hub

Eth
0

firewall

Eth
1

Router
ADSL

Client B
Innanzitutto si devono configurare gli indirizzi IP dei vari nodi e le relative tabelle di routing.

142

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

- ifconfig eth0 192.168.1.1 up netmask 255.255.255.0 (sul firewall, lato interno)


- ifconfig eth1 192.168.0.1 up netmask 255.255.255.0 (sul firewall, lato router ADSL)
- ifconfig eth0 192.168.1.2 up netmask 255.255.255.0 (sul Client A)
- ifconfig eth0 192.168.1.3 up netmask 255.255.255.0 (sul Client B)
Il router ADSL andr configurato con indirizzo 192.168.0.2 e maschera di sottorete sempre 255.255.255.0
dal lato firewall, mentre verso Internet avr un indirizzo IP pubblico e maschera di sottorete fornita dal
provider.
Per assegnare un nome al nodo si utilizza il comando hostname nomenodo su ciascun nodo della LAN.
Per la risoluzione dei nomi interni, si utilizza il file /etc/hosts (in ogni nodo della LAN):
127.0.0.1
192.168.1.1
192.168.1.2
192.168.1.3

localhost localhost.localdomain
firewall
clientA
clientB

Per risolvere i nomi in Internet si deve inserire nel file /etc/conf lindirizzo del DNS server specificato dal
provider:
echo nameserver ip_dns_provider >> /etc/resolv.conf

Successivamente si devono impostare le tabella di routing:


su tutti i nodi: route add -net 192.168.1.0 netmask 255.255.255.0 eth0
su i due client: route add default gw 192.168.1.1
sul firewall: route add -net 192.168.1.0 netmask 255.255.255.0 dev eth1

Una volta configurate le tabelle di routing, necessario impostare le regole di filtraggio. In Linux il filtraggio si imposta utilizzando iptables e per comprenderne meglio il funzionamento importante comprendere come vengono trattati i pacchetti durante il routing.

Figura 11-3: Catene di routing IP


Il pacchetto entra dallinterfaccia esterna e viene sottoposto, prima del processo di routing, allapplicazione
delle direttive presenti nella lista PREROUTING.
Usualmente, in tale processo vengono inserite regole che tendono a evidenziare il pacchetto per distinguerlo dagli altri pacchetti ed eseguire su di esso adeguate operazioni nelle successive fasi del processo di trasporto. Vedremo un esempio di ci quando cercheremo di instradare un pacchetto in base allindirizzo del
sorgente invece che allusuale indirizzo di destinazione. In tale fase vengono anche applicate le regole per
la gestione del destination NAT (DNAT).
Il pacchetto subisce il processo usuale di routing in base alla tabella presente nella macchina locale.
Se il pacchetto, in base alla tabella di routing, destinato alla interfaccia di rete interna vengono applicate
le regole descritte nella lista di FORWARD.
Usualmente sono questi i filtri pi importanti in quanto definiscono cosa pu passare dallesterno verso
linterno e cosa no.
Se il pacchetto destinato, in base alla tabella di routing, alla macchina locale vengono applicate le regole
descritte nella lista di INPUT. Questi filtri proteggono il firewall stesso da accessi indesiderati.
Se il pacchetto ha come sorgente la macchina locale, ossia stato generato da un processo della macchina
locale vengono applicate, al pacchetto, le regole di OUTPUT.
Sia nel caso di forward che di output, prima di uscire dalla scheda di rete interna, il pacchetto subisce
lapplicazione delle direttive di POSTROUTING. In tale fase vengono di solito applicate le regole per il
source NAT (SNAT).
In ognuno di questi passaggi ogni direttiva si chiede sostanzialmente: se lheader del pacchetto verifica
certe condizioni, che cosa devo fare del pacchetto ? La risposta a questa domanda pu essere o di accettare il pacchetto che continua nel suo percorso allinterno delle altre direttive e degli altri step o rigettare il
pacchetto che viene definitivamente buttato via.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

143

In ogni passaggio, se il pacchetto non verifica nessuna delle condizioni impostate, pu essere definita una
regola di default da applicare al pacchetto che verr quindi accettato o rigettato.
Usualmente si ritengono sicuri ed accettabili i pacchetti provenienti dallinterno e destinati verso lesterno
e quindi, in particolare, i pacchetti che hanno come sorgente il firewall saranno permessi e quindi
limpostazione ovvia di default del processo di OUTPUT sar quella di ACCEPT.
Quello che si vuole invece evitare, a meno di eccezioni, e che dallesterno si possa impunemente accedere
verso linterno. Ecco perch usuale impostare a DROP la configurazione di default dei processi di
FORWARD e di INPUT.
Sarebbe un errore lasciare ad ACCEPT queste regole e tentare di chiudere tutti i servizi interni. Il firewall
serve, in particolare, per chiudere tutto, anche quello che neanche si sa di avere aperto. Negando tutto e accettando solo ci che si considera come corretto si sicuri che se dallesterno di accede ad una data risorsa
interna perch siamo stati noi a richiederlo.
Il primo banale script di configurazione del nostro firewall sar quindi (il flag -P imposta per lappunto la
politica di default per il processo):
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

In questo modo tutto il traffico bloccato. Da qui in poi aggiungeremo le regole che consentiranno di accedere ai servizi che si vogliono attivare (politica default deny)
iptables N lan_inet
iptables A FORWARD i eth0 o eth1 j lan_inet

creo una nuova catena che si chiama lan_inet e su questa catena dirotto tutto il traffico in ingresso dalla
scheda eth0 e diretto verso la scheda eth1 (cio il traffico che dalla LAN va verso Internet)
iptables N inet_lan
iptables A FORWARD i eth1 o eth0 j inet_lan

creo una nuova catena che si chiama inet_lan e su questa catena dirotto tutto il traffico in ingresso dalla
scheda eth1 e diretto verso la scheda eth0 (cio il traffico che da Internet va verso la LAN)
Utilizzare regole basate sulle interfacce fisiche da cui provengono o verso cui sono instradati i pacchetti
pi sicuro rispetto allutilizzo di regole basate sugli indirizzi IP, perch ci protegge da situazioni di IP spoofing.
iptables A lan_inet p tcp --dport 80 j ACCEPT
iptables A lan_inet p tcp --dport 53 j ACCEPT
iptables A lan_inet p udp --dport 53 j ACCEPT

Queste regole abilitano linoltro dei pacchetti che transitano dalla LAN verso Internet se contengono segmenti TCP che sono diretti alla porta 80 o 53 oppure segmenti UDP diretti alla porta 53 del nodo di destinazione. Si tratta di pacchetti generati da un client Web o pacchetti diretti a un DNS server.
iptables A lan_inet p tcp j REJECT -reject-with tcp-reset

Questa regola (lultima della catena) serve a inviare un segmento TCP di reset ai nodi che inviano pacchetti
contenenti segmenti TCP che non verranno inoltrati. In questo modo lapplicazione capisce subito che la
porta chiusa, e si evitano ulteriori tentativi.
iptables A inet_lan m state --state ESTABLISHED, RELATED j ACCEPT

Questa regola consente alle connessioni attivate dallinterno di poter ricevere le risposte che provengono
dallesterno.
iptables A inet_lan p tcp j REJECT -reject-with tcp-reset

Questa regola (lultima della catena) serve a inviare un segmento TCP di reset ai nodi che inviano pacchetti
contenenti segmenti TCP che non verranno inoltrati. In questo modo lapplicazione capisce subito che la
porta chiusa, e si evitano ulteriori tentativi.
iptables t nat I POSTROUTING s 192.168.1.0/24 o eth1 j MASQUERADE

Questultima regola serve a abilitare il NAT sui pacchetti che escono verso Internet.
Per consentire invece laccesso dallesterno a un servizio interno alla rete si deve abilitare il D-NAT.
Lesempio che segue abilita laccesso a un server Web:
iptables t nat A PREROUTING p tcp d <IP PUBBLICO> --dport 80 j DNAT --todestination <IP PRIVATO>

11.7 IDS (Intrusion Detection System)


(Da Wikipedia, l'enciclopedia libera, voce Intrusion Detection System)

144

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

L'Intrusion Detection System o IDS un dispositivo software e hardware (a volte la combinazione di tutti e
due, sotto forma di sistemi stand-alone pre-installati e pre-configurati) utilizzato per identificare accessi
non autorizzati ai computer o alle reti locali. Le intrusioni rilevate possono essere quelle prodotte da cracker esperti, da tool automatici o da utenti inesperti che utilizzano programmi semiautomatici. Gli IDS
vengono utilizzati per rilevare tutti gli attacchi alle reti informatiche e ai computer. Questi attacchi includono gli attacchi alle reti informatiche tramite lo sfruttamento di un servizio vulnerabile, attacchi attraverso
l'invio di dati malformati e applicazioni malevole, tentativi di accesso agli host tramite innalzamento illecito dei privilegi degli utenti, accessi non autorizzati a computer e file, e i classici programmi malevoli come
virus, trojan e worm.
Un IDS composto da quattro componenti. Uno o pi sensori utilizzati per ricevere le informazioni dalla
rete o dai computer. Una console utilizzata per monitorare lo stato della rete e dei computer e un motore
che analizza i dati prelevati dai sensori e provvede a individuare eventuali falle nella sicurezza informatica.
Il motore di analisi si appoggia ad un database ove sono memorizzate una serie di regole utilizzate per identificare violazioni della sicurezza. Esistono diverse tipologie di IDS che si differenziano a seconda del
loro compito specifico e delle metodologie utilizzate per individuare violazioni della sicurezza. Il pi semplice IDS un dispositivo che integra tutte le componenti in un solo apparato.
Un IDS consiste quindi in un insieme di tecniche e metodologie realizzate ad-hoc per rilevare pacchetti sospetti a livello di network, di trasporto o di applicazione. Due sono le categorie base: sistemi basati sulle
firme (signature) e sistemi basati sulle anomalie (anomaly). La tecnica basata sulle firme in qualche modo analoga a quella per il rilevamento dei virus, che permette di bloccare file infetti e si tratta della tecnica
pi utilizzata. I sistemi basati sul rilevamento delle anomalie utilizzano un insieme di regole che permettono di distinguere ci che "normale" da ci che "anormale". importante sapere che un IDS non pu
bloccare o filtrare i pacchetti in ingresso ed in uscita, n tanto meno pu modificarli. Un IDS pu essere
paragonato ad un antifurto ed un firewall ad una porta blindata. L'IDS non cerca di bloccare le eventuali
intrusioni, cosa che spetta al firewall, ma cerca di rilevarle laddove si verifichino.
Le attivit e i campi di applicazione di un Intrusion Detection System sono vari, al punto che spesso vengono gestiti da diversi software, che nel loro insieme provvedono ad accorgersi dei tentativi di attacco o
scansione di un sistema, prevedere meccanismi di notifica e reazione secondo eventi anche proattivi in
grado di bloccare sul nascere le comunicazioni con IP da cui arrivano pacchetti ostili. I meccanismi di individuazione di attivit sospette sono diversi, ma generalmente si concentrano su:
- verifica dei log di sistema o di specifici programmi per individuare attivit anomale;
- controllo dell'integrit dei file locali (modifiche sospette sono sintomi di una avvenuta irruzione);
- monitoring dei pacchetti destinati all'host, sia per reagire a pattern di attacco noti che per accorgersi di
un port scan remoto, generalmente prologo di un tentativo di intrusione.
Gli IDS si possono suddividere anche a seconda di cosa analizzano, esistono gli IDS che analizzano le reti
locali, quelli che analizzano gli Host e gli IDS ibridi che analizzano la rete e gli Host.
Un Network Intrusion Detection System (o Nids) analizza il traffico di rete per identificare intrusioni,
permettendo quindi di monitorare non solo un singolo host ma una rete completa. Si tratta di un sistema
che legge (in gergo 'sniffa') il traffico che passa su un segmento di rete dov' attestato, cercando tracce di
attacchi. Il suo funzionamento regolato in base a due principi: il signature matching con cui l'ids cattura il
traffico e lo confronta con un database di firme di attacchi (database costantemente aggiornato dal produttore dell'ids) e il network analysis che entra in funzione quando il signature matching fallisce e che in
grado di rilevare anomalie nei flussi di traffico e quindi di rilevare anche quegli attacchi che non sono ancora stati scoperti come tali. Un esempio di Network INtrusion Detection System Snort, uno degli IDS
pi conosciuti.
Un Host based Intrusion Detection System consiste in un agente che analizza l'Host alla ricerca di intrusioni. Le intrusioni vengono rilevate analizzando i file di log del sistema, le system call, le modifiche al file
system del computer (modifiche nel file delle password, nel database degli utenti e della gestione dei privilegi, ecc), e altre componenti del computer. Un esempio di questa tipologia Aide.
Un Hybrid Intrusion Detection System combina i due approcci. Le informazioni recuperate dagli agenti
in esecuzioni negli Host vengono integrate con le informazioni prelevate dalla rete locale. Un esempio di
IDS ibrido Prelude.
Gli IDS si suddividono in due ulteriori categorie, gli IDS passivi e degli IDS attivi. I primi IDS quando rilevano una violazione della sicurezza informatica provvedono a notificarla all'operatore tramite la console
ed eventualmente gli inviano una email. Gli IDS attivi oltre a notificare all'operatore una violazione della

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

145

sicurezza provvedono a prendere delle opportune contromisure per eliminare o comunque isolare la violazione informatica.
Nei sistemi attivi l'eliminazione della violazione si ottiene usualmente riprogrammando la lista di controllo
degli accessi del firewall in modo da impedire l'accesso agli indirizzi responsabili dell'attacco. Questa tipologia di IDS va accuratamente programmata dato che una falsa identificazione potrebbe bloccare un utente
autorizzato.
Il firewall non in grado di bloccare violazioni della sicurezza che avvengono dall'interno della rete locale.
A questo scopo sono stati sviluppati gli Intrusion prevention system. Questi componenti contengono delle
liste programmate dall'IDS che vengono utilizzate per decidere se un programma pu essere eseguito. Questi componenti impediscono a worm o virus di diffondersi nei vari computer dato che il componente ne
impedisce l'attivazione.

11.8 Protezione delle informazioni durante il transito sulla rete


Esistono ulteriori problemi legati alla sicurezza, che non si possono risolvere semplicemente con meccanismi basati sull'uso di password.
Essi possono essere divisi nelle seguenti aree, collegate fra loro:
- segretezza: si desidera inviare delle informazioni riservate, in modo che solo il destinatario sia in grado
di leggerle;
- autenticazione del mittente: si vuole essere sicuri che colui col quale si dialoga sia veramente chi dice
di essere;
- integrit del messaggio: si vuole esseri sicuri che il messaggio che arriva non sia stato manomesso durante il viaggio.
Nel campo dell'informatica e soprattutto delle reti, dove da un lato possibile facilmente creare copie (e
anche modificarle) di documenti e dall'altro non si pu escludere che Trudy (ovvero un intruso) intercetti le
informazioni in transito sulla rete, tutto pi difficile che nella vita quotidiana, dove esistono al proposito
meccanismi consolidati (buste sigillate, documenti di identit, autenticazione dei documenti).
E ci soprattutto vero in una rete come Internet, dove esiste la necessit di dialogare con entit precedentemente sconosciute e ci sono potenzialmente in ogni momento molte Trudy all'ascolto, pronte a rubare informazioni e a sfruttarle a proprio vantaggio.
I problemi precedenti possono essere risolti con un protocollo crittografico, che consiste in una serie di
passi nei quali si utilizzano le tecnologie seguenti: crittografia e firme digitali.

11.8.1 Crittografia
Storicamente, sono stati quattro i gruppi di persone che hanno dato il loro contributo allarte della crittografia: i militari, il corpo diplomatico, gli scrittori di diari e gli amanti. (Da Reti di Computer di Andrew
S. Tanenbaum)
La crittografia (o scrittura nascosta) la disciplina che si occupa di studiare le tecniche per scrivere un
messaggio in modo tale che solo il legittimo destinatario sia in grado di leggerlo. Si occupa dunque del
problema della segretezza.
La scienza della crittografia stata impiegata fino a qualche anno fa quasi esclusivamente in ambiente diplomatico e militare. Come gi accaduto per Internet, tuttavia, la crittografia moderna da pochi anni uscita dalle nebbie oscure dellambiente militare diffondendosi pian piano nei pi svariati settori della nostra
societ ed andando a costituire il principale strumento di sicurezza in campo informatico.
La segretezza delle informazioni ha assunto, quindi, notevole importanza soprattutto a seguito
dellespansione di Internet, con milioni di comuni cittadini che utilizzano la rete per operazioni bancarie,
commerciali e fiscali.
I requisiti principali di tale tecnica sono:
- ragionevole efficienza nella creazione del messaggio;
- estrema difficolt nella interpretazione del messaggio da parte di chi non autorizzato;
- possibilit di cambiare con estrema rapidit il metodo usato.
Una prima possibilit stabilire un metodo di trasformazione (cifratura o encryption) del messaggio originale e un corrispondente metodo di interpretazione (decifratura o decryption) che vengono tenuti gelosamente segreti, e sono noti solo alle persone autorizzate.

146

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

Figura 11-4: Cifratura e decifratura


Ad esempio, un banale metodo di trasformazione (segreto) pu essere il seguente: sostituire ogni carattere
con quello che, nell'alfabeto, lo segue immediatamente (con wrap-around).
Questo approccio per non soddisfa il terzo requisito, perch per cambiare metodo lo si deve riprogettare
completamente. Per questo motivo, si ricorre invece a uno schema diverso, che consiste in un metodo di
cifratura e uno di decifratura che sono noti a tutti, ma sono parametrizzati da una chiave che deve essere
data loro in input assieme al messaggio e da una sequenza di bit, detta chiave, che nota solo alle persone
autorizzate.
Di fatto il metodo di cifratura una funzione E che accetta in ingresso il testo in chiaro (plaintext) P e
una chiave k, producendo il testo cifrato (ciphertext) C:
C = E(P,k)
e che normalmente si indica come:
C = Ek(P)
Quindi, per ogni valore possibile della chiave si ottiene un diverso metodo di cifratura.
A titolo di esempio: il metodo di cifratura (pubblico): sostituire ogni carattere con quello che lo segue a distanza k (con wrap-around), in questo caso la chiave (segreta) sarebbe il valore k.
Il metodo di decifratura un'altra funzione (ovviamente collegata alla prima) che accetta in ingresso il testo cifrato C, una chiave k e ritorna il testo in chiaro originale P:
P = Dk(C)
Ovviamente, si dovr avere che:
Dk(Ek(P)) = P
Come vedremo, non detto che si debba usare la stessa chiave nelle due fasi.
Il modello risultante il seguente:

Figura 11-5: Cifratura e decifratura basate su chiave


Trudy pu essere passiva (ascolta soltanto) o attiva (ascolta ed altera i messaggi che intercetta).
La crittografia, come abbiamo detto, si occupa di trovare buoni metodi per effettuare la cifratura e la deci-

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

147

fratura. La criptoanalisi (cryptoanalysis) invece si occupa di scoprire modi per decifrare i messaggi pur
non conoscendo le regole note alle persone autorizzate (in particolare, la chiave).
Questa operazione pu essere portata avanti in due modi:
- provare ad applicare al testo cifrato il metodo di decifratura con tutti i possibili valori della chiave. Questo approccio, detto di forza bruta, produce certamente il testo in chiaro originale prima o poi, ma
ovviamente molto oneroso, ed anzi lo tanto pi quanto lunga la chiave (ad esempio con 128 bit di
chiave, ci sono 2128 prove da effettuare);
- scoprire le eventuali debolezze delle funzioni E e D, per ridurre lo spazio delle chiavi da esplorare.
Ci sono due principi fondamentali che ogni metodo di cifratura deve rispettare:
- i messaggi originali devono contenere della ridondanza: se cos non fosse, ogni possibile messaggio cifrato sarebbe comunque valido e Trudy potrebbe quindi inviarne a piacere, dato che a destinazione essi
verrebbero considerati autentici dopo essere stati decifrati;
- i messaggi originali devono contenere qualcosa (ad esempio un time stamp) che impedisca a Trudy di
rispedire nuovamente un messaggio valido. Altrimenti, ogni volta che Trudy intercetta un messaggio
pu inviarlo nuovamente per i propri scopi.

11.8.2 Crittografia a chiave segreta (o simmetrica)


In questo tipo di crittografia, il mittente e il destinatario (Alice e Bob) si accordano, ad esempio incontrandosi di persona lontano da occhi indiscreti, su una singola chiave che verr usata sia in fase di cifratura che
di decifratura.

Figura 11-6: Crittografia a chiave segreta


L'algoritmo pi diffuso in questa categoria il DES (Data Encryption Standard), inventato dall'IBM e
adottato come standard del governo U.S.A. nel 1977.
Il testo in chiaro codificato in blocchi di 64 bit, che producono ciascuno 64 bit di testo cifrato (cifratura
a blocchi).
L'algoritmo parametrizzato da una chiave di 56 bit e consiste di ben 19 stadi, in ciascuno dei quali si opera una trasformazione dell'output dello stadio precedente.
Inoltre, in 16 dei 19 stadi la trasformazione effettuata funzionalmente identica, ma parametrizzata da
opportune trasformazioni della chiave.
Il DES stato al centro di controversie sin dal giorno in cui nato, perch il progetto originale IBM prevedeva chiavi da 128 bit invece che da 56 bit, ma i militari U.S.A. "suggerirono" attraverso l'NSA (National
Security Agency, detta anche malignamente No Such Agency) tale riduzione. Secondo molti, la riduzione
fu motivata dall'esigenza di mantenere la capacit (con opportune potenti macchine) di rompere il codice.
Oggi il DES non pi considerato sicuro, in quanto recenti tecniche di criptoanalisi differenziale hanno
ridotto lo spazio di ricerca a 243 possibilit;
Una sua variante, il Triple DES, per a tutt'oggi considerato sicuro, in quanto non si conosce alcun modo
di romperlo. Il meccanismo il seguente.

148

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

Figura 11-7: Triple DES


Questo schema, ponendo k1=k2, garantisce la compatibilit all'indietro col normale DES.
Effettivamente il Triple DES costituisce un codice per il quale l'approccio della forza bruta richiede 2 112
tentativi: anche con un miliardo di chip che effettuano un miliardo di operazioni al secondo, ci vorrebbero
100 milioni di anni per la ricerca esaustiva.
Il DES funziona alla velocit di 2,5 MBit/sec su un Pentium Pro a 200 MHz, e fino a 64 MBit/sec su
hardware specializzato.
Un altro importante algoritmo a chiave segreta IDEA (International Data Encryption Algorithm).
Esso fu progettato nel '90 in Svizzera, e per questa ragione non soggetto alle limitazioni sull'uso e sull'esportazione che esistono in U.S.A. (dove gli algoritmi di cifratura sono a tutti gli effetti di legge considerati
armi da guerra).
Come il DES, IDEA effettua una cifratura a blocchi (di 64 bit), ma usa una chiave di 128 bit e consiste di
otto stadi, nei quali ogni bit di output dipende da tutti i bit in input (il che non vale per il DES).
Non sono noti risultati di criptoanalisi che lo indeboliscono.
IDEA funziona alla velocit di 2 MBit/sec su un Pentium Pro a 200 MHz e a 22 MBit/sec su hardware specializzato.

11.8.3 Crittografia a chiave pubblica


Un problema di fondo affligge la crittografia a chiave segreta quando aumenta il numero di persone che
vogliono essere in grado di comunicare fra loro: poich ogni coppia di persone deve essere in possesso di
una corrispondente chiave, se N persone desiderano comunicare fra loro ci vogliono N(N-1)/2 chiavi, cio
una per ogni coppia.
Ci rende estremamente difficile il problema della distribuzione delle chiavi, che resta il punto debole di
tutto il sistema.
Nella seconda met degli anni '70 fu introdotto (Diffie e Hellmann, Stanford University) un tipo di crittografia radicalmente nuovo, detto a chiave pubblica (o asimmetrica).
L'idea questa: ognuno possiede due chiavi, legate una all'altra, una la chiave privata, nota solo al proprietario e l'altra la chiave pubblica, nota a tutti. Ci che viene cifrato con la chiave pubblica pu essere
decifrato con quella privata (e di solito viceversa) e deve essere praticamente impossibile (cio possibile
solo con costi o tempi troppo elevati) derivare la prima chiave anche se si conosce la seconda.
Usando la crittografia a chiave pubblica ognuno ha la sua coppia di chiavi e quindi per un gruppo di N persone sono necessarie solo 2N chiavi.
Il funzionamento, per ottenere la segretezza, questo:
- Alice cifra il messaggio con la chiave pubblica di Bob (che nota a tutti);
- Bob decifra il messaggio con la propria chiave privata (che nota solo a lui).

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

149

Figura 11-8: Riservatezza mediante crittografia a chiave pubblica


La crittografia a chiave pubblica fornisce anche un meccanismo per garantire l'autenticazione del mittente, cio la garanzia che esso provenga veramente dall'autore e non da qualcun altro, e l'integrit del messaggio, cio la garanzia che il messaggio non sia stato alterato.
In questo caso si opera alla rovescia:
- Alice cifra il messaggio con la propria chiave privata;
- Bob lo decifra con la chiave pubblica di Alice.

Figura 11-9: Autenticazione mediante crittografia a chiave pubblica


In questo caso non c' segretezza, dato che chiunque pu decifrare il messaggio, ma nessuno se non Alice
avrebbe potuto costruirlo, ed inoltre nessuno pu averlo alterato.

11.8.4 Matematica nella crittografia a chiave pubblica: aritmetica modulare


L'aritmetica modulare studia gli usuali resti delle divisioni aritmetiche. Si dice cos che: Q il quoziente
della divisione fra il dividendo X e il divisore m, mentre R il resto. Siccome nell'aritmetica modulare il
quoziente irrilevante, in luogo della usuale notazione impiegata per la divisione, si preferisce questa notazione: X(mod m)=R, e si dice: "X mod m uguale a R" (ad esempio, 10(mod 4) = 2)
Con riferimento alla notazione: X(mod m)=R, valgono le seguenti propriet:
- sempre R < m
- tutti i possibili resti sono una quantit pari ad m e con valori compresi fra 0 ed m-1
- se X < m allora X(mod m)=X
- X(mod X)=0 ovvero m(mod m)=0
- X(mod (X-1))=1 ovvero (m+1)(mod m)=1
- X(mod 1)=0
- 0(mod m)=0.
Inoltre valgono le seguenti propriet:
- (X+Y)(mod m)=X(mod m)+Y(mod m), e cio: il resto di una somma pari alla somma dei resti
- (X Y)(mod m)=X(mod m) Y(mod m), e cio: il resto di un prodotto pari al prodotto dei resti.
Essendo resti, se uno dei due membri di un'equivalenza maggiore o uguale a m, vuol dire che non un
resto, per cui occorre ancora dividerlo per m.
Esempi:
- 17(mod 5)=2=(10+7)(mod 5)=10(mod 5)+7(mod 5)=0+2=2
- 17(mod 5)=2=(9+8)(mod 5)=9(mod 5)+8(mod 5)=4+3=7=7(mod 5)=2
- 24(mod 5)=4=(6*4)(mod 5)=6(mod 5) 4(mod 5)=1*4=4
- 24(mod 5)=4=(8*3)(mod 5)=8(mod 5) 3(mod 5)=3*3=9=9(mod 5)=4.
L'equivalenza sul prodotto, conduce alla notevole equivalenza sul quadrato: il resto di un quadrato pari al

150

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

quadrato del resto. infatti:


X2 (mod m) = (X*X)(mod m) = X(mod m)*X(mod m) = R*R = R2
Es.: 252(mod 11) = 625(mod 11) = 9 = (25(mod 11))2 = 32 = 9
Questa propriet sul resto di un quadrato, di importanza fondamentale nell'ambito della crittografia a
chiave pubblica con numeri primi, perch pu essere utilizzata per calcolare il resto di divisioni che sarebbe impossibile realizzare anche con un supercomputer.
Es.: 4411183 (mod 2867)=2515
Si inizia effettuando la scomposizione binaria dellesponente
In particolare:
1183 = 1024 + 128 + 16 + 8 + 4 + 2 + 1 = 210 +27 + 24 +23+22+21+20
Applicando ora la propriet sul resto di un prodotto:
4411183 (mod 2867)=(441 4412 4414 4418 44116 441128 4411024)(mod 2867)=
= 441(mod 2867) 4412(mod 2867) 4414(mod 2867) 4418(mod 2867) 44116(mod 2867) 441128(mod 2867)
4411024(mod 2867)
Applicando ora la propriet sul resto di un quadrato, possibile determinare i singoli resti.
441(mod 2867) = 441
4412(mod 2867) = 4412=194481 (>2867, riapplico il mod) -> 194481(mod 2867)=2392
4414(mod 2867) = 23922=5721664 (>2867, riapplico il mod) -> 5721664 (mod 2867)=1999
4418(mod 2867) = 19992=3996001 (>2867, riapplico il mod) -> 3996001 (mod 2867)=2270
44116(mod 2867) = 22702=5152900 (>2867, riapplico il mod) -> 5152900 (mod 2867)=901
44132(mod 2867) = 9012=811801 (>2867, riapplico il mod) -> 811801 (mod 2867)=440
44164(mod 2867) = 4402=193600 (>2867, riapplico il mod) -> 193600 (mod 2867)=1511
441128(mod 2867) = 15112=2283121 (>2867, riapplico il mod) -> 2283121 (mod 2867)=989
441256(mod 2867) = 9892=978121 (>2867, riapplico il mod) -> 978121 (mod 2867)=474
441512(mod 2867) = 4742=224676 (>2867, riapplico il mod) -> 224676 (mod 2867)=1050
4411024(mod 2867) = 10502=1102500 (>2867, riapplico il mod) -> 1102500 (mod 2867)=1572
In conclusione sar:
4411183 (mod 2867)=(441*2392*1999*2270*901*989*1572)(mod 2867)=2515
Nella crittografia a chiave pubblica il procedimento di cifratura noto a tutti, come pure nota la chiave
pubblica. La sicurezza del messaggio legata da un lato alla sicurezza della chiave privata, dallaltro
allimpossibilit di calcolare per estrapolazione dei valori ignoti (testo cifrato) a partire da quelli noti (testo
in chiaro) della funzione matematica che le lega. Per questo motivo si ricorre alle funzioni modulari, che
hanno un andamento irregolare e difficilmente prevedibile.
La struttura di una funzione modulare la seguente
C=EP(mod m)
dove:
- E ed m sono delle costanti numeriche
- C la variabile dipendente
- P la variabile indipendente.
Siccome C un resto, e dato che si pensa di dover far ricorso alla funzione modulare inversa, in cui essendo P la variabile dipendente, anche P un resto, allora C e P sono due numeri (0, 1, 2, 3, ..) naturali, con
valori compresi fra 0 ed (m-1).
La funzione C=EP(mod m) invertibile solo se E ed m sono primi fra loro, ovvero solo se E ed m non
hanno alcun fattore in comune.
Esempio: C=4P(mod 7) e relativa tabella di valori:
P
C

0
0

1
4

2
1

3
5

4
2

5
6

6
3

con il tipico andamento disordinato delle funzioni modulari.


La funzione inversa vale: P=2C(mod 7), come pu essere verificato, "entrando", nella tabella dei valori di
cui sopra, questa volta dalla colonna di destra.
Se E ed m sono primi fra loro, la conoscenza della forma esplicita di una data funzione modulare
C=EP(mod m), rende sempre possibile la determinazione della funzione inversa P=DC(mod m).
Con riferimento intanto alla notazione X(mod m)=R, con D pari a una costante, :
- DX(mod m)=DR(mod m), e cio: una data uguaglianza modulare rimane tale anche se si moltiplicano
entrambi i membri per una stessa quantit

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

151

- (D+X)(mod m)=(D+R)(mod m) e cio: una data uguaglianza modulare rimane tale anche se si aggiunge
ad entrambi i membri una stessa quantit.
Applicando infatti rispettivamente le propriet sul resto di un prodotto e sul resto di una somma :
- DX(mod m)=D(mod m) X(mod m)=D(mod m) R=DR(mod m)
- (D+X)(mod m)=D(mod m)+X(mod m)=D(mod m)+R=(D+R)(mod m).
Se si considera allora la funzione modulare C=EP(mod m), per quanto appena detto sono dunque giustificati i passaggi:
- C=EP(mod m)
- DC(mod m)=DEP(mod m)=P(DE(mod m)).
Basta dunque cercare una D tale che: DE(mod m)=1, perch cos la funzione inversa vale:
- P=DC(mod m).
importante sottolineare che D esiste solo se E ed m sono primi fra loro.
Esempi:
Se si considera la funzione vista C=4P(mod7), essendo 4 e 7 primi fra loro, per poterla invertire basta trovare una D tale che: 4D(mod 7)=1.
Come pu essere facilmente verificato D=2, per cui :
- P=2C(mod 7).
Se si considera ora la funzione C=11P(mod 10800, essendo 11 e 10800 primi fra loro, per poterla invertire
basta trovare una D tale che: 11D(mod 10800)=1.
Come pu essere facilmente verificato D=5891, per cui :
- P=5891C(mod 10800).
Nel primo caso la determinazione di D intuitiva ed immediata, mentre nel secondo no.
Esiste un algoritmo che consente di giungere alla determinazione di D con tempi di elaborazione ragionevoli, anche quando il resto ha un enorme numero di cifre.
Sapendo che D, numero naturale, deve sottostare alla condizione DE(mod m)=1, se si indica con QUOZ il
risultato della divisione fra DE e m, dovendo essere DE=m*QUOZ+1, si pu implementare un'iterazione
con QUOZ che avanza a partire da 1, arrestando l'algoritmo non appena il risultato (e non il resto) della divisione (m*QUOZ+1)/E un numero naturale, numero che poi D.
Per la funzione sopra considerata, ovvero C=11P(mod 10800), l'algoritmo si arresta dopo appena 6 iterazioni. Con QUOZ=6 dunque D=5891.
La funzione di Eulero N(m) di un numero naturale m definita come il numero di naturali (con 1 sempre
incluso) compresi fra 1 ed m-1, che non hanno fattori in comune con m.
Se m un numero primo, naturalmente : N(m)=m-1.
Se m pari al prodotto di due numeri primi, p e q, N(m)=N(pq)=(p-1)(q-1)
Se m pari al prodotto di tre numeri primi, p, q e z , N(m)=N(pqz)=(p-1)(q-1)(z-1)
e cos via.
L'importanza del funzione di Eulero N(m) nell'ambito della crittografia a chiave pubblica, sta proprio nella
semplicit con cui possibile determinarla, anche quando m il prodotto di due numeri primi molto grandi.
La struttura di una funzione modulare esponenziale la seguente: C=PE(mod m)
come prima:
- E ed m sono delle costanti numeriche
- C la variabile dipendente
- P la variabile indipendente.
Come prima C un resto, e dato che si pensa di dover far ricorso alla funzione modulare esponenziale inversa, in cui P ad essere la variabile dipendente, anche P un resto.
E allora C e P sono due numeri naturali (0, 1, 2, 3, ..), con valori compresi fra 0 ed (m-1).
Ora per la funzione C=PE(mod m) invertibile solo se E ed N(m) sono primi fra loro, ovvero solo se E ed
N(m) non hanno alcun fattore in comune.
Con riferimento intanto alla notazione X(mod m)=R, con D pari a una costante, :
XD (mod m) = RD (mod m)
e cio: una data uguaglianza modulare rimane tale anche se si "elevano" entrambi i membri ad una stessa
quantit.
infatti:
XD (mod m) = (X*X*)(mod m) = X(mod m)* X(mod m)*= R*R* =RD (mod m)

152

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

Se infine si fa riferimento al teorema della Teoria dei numeri che asserisce


C=PE (mod m) =PE(mod N(m)) (mod m)
da cui segue
CD=(PE (mod m) =(PE(mod N(m)) (mod m))D = PDE(mod N(m)) (mod m)
Per invertire la funzione modulare esponenziale basta dunque cercare una D tale che: DE(mod N(m))=1,
perch cos la funzione inversa vale P=CD (mod m)
importante sottolineare che D esiste solo se E ed N(m) sono primi fra loro.

11.8.5 Algoritmo RSA


L'algoritmo a chiave pubblica pi noto ed usato l'algoritmo RSA (dalle iniziali degli autori Rivest, Shamir e Adleman), nato nel 1978, che si basa proprio sul teorema di Eulero:
Dati due numeri primi p e q, vale la relazione:
x(p-1)(q-1) = 1 mod p*q
per ogni x tale che MCD(x, p*q) = 1.
Lefficacia dellalgoritmo RSA risiede nella enorme difficolt di trovare la fattorizzazione di un grande
numero (si stima che serva un miliardo di anni di tempo macchina per fattorizzare un numero di 200 cifre,
e 1025 anni per un numero di 500 cifre).
Schematicamente, l'algoritmo funziona cos:
- scegliere due grandi numeri primi p e q (tipicamente maggiori di 10100);
- calcolare n = p*q e z = (p - 1)*(q - 1);
- scegliere un numero d primo relativamente a z;
- trovare il numero e tale che e*d = 1 mod z;
A questo punto il procedimento prevede utilizzare come chiave pubblica la coppia (e, n) e come chiave
privata la coppia (d, n).
La cifratura e la decifratura vengono effettuate nel seguente modo:
- si divide il testo da cifrare in blocchi tali che, considerandoli come numeri binari, ogni blocco abbia un
valore 0 <= P < n (basta cio usare blocchi di k bit , con 2k < n);
- per cifrare un blocco P, calcolare C = Pe mod n;
- per decifrare un blocco C, calcolare P = Cd mod n.
Pu essere dimostrato che, per tutti i blocchi nell'intervallo specificato, le due funzioni sono inverse.
Quindi, si pu anche cifrare con la chiave privata e decifrare con quella pubblica.
Si noti che se non fosse difficile fattorizzare n (che noto a tutti), Trudy potrebbe facilmente trovare p e q,
e da questi z; una volta determinati z ed e (anch'esso noto a tutti), trovare d con l'algoritmo di Euclide.
Senza conoscere la chiave privata, per un crittoanalista impossibile decifrare il codice tentando, a partire
da un insieme limitato di valori della variabile dipendente C, di calcolare per estrapolazione i valori ignoti
rimanenti, al fine di risalire alla funzione inversa P.
Essendo infatti la funzione C, ad andamento disordinato, per poterla invertire occorre disporre di tutto l'insieme dei valori di arrivo della funzione C, che, in realt, un insieme titanico, visto che m un numero a
200 cifre decimali. Ad un resto m corrispondono infatti m resti.
Se ad esempio m un numero a tre cifre, i possibili resti sono un numero compreso tra 0 e 999.
Nel 1994 RSA stato rotto, in risposta ad una sfida degli autori pubblicata su Scientific American. Il procedimento si rifer a una chiave di 129 cifre (426 bit), e furono impiegati 1600 elaboratori su Internet per 8
mesi, per un totale di 5000 anni di calcolo a 1 MIPS (milione di istruzioni al secondo).
Pi recentemente la sfida RSA-155 basata su un numero da 512 bit (155 numeri decimali) ha visto impegnati 301 elaboratori in rete (300 fra Workstation e PC pentium, 1 Cray supercomputer) ed ha portato alla
soluzione della fattorizzazione in un tempo di 7 mesi.
D'altronde, poich RSA lavora con i numeri, la grandezza della chiave variabile e pu essere aumentata a
piacere, per controbilanciare gli effetti derivanti dal miglioramento delle prestazioni degli elaboratori.
Infine, poich gli algoritmi a chiave pubblica sono molto pi onerosi computazionalmente di quelli a chiave segreta (di un fattore da 100 a 1000), essi sono usati soprattutto per negoziare in modo sicuro (come vedremo fra breve) una chiave segreta, detta chiave di sessione, da usare nel corso della comunicazione vera
e propria la cui riservatezza viene protetta con un algoritmo quale DES o IDEA.

11.8.6 Funzioni hash e firme digitali


Come abbiamo visto, la crittografia a chiave pubblica pu essere usata per autenticare l'origine di un messaggio e per garantirne l'integrit, ossia di fatto per firmare un messaggio.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

153

Per, a causa del costo computazionale, questo approccio sembra eccessivo: cifrare tutto il messaggio solo
per firmarlo poco efficiente. Inoltre, scomodo rendere l'intero documento illeggibile ove solo una firma
sia richiesta.
Ambedue i problemi si risolvono con una tecnica diversa e pi efficiente, che per introduce un piccolo rischio in termini di sicurezza.
La tecnica in questione si basa sull'uso delle funzioni hash (dette anche funzioni digest, cio funzioni riassunto) che vengono applicate al messaggio e ne producono, appunto, un riassunto (message digest).
Tale riassunto in generale di lunghezza ridotta, tipicamente fra i 10 e i 20 byte, indipendentemente dalla
lunghezza del messaggio originario.

Figura 11-10: Calcolo del riassunto del messaggio


Per essere adatta allo scopo, la funzione hash deve possedere i seguenti requisiti:
- computazionalmente poco oneroso calcolare MD(P);
- dato MD(P) praticamente impossibile risalire a P;
- praticamente impossibile trovare due documenti P1 e P2 tali per cui MD(P1) = MD(P2). Si noti che
questo requisito non discende dalla propriet precedente.
Per soddisfare l'ultimo requisito il riassunto deve essere piuttosto lungo, almeno 128 bit. Ad ogni modo,
chiaro che dal punto di vista teorico non possibile garantire che il requisito sia sempre soddisfatto, poich
in generale la cardinalit dello spazio dei messaggi molto superiore a quella dello spazio dei riassunti.
L'algoritmo pi diffuso per la generazione del message digest MD5 (Message Digest 5, Rivest 1992), il
quinto di una serie. definito nell'RFC 1321. Produce digest di 128 bit, ognuno dei quali funzione di tutti i
bit del messaggio. Funziona a circa 7 MBit/sec su un Pentium Pro a 200 MHz.
Un primo e semplice schema di utilizzo del message digest il seguente, volto a garantire l'integrit del
messaggio, ovvero a garantire che il messaggio che giunge a destinazione sia identico a quello che stato
inviato:

Figura 11-11: Uso del digest per il controllo di integrit del messaggio
Alice invia il messaggio corredato del riassunto; quando Bob riceve il tutto, ricalcola il riassunto e lo confronta con quello ricevuto.
Ovviamente, questa semplice modalit esposta all'attacco di Trudy, che potrebbe intercettare il messaggio, sostituirlo con uno diverso correlato del relativo digest, e inviarlo a Bob come se fosse quello proveniente da Alice.
Per risolvere questo problema si ricorre a uno schema leggermente pi complesso, che fa uso anche della
crittografia a chiave pubblica: il riassunto, prima di essere spedito, viene cifrato dal mittente con la propria
chiave privata e decifrato dal destinatario con la chiave pubblica del mittente. Un riassunto cifrato in questo modo si dice firma digitale (digital signature) del mittente, perch assicura sia l'integrit del messaggio che l'autenticit del mittente, proprio come una firma apposta (in originale) in calce a un documento
cartaceo.

154

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

Figura 11-12: Firma digitale

11.8.7 Protocolli crittografici


La firma digitale un esempio di protocollo crittografico, cio di una serie di regole che le parti debbono
seguire per assicurarsi una conversazione conforme ai requisiti desiderati. Un protocollo crittografico in
generale specifica non gli algoritmi da usare nei vari passi, ma le tecniche da adottare (ad esempio: crittografia a chiave pubblica e/o privata, message digest, ecc.) e la successione di passi da seguire.
Esistono vari protocolli crittografici, che si differenziano per il contesto iniziale (ad esempio: i due partecipanti hanno una chiave segreta in comune o no? Conoscono le rispettive chiavi pubbliche o no?) e gli scopi
da raggiungere (ad esempio: autenticazione, segretezza, o entrambi?). Vedremo ora alcuni protocolli che
rivestono un particolare interesse in un contesto come quello del Web, dove possibile aver bisogno di autenticazione e segretezza nel dialogo con entit mai conosciute prima e i canali sono insicuri, e soggetti
all'intrusione di Trudy (e magari anche di Gambadilegno!).

11.8.8 Chiave segreta di sessione


Un primo problema da affrontare e risolvere mediante un protocollo crittografico il seguente: poich la
crittografia a chiave segreta molto pi efficiente di quella a chiave pubblica, si vuole usare la prima nel
corso della comunicazione effettiva che deve essere portata avanti.
Per, in un contesto distribuito come il Web, impensabile che ogni potenziale coppia di fruitori disponga
di una chiave segreta. Dunque, bisogna trovare un protocollo per concordare, all'inizio della sessione, la
chiave segreta da usare durante il resto della sessione, detta per questo chiave segreta di sessione.
Un primo protocollo di per se molto semplice, e sfrutta la crittografia a chiave pubblica:
- Bob invia la sua chiave pubblica ad Alice;
- Alice genera una nuova chiave segreta, la cifra con la chiave pubblica di Bob e la invia a Bob;
- Bob riceve la chiave segreta (cifrata) e la decifra con la propria chiave privata;
- Alice e Bob a questo punto condividono la chiave segreta di sessione che possono usare per comunicare
in sicurezza.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

155

Figura 11-13: Determinazione della chiave segreta di sessione


Per evitare che Trudy esegua un replay attack (cio invii duplicati di tutto ci che intercetta) la chiave segreta di sessione deve essere ogni volta diversa. Di norma, calcolata mediante un generatore di numeri
casuali, che deve essere progettato molto accuratamente (si veda in proposito il clamore suscitato da un
bug contenuto in Netscape Navigator, riportato anche sul New York Times del 19/9/95).

11.8.9 Centro di distribuzione delle chiavi


Il protocollo precedente per ha un problema di fondo molto serio. Infatti, Trudy pu riuscire a fare in modo che Alice riceva, al posto della chiave pubblica di Bob, quella di Trudy, e quindi interporsi nella successiva comunicazione e decifrare tutto (man in the middle attack).

Figura 11-14: Trudy si interpone fra Alice e Bob


Per risolvere questo problema si coinvolge una nuova entit, il centro di distribuzione delle chiavi.
Esso un ente, di norma governativo o comunque dotato di credibilit internazionale, che:
- possiede adeguati meccanismi di sicurezza (anche fisica) per garantire i dati in proprio possesso;
- possiede una coppia di chiavi (pubblica e privata), e provvede periodicamente a confermare ufficialmente la propria chiave pubblica, ad esempio con la pubblicazione sui principali quotidiani;
- offre a chiunque la richieda una coppia di chiavi (pubblica e privata), che poi provvede a mantenere con
sicurezza;
- crea, per ciascuno dei clienti registrati (cio coloro ai quali ha rilasciato una coppia di chiavi) un certificato digitale, che in sostanza un documento contenente la chiave pubblica del cliente, altre informazioni relative al cliente (nome, ecc.) ed cifrato con la chiave privata del centro (ossia, firmato dal centro).
Per questa ragione, il centro viene anche detto Certificate Authority (CA).
In generale il software usato da Alice ha cablata al suo interno la chiave pubblica della CA, per cui in
grado di verificare la firma dei certificati provenienti dalla CA, e quindi di essere sicuro della loro autenticit e integrit.
Il protocollo visto precedentemente per stabilire la chiave segreta di sessione viene quindi modificato nel
senso che la chiave pubblica di Bob viene consegnata ad Alice sotto forma di un certificato rilasciato a Bob

156

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

da una CA; in questo modo Alice ha la garanzia che si tratta proprio della chiave di Bob e non di quella di
Trudy.

Figura 11-15: Ricorso ad una CA per avere la chiave pubblica di Bob

11.9 Protezione del Web


11.9.1 Controllo dei diritti di accesso: basic authentication in HTTP 1.0
Nel protocollo HTTP presente un servizio detto Basic Authentication per fornire selettivamente l'accesso a informazioni private, sulla base di un meccanismo di gestione di password.
Sul server si mantengono, in opportuni file di configurazione una lista di realm, ossia di porzioni del file
system gestito dal server Web per accedere alle quali ci vuole un permesso e ogni realm, una lista degli utenti abilitati con le relative password.
Un realm di fatto una stringa di testo. Tutti i documenti la cui URL contiene quella stringa fanno parte del
realm.
Quando arriva una richiesta GET per un documento che appartiene a un realm, il server non restituisce il
documento, ma un messaggio come questo:
HTTP/1.0 401 Unauthorized
WWW-Authenticate: Basic realm="NomeRealm"
Server: .....
Date: .....
Content-type: .....
Content-length: 0

Quando il client riceve questo messaggio, fa apparire automaticamente una finestra di dialogo predisposta
per l'immissione di una username e di una password.
L'utente immette i dati, e poi preme OK. A questo punto il client invia una nuova richiesta al server, simile
alla seguente:
GET url(la stessa di prima) HTTP/1.0
Authorization: Basic *****************
User-agent: .....
Accept: .....
ecc.

dove il testo rappresentato con gli asterischi contiene la username e la password immesse dall'utente, codificate con il metodo base64 encoding (uno standard del mondo Unix, definito negli rfc 1341 e 1521, che
non costituisce una cifratura ma serve solo a poter trasmettere caratteri ASCII estesi).
Quando il server riceve la richiesta, applica l'algoritmo di decodifica alla stringa di username-password, le
confronta con quelle in suo possesso per il realm NomeRealm e se tutto OK ritorna il documento richiesto,
altrimenti, ritorna un messaggio di errore (403 forbidden).
Il client di norma ricorda in una cache la coppia username-password immessa dall'utente e la utilizza anche

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

157

per i successivi accessi a documenti dello stesso realm; il server deve comunque decodificare tale coppia
ogni volta che arriva e verificarne la corrispondenza con quelle in suo possesso.

11.9.2 Controllo dei diritti di accesso: digest authentication in HTTP 1.1


Il problema con questo approccio che username e password di fatto viaggiano in chiaro sulla rete, dato
che gli algoritmi usati per la codifica e la decodifica sono noti a tutti, e quindi pu essere intercettata.
In proposito c' una proposta (Digest Authentication, rfc 2069) per istituire un meccanismo di cifratura di
username e password basato sul meccanismo di Message Digest, una sorta di funzione hash facile da calcolare ma difficile da invertire (la vedremo pi avanti).
Questo protocollo di tipo challenge-response dove:
- il challenge, inviato dal server al client, contiene un valore detto nonce che ogni volta diverso;
- la response, inviata dal client al server, il Message Digest (calcolato con l'algoritmo MD5) di nonce
ricevuto dal server, username dell'utente e password dell'utente.
In questo modo i dati riservati dell'utente (username e password) non viaggiano mai in chiaro sulla rete.
Quando il server riceve il Message Digest dal client, effettua anch'esso un identico calcolo e confronta i
due valori. Se sono uguali tutto OK, altrimenti no.

11.9.3 Protezione delle risorse da danneggiamento


Di norma i server Web non accettano altri metodi che GET (e POST in relazione alle form), quindi impediscono operazioni pericolose quali la scrittura o la cancellazione di file. Inoltre, di norma i server Web non
considerano legali le URL che fanno riferimento a porzioni del file system esterne alla parte di competenza
del server Web stesso.
Dunque, per lo meno quando si chiedono al server servizi standard (per il recupero di pagine Web) non ci
sono grandi pericoli.
Il discorso per cambia completamente quando si allargano le funzionalit rese disponibili, sul server, con
programmi CGI e sul client, con applicazioni helper.
In entrambi i casi, le opportunit per azioni che causano danneggiamenti travalicano le possibilit di controllo di client e server, e dipendono esclusivamente dalle caratteristiche dei programmi esterni. Si possono
aprire delle voragini nella sicurezza!
Essenzialmente, pi potente il programma (helper sul client e CGI sul server) e maggiori sono i pericoli
ai quali si esposti.
11.9.3.1 Lato client
Supponiamo che l'utente abbia configurato il suo client per lanciare un interprete PostScript quando riceve un file PostScript, che di norma contiene un insieme di comandi per la formattazione di testo e grafica
indipendenti dalla piattaforma.
In questo scenario, l'interprete PostScript viene lanciato ed esegue uno a uno i comandi contenuti nel file,
mostrando sul video (o stampando) il documento.
Ora, PostScript un completo linguaggio di programmazione, e contiene anche comandi per operazioni sul
file system. Se l'autore del documento PostScript ha sfruttato tali potenzialit per recare danni, l'utente ne
sopporter le conseguenze: ad esempio, il file PostScript potrebbe contenere delle istruzioni che cancellano
tutti i file dal disco rigido dell'elaboratore.
11.9.3.2 Lato server
In uno scenario tipico, come abbiamo gi visto, il programma CGI compone, in base ai dati immessi nei
campi della form, un comando destinato ad un altro programma esterno e passa il comando a tale programma esterno e chiedendogli di eseguirlo.
Abbiamo visto che nel caso di una interrogazione a una base dati il comando la formulazione di una
query e il programma esterno il gestore della base dati.
Ora, se invece il programma esterno molto potente (ad esempio: la shell), il programma CGI non entra a
sufficienza nel merito del comando che viene costruito, il server Web ha i privilegi di root, e lancia con tali
privilegi anche il programma CGI (e quindi, di riflesso, anche la shell), allora si corrono enormi rischi: un
utente remoto pu inviare un comando per distruggere dei file, ricevere il file delle password, eccetera.
Alcune delle possibili precauzioni per evitare le situazioni sopra descritte sono le seguenti:
- il server in ascolto sulla porta 80 deve girare come root (altrimenti non pu aprire un socket su nessuna
well-known port), ma i suoi figli (o i thread) che gestiscono le singole richieste devono avere i minimi
privilegi necessari per poter svolgere il loro compito (e questo vale anche per i programmi CGI ed i
programmi esterni);

158

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

- i programmi CGI devono controllare la potenziale pericolosit di ogni comando che ricevono prima di
consegnarlo al programma esterno;
- il programma esterno deve essere il meno potente possibile: ad esempio la shell certamente da evitare,
se possibile.

11.9.4 La sicurezza e Java


Una grande attenzione stata posta, nel progetto del linguaggio e della JVM, ai problemi di sicurezza derivanti potenzialmente dal fatto di mandare in esecuzione sulla propria macchina un codice proveniente da
una fonte ignota (e perci non affidabile in linea di principio).
Ad esempio, si potrebbero ipotizzare questi scenari certamente indesiderabili:
- un applet cifra tutti i file del disco, e chi lo ha programmato chiede un riscatto per fornire la chiave di
decifratura;
- un applet ruba informazioni riservate e le invia a qualcun altro;
- un applet cancella tutti i file del disco.
La prima linea di difesa stata incorporata nel linguaggio, che fortemente tipizzato, con controlli sui limiti degli array e senza puntatori.
In tal modo impossibile accedere a zone di memoria esterne a quelle allocate all'applet.
Tuttavia, Trudy (un personaggio che conosceremo di pi in seguito) si diverte a modificare un compilatore
C per produrre dei bytecode in modo da aggirare i controlli effettuati dal compilatore Java.
Per questa ragione, la JVM offre la seconda linea di difesa sotto forma di una componente, detta bytecode
verifier, che effettua numerosi controlli sui bytecode prima di mandarli in esecuzione, verificando ad esempio che non si cerchi di: costruire puntatori, chiamare metodi con parametri non validi o usare variabili
non inizializzate.
La terza linea di difesa rappresentata dal class loader, il meccanismo di caricamento delle classi. Esso
impedisce, ad esempio, che una classe dell'applet vada a sostituirsi a una delle classi di sistema in modo da
aggirare i meccanismi di sicurezza di quest'ultima.
Infine, un'ulteriore linea di difesa il security manager, una classe che ha il compito di stabilire dei limiti
a ci che il programma (applet o application) pu fare.
In particolare, di norma i client Web (e gli AppletViewer) caricano all'avvio un security manager che impedisce a tutti gli applet di accedere al file system locale, aprire connessioni di rete con host diversi da quello
di provenienza o lanciare altri programmi.
Viceversa, un'applicazione Java viene avviata di norma senza alcun security manager associato (a meno
che non venga programmata diversamente), e quindi non ha alcuna delle limitazioni sopra citate.

11.9.5 Transport Layer Security


(Da Wikipedia, l'enciclopedia libera, voce Transport Layer Secuity)

Transport Layer Security (TLS) un protocollo standard IETF che, nella sua ultima versione, definito
nella RFC 5246, sviluppata sulla base del precedente protocollo SSL da Netscape Corporation. un protocollo crittografico che permette una comunicazione sicura tra applicazioni client-server e una integrit dei
dati su reti TCP/IP cifrando la comunicazione dalla sorgente alla destinazione (end-to-end) sul livello di
trasporto. Viene utilizzato in applicazioni come i browser, l'E-mail, la messaggistica istantanea e il Voice
over IP.
Nell'utilizzo tipico di un browser da parte di utente finale, l'autenticazione TLS unilaterale: solo il server
autenticato (il client conosce l'identit del server), ma non vice-versa (il client rimane anonimo e non autenticato. L'autenticazione del server molto utile per il software di navigazione e per l'utente. Il browser
valida il certificato del server controllando la firma digitale dei certificati del server controllando che questa sia valida e riconosciuta da una certificate authority conosciuta utilizzando una cifratura a chiave pubblica. Dopo questa autenticazione il browser indica una connessione sicura mostrando solitamente un lucchetto in un'icona in basso a destra. Questa autenticazione, per, non sufficiente per garantire che il sito
con cui ci si collegati sia quello richiesto. Per esserne sicuri necessario analizzare il contenuto del certificato rilasciato e controllarne la catena di certificazione. I siti che intendono ingannare l'utente non possono utilizzare un certificato del sito che vogliono impersonare perch non hanno la possibilit di cifrare in
modo valido il certificato, che include l'indirizzo, in modo tale che risulti valido alla destinazione. Solo le
CA possono generare certificati validi con un'URL incorporata in modo che il confronto fra l'URL apparente e quella contenuta nel certificato possa fornire un metodo certo per l'identificazione del sito. Molto spesso questo meccanismo non noto agli utenti di internet ed causa di varie frodi dovute, per, ad un incorretto utilizzo del browser non ad una debolezza del protocollo TLS.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

159

Il protocollo TLS permette anche un'autenticazione bilaterale, tipicamente utilizzata in applicazioni aziendali, in cui entrambe le parti si autenticano in modo sicuro scambiandosi i relativi certificati. Questa autenticazione (definita Mutual authentication) richiede che anche il client possieda un proprio certificato digitale cosa molto improbabile in un normale scenario.
In assenza di un'autenticazione bilaterale si possono utilizzare i protocolli TLS-PSK o Secure remote
password (SSP) per garantire un'autenticazione sicura in assenza di un certificato.
Il funzionamento del protocollo TLS pu essere suddiviso in tre fasi principali:
- Negoziazione fra le parti dell'algoritmo da utilizzare
- Scambio delle chiavi e autenticazione
- Cifratura simmetrica e autenticazione dei messaggi
Nella prima fase, il client e il server negoziano il protocollo di cifratura che sar utilizzato nella comunicazione sicura, il protocollo per lo scambio delle chiavi e l'algoritmo di autenticazione nonch il Message authentication code (MAC). L'algoritmo per lo scambio delle chiavi e quello per l'autenticazione normalmente sono algoritmi a chiave pubblica o, come nel caso di TLS-PSK, fanno uso di una chiave precondivisa
(Pre-Shared Key). L'autenticazione dei messaggi garantita da un algoritmo di hash che usa un costrutto
HMAC per il protocollo TLS o una funzione pseudorandom non standard per il protocollo SSL.
All'interno di una sessione tipicamente vengono utilizzati i seguenti protocolli:
- per lo scambio di chiavi: RSA, Diffie-Hellman, ECDH, SRP, PSK
- per l'autenticazione: RSA, DSA, ECDSA
- cifratura simmetrica: RC4, Triple DES, AES, IDEA, DES, o Camellia. Nelle vecchie versioni di SSL
era anche utilizzato il protocollo RC2.
- per le funzioni crittografiche di hash: in TLS sono utilizzati HMAC-MD5 o HMAC-SHA mentre in SSL
MD5 e SHA. Nelle versioni pi vecchie di SSL erano anche utilizzati MD2 e MD4.
I certificati prodotti da una CA possono essere conservati dove si desidera. Ad esempio, Bob pu tenere
una copia del proprio certificato, ed Alice pu chiederlo direttamente a lui invece che alla CA.
Questo precisamente quanto avviene sul Web quando si incontra un link gestito col metodo
https://

che viene gestito dal protocollo chiamato Secure Socket Layer (SSL), introdotto da Netscape.
Esso protegge l'intero flusso di dati che fluisce sulla connessione TCP, per cui pu essere usato sia con
HTTP che con FTP o TELNET.
Ad esempio, una form HTML che consente l'ordine di beni da acquistare fornendo il numero della propria
carta di credito potr essere riferita col link:
https://www.server.com/order.html

Quando l'utente del client decide di seguire tale link, si sviluppa questa catena di eventi:

Figura 9-15: Funzionamento del protocollo TLS

11.9.6 Vulnerabilit di MD5


(Articolo da http://www.ilsoftware.it/, Michele Nasi, 05.01.2009)

MD5 (RFC 1321) un algoritmo crittografico di hashing messo a punto dal professor Ronald Rivest, nel
1991, dopo che erano state segnalate alcune debolezze nello schema del MD4. Pi lento del MD4, stato
implementato in un vastissimo numero di prodotti fintanto che, nel 1996, molteplici vulnerabilit nell'algoritmo furono individuate e dimostrate dal crittografo tedesco Hans Dobbertin.
Le funzioni hash, a partire da un testo di lunghezza arbitraria, generano una stringa di lunghezza fissa. La
trasformazione operata funziona in un solo senso: non quindi possibile, dalla stringa generata, risalire al
testo iniziale.
In certo senso, si pu dire che le funzioni hash non impiegano alcuna chiave crittografica.

160

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

L'hash rappresenta una sorta di "impronta digitale" (fingerprint) del contenuto di un file ed solitamente
usata per attestare che lo stesso file non sia stato alterato da virus, malware oppure per l'intervento di un
malintenzionato. All'"impronta digitale" viene attribuito anche il nome di message digest, checksum o valore di hash.
Le funzioni di hash sono talvolta non ben comprese ed alcune fonti affermano che due file non possano
mai avere lo stesso valore di hash (message digest). Questasserzione, infatti, falsa. Si consideri una
funzione di hash che genera un message digest da 128 bit. Ci sono, ovviamente, pow(2,128) possibili valori di hash. I file che esistono, per, sono certamente ben pi di pow(2,128) (sono considerabili in numero
pari allinfinito). Ne consegue che possono esistere file con il medesimo valore di hash.
La difficolt, quindi, consiste nellindividuare due file con il medesimo valore di hash.
Quando due messaggi producono un identico hash, si parla di collisione. La qualit di una funzione di
hash dipende dalla probabilit di individuare due testi che collidono.
Perch un algoritmo di hashing cada in disgrazia sufficiente che un gruppo di crittografi o di esperti informatici riesca a generare una collisione. questo ci che accaduto, in passato, per gli algoritmi MD2,
MD4 ed MD5, tutti oggi considerati insicuri.
A "rincarare la dose" ci hanno pensato alcuni ricercatori (A. Sotirov, M. Stevens, J. Appelbaum, A. Lenstra,
D. Molnar, D.A. Osvik e de Weger) che alcuni giorni fa hanno individuato una nuova vulnerabilit nella
PKI (acronimo di "Public Key Infrastructure") utilizzata per la generazione di certificati digitali da utilizzare per comunicazioni sicure attraverso il protocollo SSL.
Il metodo presentato pu consentire ad un aggressore di produrre nuovi certificati digitali contenenti la
stessa firma del certificato originale. L'attacco, quindi, stato dimostrato nella pratica.
Se l'utente si trovasse a visitare, utilizzando un qualunque browser, un sito web che sta utilizzando un certificato digitale "fasullo" - generato sfruttando vulnerabilit di MD5 - non otterrebbe alcun messaggio di allerta e riterrebbe erroneamente sicura la connessione.
A titolo esemplificativo, i ricercatori hanno creato un falso certificato digitale emesso da un'altrettanto fasulla "certification authority" (CA). Il certificato, ritenuto valido da tutti i principali browser web, avrebbe
potuto permettere ai ricercatori di "impersonificare" qualunque altro sito che utilizzasse il protocollo
HTTPS, compresi quelli di banche ed e-commerce.
L'attacco si basa su una debolezza dell'algoritmo di hashing MD5 che permette di costruire differenti messaggi aventi lo stesso hash MD5 ("collisione"). Come spiegano Sotirov, Stevens, Appelbaum, Lenstra,
Molnar, Osvik e de Weger, "i precedenti lavori incentrati sullo studio delle collisioni in MD5, tra il 2004 ed
il 2007, hanno evidenziato attacchi effettuabili almeno in linea teorica. Il nostro studio evidenzia invece
come possa essere sferrata almeno una tipologia di attacco pratico, funzionante in contesti reali".
"Questa nuova scoperta non incrementa in modo significativo i rischi per gli utenti poich i ricercatori non
hanno pubblicato alcuni dettagli indispensabili per la riproducibilit dell'attacco", ha commentato
Microsoft che fa notare come i vendor di certificati digitali abbiano ormai abbandonato MD5 per passare al
pi sicuro algoritmo SHA-1.
Purtuttavia, esistono ancora alcuni servizi che poggiano su MD5. Gli scopritori della falla, che hanno presentato la scoperta in occasione di una conferenza tenutasi nei giorni scorsi a Berlino, sono infatti riusciti a
violare un sito che permette di generare certificati digitali riuscendo ad ottenere certificati falsi.
Anche Mozilla ha voluto dire la sua a proposito della scoperta puntualizzando, in primo luogo, che pur non
trattandosi di un attacco rivolto nei confronti dei prodotti dell'azienda si avviata una collaborazione con i
vendor coinvolti affinch possano aggiornare i propri meccanismi per la generazione di certificati digitali.

11.10 PGP - Pretty Good Privacy


Nel giugno 1991 lo statunitense Philip Zimmermann realizz e distribu gratuitamente il programma Pretty
Good Privacy (PGP), un programma di crittografia diventato ormai uno standard (tanto che l'insegnamento
del suo utilizzo previsto nel master per la security dell'universit di Milano) che permette di mantenere la
privacy e la sicurezza dei propri dati personali in formato elettronico.
Zimmermann si diede (e si d ancora) molto da fare per consentire a tutti di comunicare in modo sicuro e
nel manuale duso del suo programma spiega perch importante usare la crittografia: che accadrebbe
se tutti pensassero che i cittadini onesti utilizzano solo cartoline per la loro posta? Se qualche persona per
bene volesse usare una busta chiusa per proteggere la sua privacy, desterebbe dei grossi sospetti. Forse le
autorit aprirebbero la sua posta per controllare cosa nasconde. Fortunatamente non viviamo in un mondo
fatto cos, perch tutti proteggono la maggior parte della loro posta chiudendola in una busta. Sarebbe bello

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

161

se tutti usassero abitualmente la crittografia per la loro posta elettronica, indipendentemente dal contenuto
pi o meno riservato, e in tal modo nessuno desterebbe sospetti
Per la realizzazione di PGP, Zimmermann venne citato in tribunale dalla RSA Data Security Inc. per violazione del brevetto sull'algoritmo RSA, e accusato dal governo degli Stati Uniti di esportazione illegale di
strumenti crittografici. Entrambe le cause finirono nel nulla. L'accusa di esportazione illegale venne ritirata
nel 1996, mentre la controversia con RSA venne mediata da una successiva collaborazione tra le due parti
per la realizzazione delle versioni successive del software.
PGP, , quindi, un programma di crittografia che garantisce la segretezza della posta (ma non solo), l'autenticazione con firma digitale e la compressione. Il software in questione implementa in pratica i sistemi visti
fino a questo momento, utilizzando un sistema di crittografia misto con tre algoritmi:
- il sistema a chiavi pubbliche RSA;
- sistema a chiavi private IDEA (oppure altri algoritmi a scelta);
- algoritmo di hashing SHA-1 (oppure MD5).
Inoltre, per garantirne la diffusione, la versione base distribuita gratuitamente per l'uso personale.
Il suo funzionamento molto semplice:
- il file mittente viene compresso con un algoritmo di tipo zip; questo oltre ad essere utile per guadagnare
spazio, permette anche un guadagno di sicurezza della cifratura. Molte tecniche di crittoanalisi infatti
sfruttano le ridondanze presenti nel testo in chiaro per violare il cifrario: tali ridondanze sono ridotte
dalla compressione, migliorando la resistenza a questo tipo di attacchi. possibile comprimere soltanto
quei file che non risultano esser troppo corti;
- il file compresso viene cifrato mediante codice IDEA (o altri);
- viene generata una sequenza casuale di 128 bit (o pi) chiamata session key con appositi algoritmi per
ottenere una serie di numeriche hanno determinate propriet statistiche, devono essere equiprobabili;
- la session key viene cifrata con lRSA utilizzando la chiave pubblica del destinatario e il risultato concatenato al documento;
- infine viene applicato lalgoritmo di trasformazione reversibile a testo ASCII chiamato Armor Radix-64
(a volte indicato Base-64 o Armored). Questo algoritmo produce un documento formato da solo caratteri ASCII compatibile con tutti i server e client di posta elettronica.
Il tutto schematizzato dalla figura seguente.

Figura 11-16: PGP allopera quando si applica solo la crittografia


Quando si applica la firma digitale, invece:
- il file mittente viene compresso con un algoritmo di tipo zip;
- viene calcolato lhashing del file mediante lutilizzo di SHA-1 (o MD5) e il codice hash generato viene
cifrato tramite RSA con la chiave privata del mittente e viene accodato al file;
- il tutto viene trasformato in ASCII Armored;
- il destinatario effettua le operazioni al contrario e verifica se i codici hash sono identici.
Il procedimento schematizzato in figura.

162

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

Figura 11-17: Il PGP all'opera quando si applica anche la firma.


Ogni utente del programma, dopo la procedura di installazione, possiede quindi due chiavi, una privata (da
mantenere nel o nei PC che si utilizzano) e una pubblica. PGP prevede la creazione di archivi pubblici elettronici che contengano le chiavi pubbliche dei vari utenti. importante molto importante utilizzare questo
tipo di supporti per dare la massima diffusione della propria chiave pubblica e consentire a tutti di poter
comunicare con noi in modo sicuro.

11.11 Virtual Private Network


(Da Wikipedia, l'enciclopedia libera, voce Virtual Private Network)

Una Virtual Private Network o VPN una rete privata instaurata tra soggetti che utilizzano un sistema di
trasmissione pubblico e condiviso come per esempio Internet. Lo scopo delle reti VPN di dare alle aziende le stesse possibilit delle linee private in affitto ad un costo inferiore sfruttando le reti condivise pubbliche.
Le reti VPN utilizzano collegamenti che necessitano di autenticazione per garantire che solo gli utenti autorizzati vi possano accedere; per garantire la sicurezza che i dati inviati in Internet non vengano intercettati o utilizzati da altri non autorizzati, esse utilizzano sistemi di crittografia.
Le reti VPN sicure adottano dunque protocolli che provvedono a cifrare il traffico transitante sulla VPN.
Oltre alla cifratura, una VPN sicura deve prevedere nei suoi protocolli dei meccanismi che impediscano
violazioni della sicurezza, come ad esempio il furto dell'identit digitale o l'alterazione dei messaggi.
Generalmente una VPN comprende due parti: una interna alla rete, e quindi protetta, che preserva la trasmissione, e una meno affidabile e sicura che quella esterna alla rete private, ad esempio via Internet.
Nelle VPN c in genere un firewall tra il computer del dipendente o di un cliente e il terminale della rete o
del server. Il dipendente, per esempio, quando stabilisce la connessione con il firewall, deve autenticare i
dati che vuole trasmettere, passando attraverso un servizio di autenticazione interno.
Un utente autenticato pu essere provvisto di privilegi particolari per accedere a risorse che generalmente
non sono accessibili a tutti gli utenti. La maggior parte dei programmi client richiede che tutto il traffico IP
della VPN passi attraverso un Tunnel virtuale tra le reti utilizzando Internet come mezzo di collegamento. Dal punto di vista dellutente ci significa che, mentre la connessione VPN attiva, tutti gli accessi esterni alla rete sicura devono passare per lo stesso firewall come se lutente fosse fisicamente connesso
allinterno della rete sicura. Questo riduce il rischio che utenti esterni possano accedere alla rete privata
dellazienda.
La sicurezza della connessione VPN di importanza fondamentale, perch la rete su cui gli altri computer
stanno lavorando potrebbe non essere sicura, o esserlo solo parzialmente. La VPN deve quindi garantire un
livello di sicurezza tale da proteggere i computer dei dipendenti che stanno lavorando simultaneamente sulla stessa rete, tra i quali uno potrebbe essere stato infettato da un virus, un worm o un trojan.

M.T.Bombi, A.Giunta e altri

Reti di Elaboratori - 2014

163

12 Esercizi di Progettazione di reti


12.1 Esame di stato per Perito Informatico Progetto Abacus/ 2008
Il proprietario di una catena di supermercati intende aprire dieci nuovi punti di vendita.
La sede centrale comprende uffici e due magazzini collegati mediante una rete locale.
Ciascun punto di vendita dovr disporre di un magazzino attiguo per lo stoccaggio delle merci;
lapprovvigionamento verr effettuato con richieste dirette alla sede centrale.
Gli uffici si occupano dei rapporti con i punti vendita e con i magazzini ( verifica delle giacenze, evasione
degli ordini, ... ). La base di dati deve consentire la memorizzazione delle informazioni relative alle vendite
e agli ordini dei prodotti dei vari punti vendita, che devono potersi interfacciare con la sede centrale; allo
stesso modo i clienti devono poter visualizzare i cataloghi dei prodotti i corrispondenti listini per poter eventualmente acquistare via web.
Il candidato, fatte le opportune ipotesi aggiuntive,
1. proponga uno schema generale del sistema che metta in evidenza le diverse funzioni
2. scelga la tipologia di rete che ritiene pi idonea, ne indichi le sue caratteristiche e progetti in dettaglio
alcune sue parti
3. analizzi e progetti uno schema concettuale e il corrispondente schema logico del data base della sede
centrale
4. proponga una soluzione per la gestione via web dellinterfaccia con i punti vendita al dettaglio, oppure,
a scelta, con i clienti
5. illustri le metodologie di collaudo
6. effettui unanalisi massima dei costi

12.2 Esame di stato per Perito Informatico Progetto Abacus/ 2010


I recenti eventi sismici e le conseguenze catastrofiche spingono gli Enti e le Amministrazioni Locali alla
ricerca di ulteriori soluzioni in grado di diffondere nel modo pi rapido possibile le informazioni raccolte
dai vari punti di rilevamento (PR) presenti sul territorio.
Ciascun punto di rilevamento acquisisce i segnali provenienti dalle centraline provviste di sismografi, li elabora, li converte in formato digitale e li invia al centro elaborazione dati della Protezione Civile.
In particolare
- La rilevazione continua, ad intervalli di 1 minuto, per tutti i giorni dellanno
- Il segnale digitalizzato (onda sismica in scala Richter) viene integrato con le seguenti informazioni: identificativo della centralina (dal quale sar possibile risalire al luogo di rilevazione), identificativo del
sismografo, data e ora
- Il sistema informativo centrale acquisisce e memorizza, ogni 5 minuti, i dati relativi da tutte le centraline dislocate sullintero territorio, quindi invia sulla Protezione Civile i rapporti sulla valutazione di rischio di sisma nelle diverse regioni monitorate ed eventuali messaggi di allerta
Il candidato, fatte le opportune ipotesi aggiuntive,
1. analizzi il problema e proponga uno schema generale del sistema
2. scelga la tipologia di rete che ritiene pi idonea, ne indichi le sue caratteristiche e progetti in dettaglio
alcune sue parti
3. analizzi e progetti uno schema concettuale e il corrispondente schema logico del data base della sede
centrale
4. proponga una soluzione per la gestione via web dellinterfaccia con i punti di rilevazione.

12.3 Esame di stato per Perito Informatico Progetto Abacus/ 2012


Un gruppo amatoriale di appassionati di gare automobilistiche, desidera organizzare una competizione di
corsa su strada, suddivisa in 6 prove speciali. Su ciascuna tratta saranno posizionati 5 sensori di rilevazione
dei tempi:
- FP: fotocellula alla partenza; si attiva e avvia il cronometro;
- FVI, FV2, FV3: fotocellule che si attivano al passaggio del mezzo e misurano la velocit istantanea e i
tempi parziali in tre punti intermedi del percorso;
- FA: fotocellula all'arrivo; si attiva e ferma il cronometro.
Un incaricato alla partenza determina linizio della prova di ciascun concorrente, mentre un altro, all'arrivo
controlla i dati trasmessi dal sensori durante lo svolgimento della stessa e al temine Ii convalida per tra-

164

Reti di Elaboratori - 2014

M.T.Bombi, A.Giunta e altri

smetterli in tempo reale al sistema di gestione della competizione collocato presso la sede del gruppo. Al
termine della competizione, un incaricato provveder allinvio, sul sistema informativo della Federazione
Italiana Automobilismo, della classifica, completa di tutte le informazioni richieste (nominativo concorrente, auto, targa, tempo di ogni prova, tempo totale, posizione in classifica, penalit).
Il candidato, fatte le opportune ipotesi aggiuntive:
- analizzi il problema, rappresenti lo schema della realt proposta, descriva le possibili soluzioni per l'acquisizione dei dati che dovranno essere inviati in tempo reale al sistema informativo del gruppo e in seguito alla FIA e scelga quella che a suo motivato giudizio la pi idonea a rispondere alle specifiche indicate;
- rappresenti graficamente l'architettura di rete del sistema fornendo gli elementi essenziali che caratterizzano le parti principali della stessa;
- progetti i sistemi di archiviazione e consultazione dati utilizzando il modello di rappresentazione Entit
Relazioni;
- descriva la logica del software di controllo del sistema;
- indichi una soluzione per garantire la continuit del servizio nel caso in cui si interrompa il collegamento del sistema di trasmissione dati al sistema gestionale del gruppo.

12.4 Esame di stato per Perito Informatico Progetto Abacus/ 2014


Una casa automobilistica, per assicurare lassistenza alla propria clientela, ha costituito, su tutto il territorio
nazionale, una rete di officine. Lofficina centrale ha il compito di gestire tutte le altre: archivia le informazioni di ogni singola officina (codice officina, denominazione, indirizzo) e memorizza in particolare i dati:
a. sui pezzi di ricambio (codice pezzo, descrizione, costo unitario, quantit,...);
b. sui servizi offerti (codice servizio, descrizione, costo orario,...);
c. sugli accessori in vendita (codice articolo, descrizione, costo unitario,...).
Inoltre offre la possibilit ai dipendenti e ai clienti di poter consultare online il catalogo dei pezzi di ricambio, dei servizi offerti e degli accessori in vendita.
Lofficina centrale composta da tre uffici e da un info point. In tutte le officine presente un locale dove si effettuano le riparazioni e un magazzino, ciascuno dotato di una postazione di lavoro computerizzata.
I clienti prenotano l'intervento presso l'officina scelta indicando:
1. i dati dell'autoveicolo (targa, numero telaio, anno di costruzione, ecc);
2. i dati propri (cognome, nome, telefono, ecc);
3. lintervento richiesto (tagliando, freni, gomme, ecc).
Il candidato, dopo aver formulato le necessarie ipotesi aggiuntive, sviluppi i seguenti punti:
1. proponga un progetto di rete locale per lofficina centrale e per le officine secondarie, specificando:
a. il cablaggio con riferimento allo standard IEEE 802;
b. larchitettura protocollare proposta al di sopra del secondo livello del modello OSI;
2. indichi la tecnica di comunicazione tra le officine secondarie e lofficina centrale;
3. progetti un sistema per larchiviazione e la consultazione dei dati utilizzando il modello Entit relazioni;
4. presenti il disegno della home page del sito web della casa automobilistica, che consenta di:
a. visionare le informazioni presenti nellofficina scelta;
b. consultare il catalogo delloggetto scelto: servizi, pezzi di ricambio, accessori;
c. modificare i dati, operazione consentita ai soli dipendenti autorizzati.
Infine il candidato codifichi una parte significativa del punto 4 attraverso gli strumenti che ritiene pi idonei e giustifichi la scelta operata.