Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Parte 3
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 60
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 61
5
Internet Protocol
version 4 (IPv4)
Introduzione
Il protocollo IP (Internet Protocol), formalizzato nella RFC 791, nasce per consentire lo
scambio di dati tra due nodi all’interno di un insieme di reti a commutazione di pac-
chetto, interconnesse tra loro tramite dispositivi intermedi chiamati gateway (spesso
indicati anche con i termini router o intermediate system). Questo sistema di reti, ini-
zialmente chiamato “catenet” (cf. IEN 48, The Catenet Model for Internetworking,
Vinton Cerf 1978 e RFC 791 Internet Protocol, Jon Postel 1981), corrisponde all’attuale
concetto di Internet, ovvero un insieme di reti indipendenti e intercomunicanti, che
agiscono come un perfetto sistema olistico, cioè un sistema costituito da un insieme
di componenti interagenti e cooperanti tra loro al fine di costituire ed agire come un
unico sistema organico (figura 5.1).
Parte 3
Questo sistema di “rete di reti” viene indicato anche con il termine di internetwor-
king o più comunemente con la contrazione internet (termine coniato da Bob Kahn e
Vint Cerf). In particolare, quando ci si riferisce alla rete pubblica si utilizza la parola
Internet con la lettera iniziale in maiuscolo mentre con internet si fa riferimento ad un
insieme di reti utilizzate in ambito privato o aziendale. Tuttavia, per semplicità e per
evitare confusione, si utilizzano i più diffusi termini intranet o extranet per indicare un
insieme di reti private basate sul protocollo TCP/IP all’interno di una certa organizza-
zione o utilizzate per interconnettere varie aziende o organizzazioni consociate.
Come accennato, lo scopo del protocollo IP è quello di fornire i servizi di conse-
gna dei dati da un nodo sorgente ad un nodo destinazione. In modo particolare ogni
“modulo IP” (ovvero: stack TCP/IP) disponibile in qualsiasi host deve implementare le
due funzioni base di indirizzamento (addressing) e frammentazione (fragmentation)
oltre a fornire alcune funzionalità di diagnostica e segnalazione di errori (cf. RFC 791,
pag. 1; RFC 1122, pag. 26). In futuro tali funzioni possono anche essere estese (per
esempio: con l’avvento dell’IPv6).
I dati trattati dal protocollo IP prendono il nome di IP datagram. A volte si utiliz-
za anche il termine pacchetto o packet. Più precisamente si utilizza il termine data-
gramma quando si parla di comunicazione a livello IP diretta tra due host. Viceversa
si utilizza il termine pacchetto per riferirsi ad un singolo frammento di un datagram-
ma o ad un piccolo datagramma che non necessita di essere frammentato. In genere
il termine pacchetto viene utilizzato anche per indicare l’unità di informazione o PDU
scambiata tra il livello Rete ed il livello inferiore Interfaccia di Rete (livello 1 TCP/IP) o
data-link (livello 2 OSI).
IP non fornisce alcun meccanismo per aumentare il grado di affidabilità, per il
controllo del flusso o per il controllo della sequenza dei pacchetti. Questi servizi sono
demandati ad un protocollo di livello superiore come ad esempio il protocollo TCP o
il protocollo UDP.
Indirizzamento IPv4
62
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 63
giati con un sistema operativo con funzionalità Time-Sharing (per esempio: BBN
Timesharing System su DEC PDP-1, 1962).
Con l’avvento dei personal computer e la diffusione dei nuovi sistemi operativi mul-
titasking (cooperative, preemptive, multiuser) con funzionalità di rete integrati e lo
sviluppo di applicazioni di tipo client/server, il termine host può essere utilizzato sia
lato-client sia lato-server. Pertanto, in un contesto di reti di computer, il termine host
è utilizzato come sinonimo di computer in un contesto peer-to-peer (ovvero: compu-
ter che potenzialmente possono agire sia come client sia come server ed avere quindi
pari opportunità).
oppure
dove:
Parte 3
È necessario sottolineare che la coppia <netID> <hostID> deve essere unica al-
l’interno dell’intero insieme di reti interconnesse.
Per esempio, nella figura 5.2, è possibile identificare gli host o mediante una codi-
fica binaria o, per semplicità di rappresentazione, mediante una codifica esadecima-
le. In questo caso si è scelto di discriminare le due reti attraverso il primo ottetto
(netID=0x01 e netID=0x02) e dedicare gli ultimi tre ottetti come identificativo per gli
host; inoltre per semplicità grafica si è scelto di assegnare i primi due ottetti della parte
<hostID> al valore 0x0101:
Ai RIR fanno capo i Local Internet Registries (LIR) per il rilascio degli indirizzi IP agli
utenti finali e/o aziende. Per ulteriori dettagli cf. il capitolo 2 “Introduzione al TCP/IP,
alla scoperta di Internet”.
11000000101010000000000111001000
Nota
I termini byte ed ottetti sono considerati sinonimi all’interno della maggior parte dei
sistemi operativi attuali, nei quali una “struttura” di tipo byte è implementata
mediante 8-bit. Esistono dei casi di sistemi operativi (per esempio: DEC PDP11 e
PDP8) nei quali la rappresentazione interna di 8-bit non avviene come singolo byte
ma come insieme di due nibble (gruppo di 4-bit). In questo tipo di ambienti è neces-
sario differenziare espressamente tra i due termini. In relazione a quanto esposto è
formalmente più corretto utilizzare il termine ottetto.
A questo punto è necessario definire uno standard per identificare in modo uni-
voco il network byte order cioè l’ordine di elaborazione, di trasmissione e di interpre-
tazione dei bit all’interno dei singoli ottetti e degli ottetti stessi all’interno di un indi-
rizzo IP.
Lo standard TCP/IP prevede di utilizzare la cosiddetta convenzione big endian o
left-to-right sia a livello di intero indirizzo (l’ordine con cui vengono interpretati i
quattro ottetti), sia a livello di singolo bit all’interno del generico ottetto. L’ordina-
mento di tipo big-endian prevede di considerare, all’interno di una sequenza di più
ottetti, l’ottetto di sinistra come il più significativo. Solitamente, quest’ultimo, viene
indicato con il termine MSB (Most Significant Byte) e l’ottetto meno significativo con
LSB (Least Significant Byte). Analizzando il contenuto del singolo ottetto si utilizza lo
stesso tipo di ordinamento: il bit nella posizione di sinistra è considerato più signifi-
cativo e chiamato MSb (Most Significant bit). Lo stesso ordinamento è utilizzato anche
durante la trasmissione dei dati. Questo tipo di ordinamento corrisponde all’ordine
che viene seguito per leggere lo stesso testo in italiano.
Per motivi di semplicità è prassi codificare gli ottetti con il sistema decimale,
separandoli tra loro con un punto al fine di aumentare ulteriormente la leggibilità.
Tale convenzione viene indicata come dotted decimal notation (DDN).
Pertanto, nel caso dell’indirizzo IP rappresentato in binario nell’esempio prece-
dente, il relativo formato DDN sarà come l’esempio mostrato nella tabella 5.1.
Parte 3
Attenzione: come è possibile osservare dai precedenti esempi, non è necessario che
tutti gli ottetti siano espressi in DON o DEN.
1. Come è possibile osservare dai precedenti esempi, non è necessario che tutti i
quattro ottetti siano espressi in DON o DEN.
2. Da notare che l'utilizzo dei suddetti formati DON/DEN non è consentito in fase
di configurazione di un indirizzo IP per una interfaccia di rete (in qualsiasi
ambiente) ma solamente all’interno di un alcuni comandi (esempio: ping
192.168.1.0310 oppure ping 192.168.1.0xc8 oppure telnet 192.168.1.0310). A tal
proposito non tutti i comandi accettano questi formati ed alcuni accettano solo
il formato DON e non DEN (esempio: telnet).
Per ulteriori dettagli sulla conversione dei numeri decimali in binario e viceversa
fare riferimento all’appendice B “Sistemi di numerazione e conversioni”.
Tipi di indirizzi IP
A seconda del numero dei potenziali destinatari identificati da un singolo indirizzo IP
e del tipo di comunicazione instaurata tra una entità origine ed una o più entità desti-
nazione è possibile distinguere tra:
66
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 67
67
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 68
Parte 3
68
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 69
Di seguito viene data una descrizione dettagliata del significato delle varie colonne.
■ Colonna I
Indica la classe di appartenenza di un indirizzo IP.
Come si può notare dalla tabella 5.3, le classi D ed E sono riservate per usi
speciali: la classe D per applicazioni di tipo multicast e la classe E per fini
sperimentali da parte di IANA.
Pertanto, le sole classi utilizzabili per l’assegnamento di indirizzi IP di tipo
unicast sono le rimanenti A, B e C.
■ Colonna II
Sono indicati i bit dell’ottetto più significativo (MSB). Come si può notare, a
seconda della classe di appartenenza, i primi quattro bit possono avere un
valore diverso, ma comunque prefissato, secondo la seguente convenzione:
• Classe A: 0 è fissato solo il primo bit.
• Classe B: 10 sono fissati solo i primi due bit.
• Classe C: 110 sono fissati solo i primi tre bit.
• Classe D: 1110 sono fissati solo i primi quattro bit.
• Classe E: 1111 sono fissati solo i primi quattro bit.
Viceversa, le “x” rappresentano delle cosiddette condizioni di indifferenza,
ovvero variabili che possono assumere sia il valore binario 0 sia 1.
■ Colonna III
Il primo numero (nByN) indica quanti ottetti sono riservati per la compo-
nente <netID>. Il secondo numero (nBiN) indica quanti sono gli effettivi bit
disponibili per la sezione <netID> all’interno di una classe, escludendo i bit
con valore prefissato (cf. Colonna II). Il terzo, indica il numero di reti o
network (nN) che si possono identificare all’interno di una determinata clas-
se, tenendo conto dei valori da escludere.
Per il calcolo del numero di network (nN) valgono le seguenti relazioni mate-
matiche:
• Classe A: nN = 27 – 2 = 126
• Classe B: nN = 214 – 2 = 16.382
• Classe C: nN = 221 – 2 = 2.097.150
nelle quali, le due potenziali reti eliminate dal conteggio relativo al numero
di network (nN) per ciascuna classe, corrispondono alla regola no-tutti-zero
e no-tutti-uno esposta in precedenza.
■ Colonna IV
Il primo numero (nByH) indica, riferendosi alla componente <hostID>, il
numero di ottetti riservati, il secondo numero (nBiH) quanti sono gli effetti-
vi bit disponibili e il terzo indica il numero di host (nH) che si possono iden-
tificare all’interno di una determinata classe. Questi valori sono calcolati
rispettando le regole no-tutti-zero e no-tutti-uno.
Per il calcolo del numero di host (nH) valgono le seguenti relazioni matema-
tiche:
69
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 70
Parte 3
Come si può notare la scelta di una classe di indirizzi IP, nella fase progettuale di
una rete, dovrebbe essere condizionata dal numero di nodi e di reti che costituiscono
la propria infrastruttura di internetworking.
L’idea iniziale della suddivisione in classi dello spazio di indirizzamento IP (IP
Address Space) nasce dalla volontà di ottimizzare l’offerta di indirizzi IP a seconda
delle necessità aziendali (tabella 5.4).
Tabella 5.4: Rapporto tra il numero di reti ed il numero di host quando si utilizzano le
classi standard
Elevato numero di host Numero medio di host Basso numero di host
Basso numero di reti Classe A
Numero medio di reti Classe B
Elevato numero di reti Classe C
70
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 71
Come si può notare, la network mask identifica il numero di bit, sul totale dei 32
potenziali, che sono riservati alla parte <netID>.
Al fine di semplificare la scrittura di un indirizzo IP e della relativa subnet mask,
è possibile indicare entrambi attraverso la cosiddetta notazione Network Prefix, che
prevede di specificare insieme alla <netID> in formato DDN, anche il numero di bit
della maschera di rete separato per mezzo del carattere “/”; ad esempio: 10.0.0.0/8
(equivalente a 10/8) oppure 172.16.0.0/16 (equivalente a 172.16/16) 192.168.1.0/24
(equivalente a 192.168.1/24).
Nella tabella 5.5 sono riportate le network mask delle tre classi standard.
Utilizzando la network mask specificata a livello di configurazione locale, lo stack
TCP/IP (ovvero: il software che implementa le funzioni) è capace di determinare come
deve essere inoltrato un datagramma IP al destinatario:
71
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 72
Parte 3
Come si può osservare ciascun nodo di una rete TCP/IP deve prendere una deci-
sione di forwarding chiamata anche local routing o internal routing. Essa si basa sul
seguente algoritmo:
Nella tabella 5.6 sono riportate le tavole della verità delle operazioni logiche AND
e XNOR.
Tabella 5.6: Le tavole della verità delle operazioni logiche AND e XNOR
A B A AND B A B A XNOR B
0 0 0 0 0 1
0 1 0 0 1 0
1 0 0 1 0 0
1 1 1 1 1 1
Nota
Da una attenta osservazione della tavola della verità dell’operatore logico AND è
possibile esprimere quest’ultima nella forma (più concisa e di più immediata inter-
pretazione):
1 AND x = x
dove x viene indicato come condizione di indifferenza e può valere 0 oppure 1.
Questa espressione può essere così interpretata: se uno degli argomenti vale 1 il risul-
tato dell’operazione di AND coincide sempre con il valore del secondo.
Come si può evidenziare dalla tavola di verità dell’operatore XNOR, esso implemen-
ta le funzioni di verifica della uguaglianza tra i bit in ingresso (input). Cioè A XNOR
B può anche essere indicato come "A uguale B"".
72
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 73
Per meglio comprendere questo processo, si supponga di avere due reti intercon-
nesse con indirizzo rispettivamente 192.168.1.0/24 e 172.16.0.0/16 (figura 5.4).
Nella tabella 5.7 è esposto il processo nei due casi di destinazione locale e desti-
nazione remota.
Parte 3
74
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 75
75
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 76
Parte 3
76
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 77
• nN = Numero di Network
• nS = Numero di Subnet
• nBiN = Numero di Bit della parte <netID>
• nBiS = Numero di Bit della parte <subNetID>
• nH = Numero di Host
• nBiH = Numero di Bit della parte <hostID>
• nBiSM = Numero di Bit appartenenti alla subnet mask
Ricavato il numero di bit da dedicare alla parte subnet (nBiS) e alla parte host
(nBiH) è possibile ottenere gli indirizzi delle nS subnet e degli nH host considerando
la rappresentazione binaria dei singoli ottetti interessati dal processo di subnetting.
77
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 78
Parte 3
Figura 5.5: Subnetting di una rete di classe C, in due sottoreti secondo le direttive
RFC 950.
2nBiS – 2 ≥ nS
dalla quale si deduce il valore minimo da assegnare alla variabile nBiS, cioè 2.
Trattandosi di un indirizzo iniziale di classe C, i suddetti 2-bit vengono sottratti
dal quarto ottetto (<hostID>). Inoltre, per quanto detto in precedenza, la separazione
dei bit avviene sempre a partire dal bit di ordine superiore e in modo contiguo.
A questo punto, applicando la relazione seguente, ricaviamo il numero di bit
facenti parte della nuova subnet mask:
A questo punto per ricavare gli indirizzi IP da assegnare alle due nuove subnet, è
necessario ragionare sui 2-bit di subnetting dell’ultimo ottetto evidenziando tutte le
potenziali configurazioni (quattro, 22) che si possono ottenere assegnando ad essi i
due valori possibili 0 ed 1 (tabella 5.9).
Da ciò, scartando le due configurazioni tutti-0 (valore decimale 0) e tutti-1 (valo-
re decimale 192), si ottengono le due subnet 192.168.1.64/26 e 192.168.1.128/26 della
tabella 5.9.
78
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 79
Tabella 5.9: Processo di derivazione dell'indirizzo IP delle due subnet per l'esempio
di figura 5.5
Conversione da binario in decimale del quarto ottetto
Posizione 7 6 5 4 3 2 1 0
Peso =
2posizione 128 64 32 16 8 4 2 1
Valore decimale Configurazioni possibili
<subNetID> <hostID>
0 0 0 0 0 0 0 0 0
64 0 1 0 0 0 0 0 0
128 1 0 0 0 0 0 0 0
192 1 1 0 0 0 0 0 0
nBiH = 32 – (24 + 2) = 6.
nH = 2nBiH – 2 = 26 – 2 = 62.
79
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 80
Parte 3
Tabella 5.10: Processo di derivazione degli indirizzi IP degli host per le due subnet dell'esempio di figura 5.5
Valore decimale Configurazioni possibili
<subNetID> <hostID>
Prima subnet 64=tutti-0 ‡ hostID 0 1 0 0 0 0 0 0
65 0 1 0 0 0 0 0 1
… 0 1 X X X X X X
126 0 1 1 1 1 1 1 0
127=tutti-1 ‡ hostID 0 1 1 1 1 1 1 1
Seconda subnet 128=tutti-0 ‡ hostID 1 0 0 0 0 0 0 0
129 1 0 0 0 0 0 0 1
… 1 0 X X X X X X
190 1 0 1 1 1 1 1 0
191=tutti-1 ‡ hostID 1 0 1 1 1 1 1 1
• Secondo ottetto: verrà utilizzato per indicare la subnet di una generica sede,
secondo la seguente convenzione: 1=Milano, 2=Roma, 3=Cagliari, 4=Pa-
lermo.
• Terzo ottetto: verrà utilizzato per indicare una generica subnet di una gene-
rica sede.
81
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 82
Parte 3
«… IP addresses are not permitted to have the value 0 or –1 for the <Host-number>
or <Network-prefix> fields except in the special cases listed above. This implies
that each of these fields will be at least two bits long.
DISCUSSION
Previous versions of this document also noted that subnet numbers must be
neither 0 nor -1, and must be at least two bits in length. In a CIDR world, the
subnet number is clearly an extension of the network prefix and cannot be
interpreted without the remainder of the prefix. This restriction of subnet numbers
is therefore meaningless in view of CIDR and may be safely ignored…».
2nBiH – 2 ≥ 120
82
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 83
dalla quale si ricava il minimo valore di nBiH che soddisfa la disequazione. Cioè: nBiH
= 7.
Trattandosi di un indirizzo di classe C i bit (nBiS) da utilizzare per la parte
<subNetID> sono da estrarre dal quarto ottetto (<hostID>). In particolare si ottiene:
nBiS = 8 – nBiH = 8 – 7 = 1
nS = 2nBiS = 21 = 2
Infine, è possibile ricavare anche la subnet mask in formato network prefix (come
numero di bit) per queste due prime subnet:
Pertanto, le prime due subnet che si possono dedurre assegnando all’unico bit
nBiS i due valori possibili, sono: 192.192.192.0/25 e 192.192.192.128/25, come indica-
to nella tabella 5.12.
2nBiH – 2 ≥ 60
dalla precedente equazione si ricava il minimo valore di nBiH che soddisfa la dise-
quazione. Cioè: nBiH = 6.
Pertanto, il numero di bit (nBiS) da utilizzare per la parte <subNetID> è dato da:
nBiS = 8 – nBiH = 8 – 6 = 2
83
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 84
Parte 3
nS = 2nBiS = 22 = 4
ma coincide con 2, in quanto dei due bit della parte <subNetID> il primo ha un valo-
re prefissato (1) trattandosi della subnet iniziale 192.192.192.128 (tabella 5.13).
Tabella 5.13: Deduzione degli indirizzi IP per le due nuove subnet (da notare che il bit
in posizione 7 è fisso a 1)
Conversione da binario in decimale del quarto ottetto
<subNetID> <hostID>
Posizione 7 6 5 4 3 2 1 0
Peso = 128 64 32 16 8 4 2 1
2posizione
128 1 0 0 0 0 0 0 0
192 1 1 0 0 0 0 0 0
2nBiH – 2 ≥ 25
dalla quale ricaviamo il minimo valore di nBiH che soddisfa la disequazione. Cioè:
nBiH = 5.
Pertanto, il numero di bit (nBiS) da utilizzare per la parte <subNetID> è dato da:
nBiS = 8 – nBiH = 8 – 5 = 3
nS = 2nBiS = 23 = 8
ma coincide con 2, in quanto dei tre bit della parte <subNetID> i primi due hanno un
valore prefissato (11) trattandosi della subnet iniziale 192.192.192.192 (tabella 5.14)
84
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 85
Tabella 5.14: Deduzione degli indirizzi IP per le due nuove subnet (da notare che i
primi due bit più significativi hanno valore fisso a 1).
Conversione da binario in decimale del quarto ottetto
<subNetID> <hostID>
Posizione 7 6 5 4 3 2 1 0
Peso = 128 64 32 16 8 4 2 1
2posizione
192 1 1 0 0 0 0 0 0
224 1 1 1 0 0 0 0 0
Tabella 5.15: Processo di derivazione degli indirizzi IP delle quattro subnet (A. B, C e D), degli host
e di broadcast per ciascuna delle subnet.
Spazio di indirizzamento iniziale: 192.192.192.0/24
(A)192.192.192.0/25 126 Host: 1 ÷ 126
127 = Broadcast
192.192.192.128/25→ (B)192.192.192.128/26 62 Host: 129 ÷ 190
191 = Broadcast
192.192.192.192/26‡ (C)192.192.192.192/27 30 Host: 193 ÷ 222
223 = Broadcast
(D)192.192.192.224/27 30 Host: 225 ÷ 254
255 = Broadcast
85
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 86
Parte 3
192.192.192.0/24
192.192.193.0/24
192.192.194.0/24
192.192.195.0/24
192.192.196.0/24
192.192.197.0/24
192.192.198.0/24
192.192.199.0/24
86
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 87
Metodo 1
Calcolare il numero di bit da riservare al CIDR (nBiC) da estrapolare dalla parte
<NetID> e tali da consentire di identificare le 8 subnet. A tale proposito è sufficiente
risolvere la seguente disequazione binaria:
2nBiC ≥ 8
dalla quale si ricava il minimo valore di nBiC che soddisfa la disequazione. Cioè: nBiC
= 3.
Trattandosi di un indirizzo iniziale di classe C gli nBiC bit da utilizzare per il
supernetting sono da prelevare dall’ultimo ottetto della parte <netID> a partire dal bit
meno significativo. Pertanto, la subnet mask risulta essere:
192.192.192.0/21
192.192.192.0/255.255.248.0.
Così facendo l’ISP risparmia l’inserimento nel proprio router le 8 entry relative
alle 8 subnet e può specificare solo l’indirizzo sopra indicato.
Metodo 2
Si convertano in binario gli indirizzi delle 8 classi da aggregare:
A questo punto è sufficiente considerare l’insieme dei bit contigui a partire dal
più significativo condivisi da tutte le subnet appartenenti alla “supernet”:
87
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 88
Parte 3
88
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 89
A tale proposito, con la RFC 1700 resa obsoleta dalla RFC 3232, sono state defini-
te le seguenti convenzioni:
89
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 90
Parte 3
90
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 91
91
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 92
Parte 3
Dove ULP o Upper Layer Protocol identifica un generico protocollo di livello supe-
riore, cioè TCP o UDP.
In particolare, dettagliando la sezione IP Header, si possono evidenziare i campi
come indicato nella figura 5.7.
Terminologia
Il termine payload viene utilizzato in questo contesto per identificare all’interno di
una stringa di dati scambiati tra due N-entità (dove N identifica un qualsiasi livello
OSI o TCP/IP), la parte corrispondente alle informazioni degli utenti. Di solito non
vengono inclusi nel payload le informazioni di servizio inserite dal sistema, dette
anche system overhead, e necessarie per l’implementazione dei protocolli utilizzati a
ciascun livello. A volte il payload viene anche indicato come mission bit stream (cf.
Glossary of Telecommunication Terms-Federal Standard 1037C).
92
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 93
Dove:
■ IP Header (IH): è costituito da un insieme di blocchi (detti anche parole o
word) di 32-bit in numero variabile da un minimo di 5 (160-bit o 20 ottetti)
ad un massimo di 15 (480-bit o 60 ottetti), a seconda dell’aggiunta o meno del
campo “Options e Padding”. Poiché il minimo di un elemento dell’IP Header
ha una lunghezza pari a 32-bit o 4 ottetti, l’eventuale espansione dell’IH deve
essere eseguita per incrementi di 32-bit. Ciò vale per esempio per l’utilizzo
del campo “Options e Padding”: in tal caso l’aggiunta delle opzioni deve esse-
re effettuata avendo cura di riempire i bit mancanti per giungere a 32 con dei
caratteri “null” (operazione chiamata anche padding-zero), ottenendo così
“l’allineamento dell’IH”. Il ruolo dell’IP Header è di fornire tutti gli elementi
necessari per discriminare la parte header dalla parte payload, per identifi-
care il mittente ed il destinatario di un datagramma oltre ad eventuali altre
opzioni necessarie per il loro corretto instradamento.
■ IP Payload (IP): come si può osservare dalla figura 5.6, la componente pay-
load corrisponde alla PDU (Protocol Data Unit) associata ad un protocollo di
livello superiore ULP, secondo il principio di incapsulamento tipico dei
modelli stratificati (ISO/OSI o TCP/IP). Come per il campo precedente anche
il payload ha una lunghezza variabile.
Di seguito viene data una descrizione dettagliata dei vari campi che costituisco-
no la parte IP Header di un datagramma:
■ Version (VER)
• Dimensione campo: 4-bit
Occupa i primi 4-bit della struttura e contiene il numero di versione che defi-
nisce il formato dell’IH. La versione utilizzata correntemente è la 4 indicata
con l’acronimo IPv4. L’aver aggiunto il campo Version nell’IH consente di svi-
luppare nuovi protocolli e nuovi formati di header, con la possibilità di inte-
grarli in corso d’opera. È questo il caso, per esempio, di alcuni protocolli spe-
rimentali (Version 7: IP/IX (RFC 1475, RFC 1707); Version 8: “P” Internet
Protocol (RFC 1710); Version 9: Tcp and Udp with Bigger Address (TUBA)
(RFC 1347, RFC 1526, RFC 1561) e soprattutto della successiva versione IPv6.
IPv6 consente, tra l’altro, l’utilizzo di indirizzi IP a 128-bit.
■ Internet Header Length (IHL)
• Dimensione campo = 4-bit
• Unità di misura = 4 gruppi di ottetti (parole o word da 32-bit)
• Range = 5 ÷ 15 (default = 5)
Questo campo non è un contatore di byte ma indica la lunghezza dell’IH
espressa in blocchi o parole di 32-bit (4 ottetti). Pertanto il valore contenuto
in questo campo deve essere sempre un multiplo di 4. Le sue dimensioni pari
a 4-bit determinano dei limiti strutturali sulla lunghezza dell’IHL:
a. Dimensioni minime dell’IH: le dimensioni minime si hanno, come per la
maggior parte dei datagrammi IP, quando il campo Options non è utiliz-
zato. In tal caso la lunghezza corrispondente è di 5 (0x05) parole da 32-
bit ovvero 160-bit o 20 ottetti.
93
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 94
Parte 3
Per default il valore del campo TOS è 0 (0x0) ovvero Normal Service.
■ Total Length (TL)
• Dimensione campo = 16-bit
• Unità di misura = Ottetti
Il campo TL è costituito da 16-bit e definisce la lunghezza, espressa in ottetti,
dell’intero datagramma considerando sia la parte header sia la parte payload.
Da notare che la dimensione massima consentita per un datagramma IP è di
216 = 65.535 ottetti. Di fatto essa è limitata dal valore MTU (Maximum
Trasmission Unit) imposto dalla rete utilizzata a livello 2 (o livello Network
Interface TCP/IP). I datagrammi la cui lunghezza supera il valore dell’MTU
della rete utilizzata vengono frammentati, numerati ed inviati singolarmente.
Conoscendo i valori dei campi IHL (IP Header Length) e TL è possibile dedur-
re la lunghezza della parte payload di un datagramma tramite la seguente
espressione:
■ Identification (ID)
• Dimensione campo = 16-bit
94
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 95
95
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 96
Parte 3
96
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 97
Ricordiamo che la frammentazione è uno dei servizi essenziali che ogni modulo
IP deve fornire.
Il processo di frammentazione permette ad un datagramma di giungere a desti-
nazione (oltre che grazie alle capacità di indirizzamento e di routing del protocollo IP)
in modo indipendente dalla tipologia fisica delle reti attraversate tenendo conto
soprattutto della potenziale differenza in termini di dimensione massima (a volte
anche minima) dei pacchetti (MTU, Maximum Transmision Unit) supportati da cia-
scuna di esse. Infatti, come già anticipato precedentemente, la dimensione massima
di un datagramma è determinata a priori sia in virtù del limite di 16-bit del campo
Total Length che stabilisce il limite massimo di 216 = 65.535 ottetti sia, soprattutto, dal
valore MTU delle singole reti interconnesse (che può oscillare da 48 ottetti di una rete
ATM fino a 65.535). Naturalmente questo limite risulta essere impraticabile per la
maggior parte delle reti e degli host. Pertanto, tutti gli host di una rete TCP/IP devono
essere preparati per affrontare il problema della frammentazione (host mittente) di un
datagramma, qualora la sua dimensione superi il valore MTU della rete utilizzata per
l’inoltro, e del relativo riassemblaggio (host destinazione).
Ogni host deve essere comunque in grado di inoltrare un datagramma di almeno
68 ottetti senza necessità di frammentazione. Ciò in quanto un datagramma IP può
contenere un header di dimensioni massime pari a 60 ottetti ed il minimo frammen-
to deve essere di 8 ottetti (cf. RFC 791, pag. 24).
97
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 98
Parte 3
c) Segue una rotta indipendente da tutti gli altri frammenti, generati dallo stes-
so datagramma, durante il tragitto dall’host mittente all’host destinazione.
d) La frammentazione e il riassemblaggio avviene end-to-end.
e) La perdita o danneggiamento anche di un solo frammento provoca lo scarto
dell’intero datagramma.
■ Frammentazione trasparente: processo di frammentazione che si svolge in ma-
niera del tutto trasparente rispetto al modulo IP degli host interagenti e rispetto
ai protocolli di livello superiore (ULP), scatenato dai router intermedi in caso di
reti interconnesse con diversi valori di MTU (cf. gli esempi 1 e 2 trattati alla pagg.
95-96). Nel caso di reti ATM tale tipo di frammentazione è di default e viene
chiamata segmentazione. In tal caso la dimensione MTU è pari a 48 ottetti.
■ Frammentazione intranet o “Network-Dependent”: si riferisce al processo di
frammentazione e relativo riassemblaggio che si verifica all’interno di una rete
intranet (tipicamente un insieme di reti locali fisicamente separate (per esempio:
distribuite geograficamente), di diversa tipologia (per esempio: Ethernet, Token
Ring) e interconnesse mediante reti geografiche; ma anche nel caso più semplice
di una rete singola nel caso di utilizzo di particolari applicazioni (tipicamente
basate su protocollo di trasporto UDP) che utilizzano pacchetti di dimensioni
consistenti anche superiori a 64K) in seguito all’inoltro dei pacchetti tra router
che interconnettono reti di tipo diverso (con MTU potenzialmente diversi). In tal
caso ricadendo tutti i dispositivi di internetworking (ovvero: router) sotto una
stessa giurisdizione ed in base alla tipologia di reti utilizzate, è possibile determi-
nare regole univoche per il trattamento della frammentazione (“private agree-
ment”). Si tratta comunque di un processo di frammentazione trasparente.
■ Frammentazione intenzionale: come riportato nella RFC 1122 (sezione 3.3.3)
ogni host opzionalmente può implementare un meccanismo di frammentazione
dei datagrammi in uscita detto intenzionale o provocato. Esso consiste nell’in-
viare datagrammi aventi dimensioni molto grandi e tali da innestare sicura-
mente il processo di frammentazione. Ciò da un lato permette di ottimizzare le
performance riducendo la quantità di lavoro che un host deve dedicare prima e
dopo l’invio dei dati. D’altro canto esso può provocare un degrado delle presta-
zioni dei router. Pertanto, è da utilizzare solo all’interno di reti private. Per l’im-
plementazione di questo meccanismo viene definito un parametro chiamato
EMTU_S (“Effective MTU for Sending”) come dimensione massima di un data-
gramma da inviare per una particolare combinazione della tripletta (IP destina-
zione, IP Mittente, TOS). Normalmente il valore EMTU_S deve essere minore o
uguale dell’MTU dell’interfaccia di rete corrispondente all’indirizzo sorgente del
datagramma. Inoltre ogni host deve implementare un meccanismo che consenta
al protocollo di trasporto (tipicamente TCP) di dedurre la dimensione massima
di un messaggio in spedizione o “Maximum Message Size that may be Sent”
(MMS_S). In caso di non utilizzo di frammentazione intenzionale il valore di tale
parametro sarà derivato dalla relazione seguente: MMS_S = EMTU_S – IHL.
Pertanto, ogni host che non utilizza frammentazione intenzionale deve assicu-
rarsi che il protocollo TCP o un applicazione che utilizza il protocollo UDP rice-
vano dal livello IP il valore MMS_S e non possano mai inviare datagrammi di
dimensione superiore a MMS_S. Al fine di evitare frammentazione intenzionale
è consigliato utilizzare un valore EMTU_S sufficientemente basso da non scate-
98
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 99
Considerazioni sull’MTU
■ Il valore dell’MTU di ogni interfaccia di rete deve essere configurabile.
■ Ogni implementazione del livello IP deve avere a disposizione un flag “All-
Subnets-MTU” che consenta di specificare l’utilizzo di un MTU per tutte le desti-
nazioni appartenenti alle sole subnet derivate dalla stessa rete, ma non ad altre
reti (ovvero: lo stesso concetto del Broadcast “All-Subnets-Directed-Broadcast”.
Nel caso di host multi-homed questo flag è necessario per ciascuna interfaccia di
rete. Il suo utilizzo forza l’host ad utilizzare la network mask anziché la subnet
mask per la scelta del parametro EMTU_S.
■ Alcune implementazioni prevedono la determinazione dell’MTU (sia via UDP
sia via TCP) al fine di ottimizzare il processo di frammentazione.
Inoltre tutti gli host devono essere preparati per accettare datagrammi che abbia-
no una dimensione di almeno 576 ottetti (sia che arrivino in forma intera sia fram-
mentata). Questo limite è identificato mediante il valore EMTU_R (Effective MTU to
Receive) definito nella RFC 1122 di cui riportiamo un estratto:
99
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 100
Parte 3
I. Ricavare il valore MTU della interfaccia di rete verso la quale deve essere
inoltrato il datagramma.
II. Verificare se la dimensione (Total Length) del datagramma non eccede il
valore di MTU: in tal caso non si necessita di frammentazione. Viceversa,
procedere dal passo III.
III. Stabilire il numero e le dimensioni dei frammenti necessari tenendo conto
che occorre riservare almeno 20 ottetti (supponendo che non sia utilizzato il
campo opzioni) per l’header di ogni frammento, e determinare la dimensio-
ne di ciascun frammento (che deve essere multiplo di 8-ottetti, tranne l’ulti-
mo frammento). Inoltre ogni frammento deve essere opportunamente nu-
merato. Indicando con MOD il resto intero associato ad una divisione intera
e con DIV il relativo quoziente intero, ne segue che:
i. Il numero di blocchi da 8 ottetti per ogni frammento (NBF) è dato da:
NBF = (MTU – 4*IHL) DIV 8.
ii. La lunghezza del payload di ciascun frammento (LPF) la quale, tranne
per l’ultimo frammento deve essere multiplo di 8 ottetti, è data da:
IF ((MTU - 4*IHL) MOD 8) = 0)
/* Cioè, se (MTU – 4*IHL) è multiplo di 8 ? */
THEN LPF = MTU – 4*IHL
ELSE LPF = primo valore inferiore a (MTU – 4*IHL) che sia divisibile
per 8.
iii. Il numero di frammenti (NF) è dato da:
NF = (TL – 4*IHL) DIV LPF.
iv. Inoltre, se la divisione precedente ha un resto diverso da 0 (ovvero: la
lunghezza del datagramma originale non è un multiplo esatto di LPF e
quindi [(TL – 4*IHL) MOD LPF) ≠ 0] allora esisterà un ulteriore fram-
mento la cui dimensione è data proprio dal resto intero della stessa divi-
sione, cioè:
lunghezza_ultimo_frammentto = (TL - 4*IHL) MOD LPF
In tal caso il numero dei frammenti sarà aggiornato a NF = NF + 1.
NF = [(TL – 4*IHL) MOD 8] ? [(TL – 4*IHL) DIV LPF] + 1 : [(TL – 4*IHL) DIV LPF];
100
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 101
IF Condizione
x = Esp1
ELSE
x = Esp2
Esempio 1
Si supponga di avere le seguenti reti interconnesse A, B e C con MTU rispettivamente
di 4482, 1500 e 525 (figura 5.9).
Si consideri un datagramma caratterizzato dal campo Identification = 14361 ori-
ginato da un host della rete A, avente una lunghezza totale (TL = Total Length) di 4482
e diretto ad un host della rete B. Supponendo che non siano state utilizzate opzioni IP
(cioè risulta IHL = 5), le dimensioni del payload IP saranno pari a 4482 – 20 = 4462. Il
datagramma per giungere a destinazione viene inoltrato al router AB il quale lo inol-
tra sulla rete B. Essendo le sue dimensioni effettive (payload) inferiori al valore
dell’MTU della rete B, il router AB deve procedere con la sua frammentazione.
Essendo l’MTU della rete B pari a 1500 applicando le relazioni viste in preceden-
za si avrà:
101
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 102
Parte 3
IV. Non essendo 4462 (TL – 4*IHL) un multiplo di 1480 (LPF) esisterà un quarto
frammento avente dimensioni pari a: lunghezza_ultimo_frammentto = (TL -
4*IHL) MOD LPF = 4462 MOD 1480 = 22.
V. Infine: FO = N*NBF = N*185, con N = 0, 1, 2, 3.
Esempio 2
Consideriamo le reti raffigurate nella figura 5.9 dell’esempio precedente.
Si consideri un datagramma caratterizzato dal campo Identification = 5760 origi-
nato da un host della rete B, avente una lunghezza totale (TL = Total Length) di 1500 e
rivolto ad un host della rete C. Supponendo che non siano state utilizzate opzioni IP
(cioè risulta IHL = 5), le dimensioni del payload IP saranno pari a 1500 – 20 = 1480.
Quando il datagramma giunge al router BC che deve inoltrarlo sulla rete C esso deve
procedere con la sua frammentazione, in quanto le sue dimensioni sono superiori a
quelle dell’MTU della rete C di destinazione.
102
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 103
Essendo l’MTU della rete B pari a 525 applicando le relazioni viste in precedenza
avremo:
103
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 104
Parte 3
104
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 105
III. Identificare tutti i frammenti che condividono gli stessi valori per ognuno dei
quattro campi Identification, Source, Destination, Protocol.
IV. Fino a quando il timer non è scaduto continuare ad assemblare gli altri
frammenti ciascuno nella posizione relativa indicata dal campo FO. Altri-
menti rilasciare tutte le risorse allocate, scartare i restanti frammenti ed inol-
trare al mittente il messaggio ICMP (Type = 11, Code = 1) Fragment reassem-
bly time exceeded come specificato nella RFC 792, indicando il primo fram-
mento ricevuto (64 byte o meno).
V. Se tutta la procedura è eseguita correttamente il payload IP ricostruito deve
essere passato al protocollo ULP specificato nel campo Protocol.
105
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 106
Parte 3
■ Datagrammi con valori elevati di TTL possono permanere a lungo nel buffer di
ricostruzione e bloccare per tanto tempo le risorse necessarie. Inoltre ciò può
avere una ripercussione negativa sul valore del parametro MSL (Maximum
Segment Lifetime) che viene inutilmente settato con un valore elevato dai proto-
colli di livello trasporto. MSL controlla la velocità massima con la quale i fram-
menti dei datagrammi vengono inviati. Un valore elevato dell’MSL causa una
diminuzione della velocità massima. Le specifiche TCP assumono un valore per
MSL pari a 2 minuti, il quale determina un accettabile limite superiore per quan-
to riguarda il valore del timer.
■ Il messaggio ICMP (Type = 11, Code = 1) “Fragment reassembly time exceeded” (cf.
RFC 792) che viene notificato dall’host destinazione in caso di scadenza del timer
non è gestito da tutte le implementazioni TCP/IP. Ciò potrebbe causare qualche
problema o comunque inutile sovraccarico di traffico.
106
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 107
■ Protocol (PROT)
• Dimensione campo = 8-bit
• Range = 0 ÷ 255
Il campo protocollo (PROT) viene utilizzato per identificare a quale proto-
collo di livello superiore (ULP) si riferiscono i dati contenuti nel campo pay-
load. Attraverso questo campo vengono realizzate operazioni di multiple-
xer/demultiplexer in fase di incapsulamento/decapsulamento dei dati scam-
biati con i protocolli ULP.
In questo modo ad ogni ULP è assegnato univocamente un valore definito da
IANA (per esempio: ICMP = 1, IGMP = 2, TCP = 6, UDP = 17, …). Pertanto, ad
ogni PDU di un protocollo ULP (da notare che si fa riferimento ai protocolli
ICMP e IGMP come protocolli ULP anche se in effetti sono collocati allo stes-
so livello del protocollo IP, in quanto anch’essi vengono incapsulati in PDU
IP), in fase di incapsulamento in un datagramma IP, viene associato un
determinato valore PROT. Così facendo quando il datagramma giunge a
destinazione, il corrispondente livello IP all’atto del decapsulamento estrae il
payload e lo consegna al protocollo identificato dal campo PROT.
Per avere la lista completa dei valori possibili consultare il sito http://www.
iana.org/assignments/protocol-numbers.
107
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 108
Parte 3
Alcuni dei valori per i protocolli più comuni descritti nella tabella 5.17.
108
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 109
Parte 3
110
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 111
IP Options e Security
I servizi messi a disposizione dal campo Options e Padding sono raramente utilizza-
ti. Di conseguenza le relative funzionalità, in generale, possono sfuggire ad una fase
di testing e debugging accurata, lasciando spazio a potenziali buchi utilizzabili per
attacchi di tipo Denial Of Service o di violazione della security del sistema.
111
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 112
Parte 3
■ Copied Flag (CF) (1 bit): è identificato dal bit più significativo (MSB), cioè
quello più a sinistra, e serve per indicare ad un router o all’host sorgente se
durante il processo di frammentazione di un datagramma deve copiare il
contenuto del campo Options su tutti i frammenti (Copied = 1) oppure sola-
mente nel primo (Copied = 0). Per tale motivo esso viene anche indicato con
il termine Copy on Fragmentation (CF).
■ Option-Class (2-bit): è costituito dai successivi due bit e permette di identifi-
care 4 classi, delle quali quelle utilizzate sono solamente quelle di ordine pari
(0 e 2) come indicato nella tabella 5.19.
112
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 113
113
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 114
Parte 3
Come riportato nella tabella 5.21 esistono due tipi di opzioni di sicurezza o
IPSO:
• US DoD Basic Security Option (SEC), RFC 1108: valore decimale: 130;
valore esadecimale: 0x82 (tabella 5.21).
• US DoD Extended Security (E-SEC), RFC 1108: valore decimale: 133; valo-
re esadecimale: 0x85.
Le opzioni di sicurezza estese consentono di aggiungere delle ulteriori
specifiche. Il loro formato è mostrato nella tabella 5.22.
Per una descrizione più approfondita sulle IPSO consultare le RFC 791 e RFC
1108 ed il sito http://www.iana.org/assignments/protocol-numbers.
■ Record Route (RR): valore decimale: 7; valore esadecimale: 0x07.
L’opzione RR è caratterizzata dal valore decimale 7 del campo Option-Type e
ha la struttura mostrata nella tabella 5.23.
Essa può essere utilizzata da un host mittente per istruire ciascun router
attraversato da un datagramma contenente questa opzione, ad inserire il
proprio indirizzo IP di inoltro in uno spazio apposito (campo variabile Route
Data) riservato all’interno dello stesso datagramma e identificato dal campo
Pointer Offset o Next Slot Pointer. L’indirizzo IP che ogni router inserirà nella
lista è quello più lontano rispetto all’host mittente (farthest o outgoing o
forwarding). La registrazione degli indirizzi IP da parte dei vari router attra-
versati dal datagramma, deve avvenire nel rispetto dei limiti dei 40 ottetti a
disposizione per la parte Options e Padding. Questo spazio viene predisposto
dall’host sorgente ed inizializzato a 0.
114
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 115
115
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 116
Parte 3
116
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 117
• Strict Source Route (SSR) o Strict Source e Record Route (SSRR) valore
decimale: 137; valore esadecimale: 0x89.
Nel caso di SSR l’host mittente predispone la lista esatta degli indirizzi IP
dei router che devono essere attraversati dal datagramma. A differenza
dell’LSR è obbligatorio che indirizzi consecutivi specificati nella lista
appartengano a reti adiacenti cioè direttamente connesse (ovvero: non
possono risiedere su due subnet separate da più di un router). Viceversa,
l’inoltro del datagramma non può essere effettuato e di conseguenza
esso verrà scartato.
Questa opzione viene indicata anche come Strict Source and Record
Route (SSRR) in quanto consente, alla fine del processo di SR, di ricavare
la traccia dei router attraversati dal datagramma come l’opzione Record
Route.
Il formato dell’opzione SSRR è mostrato nella tabella 5.25.
L’host dal quale viene inviato il datagramma con l’opzione LSR o SSR
prepara la struttura del datagramma inizializzando il campo Destination
Address con il primo indirizzo della lista LSR o LSR ed il campo Pointer
con il valore 4.
Ciascun router interessato dal processo LSR o SSR prepara il datagram-
ma da inviare inserendo come campo Destination Address l’indirizzo IP
puntato dal campo Pointer. Dopodiché registra nella lista degli indirizzi
LSR o SSR l’indirizzo IP dell’interfaccia verso la quale deve essere reinol-
trato il datagramma nel posto indicato da Pointer. Infine viene incre-
mentato di 4 unità il valore di Pointer.
Nel caso del processo LSR il campo Destination Address può contenere
anche l’indirizzo IP di un router non specificato nell’elenco LSR ma pre-
levato direttamente dalla tabella di routing locale dello stesso router.
Continuando in questo modo il datagramma caratterizzato dal processo
LSR o SSR raggiungerà la fine del percorso quando il valore del campo
Pointer conterrà un valore di offset che sarà superiore alla lunghezza del-
l’opzione (Option-Length) e l’host destinatario iniziale è stato raggiunto
(ovvero: l’ultimo indirizzo indicato nell’header IP coincide con uno degli
indirizzi locali). A questo punto, come specificato nella RFC 1122, la lista
viene passata così com’è ad un protocollo di livello superiore (ULP) o
applicazione (tramite un protocollo ULP) o per costruire la risposta
all’host mittente tramite il protocollo ICMP nel caso di errore o messag-
gio di reply ad un eventuale comando ping. In ogni caso la lista di SR pas-
sata dal livello networking viene successivamente invertita e la risposta
verrà quindi inviata al primo indirizzo indicato nella nuova lista. Poiché
117
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 118
Parte 3
118
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 119
119
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 120
Parte 3
Appendice 5A:
Domande - FAQ (Frequently Asked Questions)
1) Utilizzando la regola del “valore decimale del primo ottetto” quale dei se-
guenti indirizzi IP sono di classe B?
a. 1.2.3.4
b. 127.255.255.254
c. 128.0.0.1
d. 191.1.0.1
e. 192.168.1.200
f. 224.0.0.1
[R1]; c, d.
120
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 121
121
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 122
Parte 3
6) Indicare quali dei seguenti indirizzi IP non sono validi per l’assegnazione ai
nodi di una rete?
a. 127.255.255.255
b. 1.2.3.4
c. 225.0.0.1
d. 0.0.0.1
e. 1.0.0.0
f. 1.0..0.1
g. 192.168.1.255
h. 192.168.1.256
i. 256.255.255.254
j. 255.255.255.255
[R6]
a: Riservato per fini diagnostici (loopback).
c: Riservato per applicazioni multicast (Classe D) e non utilizzabile
come indirizzo da assegnare agli host.
d, e: Ogni indirizzo IP da assegnare ad un nodo non può mai iniziare con 0
in quanto esso ha il significato speciale “this network”. Più in generale
né la parte <netID> né quella <hostID> possono essere costituite da
tutti-0.
h, i: Nessuno dei quattro ottetti di qualsiasi indirizzo IP può contenere un
valore decimale superiore a 255. Il valore massimo consentito è pari a
28 –1.
g, j: Né la parte <netID> né la parte <hostID> di un indirizzo IP da asse-
gnare ad un nodo possono mai contenere tutti-1 in quanto questa
configurazione assume il significato di broadcast.
7) Volendo suddividere una rete di classe C in più sottoreti, qual è il numero
massimo di bit della parte <hostID> (quarto ottetto) che si possono prende-
re in prestito?
a. 7
b. 5
c. 6
d. 8
[R7]
c: Ricordiamo che il numero di host (nH) che possono essere compresi in
una subnet costituita da nS bit è dato da: nH = 2nBiS – 2. Dove il “–2” tiene
conto del fatto che la parte <hostID> non può mai contenere né tutti-0
né tutti-1. Pertanto il numero di bit nBiH da riservare alla parte host non
può essere mai inferiore a 2. Quindi 8 –2 = 6 è il massimo numero di bit
che si possono prendere in prestito dalla parte <hostID> e dedicare alla
sezione <subNetID>.
122
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 123
123
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 124
Parte 3
Tabella 5.28: Valori assunti dal campo <subNetID> ovvero dai 6-bit di ordine superio-
re del terzo ottetto per l'indirizzo di rete dell'esercizio 2
Conversione da binario in decimale del terzo ottetto
Posizione 7 6 5 4 3 2 1 0
Peso =
2posizione 128 64 32 16 8 4 2 1
Valore decimale configurazioni possibili
<subNetID> <hostID>
0 0 0 0 0 0 0 0 0
4 0 0 0 0 0 1 0 0
... X X X X X X 0 0
248 1 1 1 1 1 0 0 0
252 1 1 1 1 1 1 0 0
Parte 3
Per facilitare le operazioni di subnetting conviene riferirsi alla tabella mostrata qui
di seguito:
Modalità d’uso: di solito nella maggior parte dei problemi di subnetting è assegna-
ta la subnet mask o in formato decimale (per esempio: 255.255.252.0) o in formato
network prefix o CIDR/VLSM (per esempio: /22). Pertanto è possibile utilizzare la
tabella precedente per derivare gli indirizzi delle subnet, degli host e di broadcast
seguendo i seguenti passi:
I. Se il valore della subnet mask è espresso in formato decimale (per esempio:
255.255.252.0) identificare immediatamente la colonna corrispondente al passo,
altrimenti identificare il numero di bit di subnetting nBiS dell’ottetto interessato
dal subnetting (secondo, terzo o quarto). A tale proposito è necessario verificare la
classe di origine dell’indirizzo IP assegnato ed accertarsi se il numero espresso in
formato CIDR si riferisce al numero effettivo di bit di subnetting nBiS oppure
complessivamente al numero di bit della netmask nBiSM:
• Considerando l’esercizio 2, per esempio se la subnet mask fosse stata assegna-
ta in formato CIDR con il valore /22 allora trattandosi di un indirizzo di clas-
se B si può immediatamente dedurre il numero di bit di dell’ottetto di sub-
netting: nBiS_OS = nBiS = nBiSM mod 8 = 22 mod 8 = 6.
• Nel caso di un indirizzo di classe A con subnet mask /30 sarà: nBiS_OS = 30
mod 8 = 6.
II. Conoscendo la subnet mask (in qualsiasi formato) identificare la colonna corri-
spondente al valore del passo da utilizzare per la determinazione delle subnet
(nell’esercizio precedente, 4).
III. Calcolare le subnet ed i rispettivi range di indirizzi IP da assegnare agli host
secondo le regole a) oppure b).
IV. Identificare il range di indirizzi riservati agli host a cui appartiene l’indirizzo
assegnato (nell’esercizio precedente, il range è 190.190.0.0 – 190.190.3.254).
V. Identificare l’indirizzo di broadcast per ogni subnet considerando l’ultimo indi-
rizzo IP di ciascun range degli host (nell’esercizio precedente, 190.190.3.255).
126
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 127
d) Regola matematica per la determinazione del “passo” delle subnet nel caso
in cui si conosca la subnet mask in formato decimale
Conoscendo la subnet mask in formato decimale è possibile ricavare il valore del
“passo” delle subnet dalla seguente relazione:
passo = 256 – <Valore Decimale Ottetto Subnetting>
Per esempio nel caso 255.255.252.0 sarà: passo = 256 – 252 = 4.
127
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 128
Parte 3
Tabella 5.30: Deduzione del "passo" delle subnet tramite trasformazione in binario del
terzo ottetto interessato dal subnetting
Conversione da binario in decimale del terzo ottetto
Posizione 7 6 5 4 3 2 1 0
Peso =
2posizione 128 64 32 16 8 4 2 1
nBiS = 4 1 1 1 1 0 0 0 0
Valore decimale 240
128
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 129
Tabella 5.31: Deduzione del "passo" delle subnet tramite trasformazione in binario del
quarto ottetto interessato dal subnetting
Conversione da binario in decimale del quarto ottetto
Posizione 7 6 5 4 3 2 1 0
Peso =
2posizione 128 64 32 16 8 4 2 1
nBiS = 8 (III Ottetto)
+ 4 (IV Ottetto) = 12 1 1 1 1 0 0 0 0
Valore decimale 240
A questo punto possiamo calcolare il “passo” delle subnet prodotte dal sub-
netting:
passo = 256 – 240 = 16.
Pertanto le 2nBiS = 4096 subnet derivate saranno: 143.1.0.0, 143.1.0.16,
143.1.0.32, ... 143.1.9.48, ..., 143.1.255.240.
Quindi l’indirizzo 143.1.9.61/28 sarà compreso nella subnet 143.1.9.48/28
alla quale corrisponde l’indirizzo di broadcast 143.1.9.63. Mentre il range di
host validi per la stessa subnet sarà: 143.1.9.49 ÷ 143.1.9.62.
6) Determinare l’indirizzo IP di aggregazione (summarization) per le due reti
172.26.136.0/24 e 172.26.143.0/24.
a. 172.26.128.0/20
b. 172.26.136.0/20
c. 172.26.136.0/21
d. 172.26.136.0/22
[R6]: c. 129
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 130
Parte 3
[R8]: d.
Trattandosi di un indirizzo di classe B risulta: nBiN = 16, nBiH = 16.
Dovendo creare delle subnet è necessario prendere in prestito alcuni dei 16-
bit della parte <hostID>. Dovendo comunque disporre di 650 per ciascuna
subnet è necessario riservare un numero minimo di nBiH bit tale per cui sia
soddisfatta la seguente disequazione binaria:
nN (numero di Host) = 2nBiH – 2 ≥ 650
dalla quale si ricava: nBiH = 10.
Pertanto la quantità di bit rimanenti per la parte <subNetID> è data da:
nS = 16 – 10 = 6.
Per cui la network mask risulta essere /22 in notazione CIDR oppure
255.255.252.0 in notazione decimale.
9) Un cliente ha ottenuto dal suo Internet Service Provider (ISP) la seguente sub-
net di classe C: 223.223.223.0/24. Volendo organizzare la propria rete interna
secondo quanto indicato nella figura 5.18, nella quale:
Subnet1 (LAN1): richiede 100 indirizzi
Subnet2 (LAN2): richiede 50 indirizzi
Subnet3 (LAN3): richiede 25 indirizzi.
Nell’ipotesi di utilizzare dispositivi di networking (router) che supportano
CIDR/VLSM definire gli indirizzi IP da associare alle tre subnet IP e le relati-
ve subnet mask e formulare inoltre un'ipotesi di configurazione dei router
mediante tabelle di routing statiche:
131
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 132
Parte 3
Tabella 5.34: Esempio di configurazione statica delle tabelle di routing dei router
Router Descrizione tabella Routing Configurazione
Router1I “subnet2 via router12” ip route 223.223.223.128 225.225.225.192 223.223.223.2
“subnet3 via router13” ip route 223.223.223.192 225.225.225.224 223.223.223.3
Router12 “Internet via router1I” ip route 0.0.0.0 225.225.225.255 223.223.223.1
“subnet3 via router13” ip route 223.223.223.192 225.225.225.224 223.223.223.3
Router13 “Internet via router1I” ip route 0.0.0.0 225.225.225.255 223.223.223.1
“subnet2 via router12” ip route 223.223.223.128 225.225.225.192 223.223.223.2
132
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 133
133
05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 134