05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 60 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 allinterno 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 allattuale 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). 61 Figura 5.1: Esempio di reti interconnesse 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 61 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 allinterno 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 lavvento dellIPv6). 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 lunit 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 Formato decimale e binario (RFC 791, RFC 1166) Ogni protocollo di rete che opera a livello 3 del modello ISO/OSI, cio a livello Rete, necessita di un meccanismo di indirizzamento logico. Affinch un protocollo sia instradabile, che consenta cio la separazione in reti diverse, deve prevedere un indi- rizzo logico separato in due parti: una che consenta di identificare univocamente la rete di appartenenza tra tutte le reti, e una che identifichi univocamente il nodo allin- terno della propria rete. Un generico nodo di una rete pu essere costituito da com- puter, router, stampanti con interfaccia di rete o, pi in generale, da un qualsiasi appa- rato dotato di interfaccia di rete che, normalmente, viene chiamato host. Origine del termine host Lutilizzo del termine host deriva dal fatto che, originariamente, le applicazioni ed i servizi venivano ospitati (hosted) su computer centrali, ed il collegamento avveniva tramite lutilizzo di terminali (TeleTYpe o TTY). I computer host venivano equipag- Parte 3 62 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 62 giati con un sistema operativo con funzionalit Time-Sharing (per esempio: BBN Timesharing System su DEC PDP-1, 1962). Con lavvento 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). Gli indirizzi logici utilizzati dal protocollo IP prendono il nome di IP Address e sono espressi in forma gerarchica su due livelli (network, host) o su tre livelli (network, subnet, host) ed assegnati ad ogni singola interfaccia logica. Poich si utilizzano interfacce logiche possibile assegnare ad una singola inter- faccia fisica (per esempio: scheda di rete) pi indirizzi IP; tale interfaccia prende il nome di multi-homed. In alcuni casi con questo termine si identificano anche host con pi interfacce fisiche che avranno, di conseguenza, pi indirizzi IP. Formalmente a questo tipo di apparati si assegna il nome multi-homed fisici in contrapposizione ai multi-homed logici. Ogni IP Address costituito da una coppia ordinata di valori, indicati rispettiva- mente come <netID> e <hostID> o <localAddress>, della dimensione complessiva di 32-bit, cio 4 ottetti: <IP Address> ::= <netID> <localAddress> oppure <IP Address> ::= <netID> <hostID> dove: I <netID>: identifica una rete allinterno di un sistema di reti interconnesse. Tutti i nodi appartenenti alla stessa rete logica avranno lo stesso prefisso <netID>. Da notare che non necessariamente deve esistere una relazione uno-ad-uno tra rete fisica e rete logica. Infatti possibile che nei casi pi semplici ad una rete fisica corrisponda un unico indirizzo logico di rete. In tal caso, per linterazione diretta tra tutti i nodi non necessario disporre di dispositivi di routing. Viceversa, possibile avere configurazioni di reti, chia- mate multinetting, nelle quali su una stessa rete fisica possono trovarsi diver- se reti logiche, ciascuna identificata da un diverso indirizzo <netID>. In que- stultimo caso necessario predisporre degli appositi meccanismi di inoltro o forwarding, necessari per garantire la visibilit tra i nodi appartenenti alle diverse reti logiche attraverso lutilizzo di sistemi (nodi di rete specializzati) chiamati gateway o router. I <hostID> o <localAddress>: identifica univocamente ciascun nodo apparte- nente alla stessa rete. Il valore <hostID> deve essere unico allinterno della particolare rete considerata. Internet Protocol version 4 (IPv4) 63 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 63 necessario sottolineare che la coppia <netID> <hostID> deve essere unica al- linterno dellintero 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: Parte 3 64 Figura 5.2: Esempio di reti interconnesse con indicazione degli indirizzi <netID>/<hostID> in esadecimale Chi garantisce lunivocit nellassegnazione degli indirizzi? I In ambito pubblico (Internet) la gestione degli indirizzi IP venne inizialmente effettuata da Jon Postel di IANA (Internet Assigned Numbers Authority, www.ia- na.org). A partire dal 1992 con la liberalizzazione di Internet (RFC 1466 Guide- lines for Management of IP Address Space) sono state nominate delle Regional Internet Registry (RIR), alle quali sono state delegate le funzioni di assegnazione di indirizzi IP e di nomi di dominio per ciascuna area assegnata. Gi in prece- denza con la RFC 1174 (IAB Recommended Policy on Distributing Internet Identifier Assignment and IAB Recommended Policy Change to Internet Con- nected Status), nel 1990 Vint Cerf raccomandava lutilizzo di una politica per delegare lassegnazione dei cosiddetti Internet Identifier Assignment a livello regionale. I A partire dal 1998 stata fondata una nuova organizzazione no-profit denomi- nata ICANN (Internet Corporation for Assigned Network and Numbers, www.icann.org) facente capo al ministero del commercio USA per coordinare tutte le RIR del mondo. I Attualmente esistono cinque RIR operanti in altrettante aree geografiche del mondo: APNIC (Asia Pacific Network Information Center): www.apnic.net. ARIN (American Registry for Internet Numbers): www.arin.net. LACNIC (Latin American and Caribbean Internet Addresses Registry): www.lacnic.net. RIPE NCC (Rseaux IP Europens Network Coordination Centre): www.ri- pe.net. AFRINIC (African Regional Internet Registry): www.afrinic.org. 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 64 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. Il formato utilizzato internamente dal software che implementa le funzionalit TCP/IP allinterno di un sistema operativo, prevede di rappresentare un indirizzo IP mediante la relativa codifica binaria dei quattro ottetti, attraverso una stringa costi- tuita da 32-bit, ad esempio: 11000000101010000000000111001000 Nota I termini byte ed ottetti sono considerati sinonimi allinterno 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 lordine di elaborazione, di trasmissione e di interpre- tazione dei bit allinterno dei singoli ottetti e degli ottetti stessi allinterno 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 (lordine con cui vengono interpretati i quattro ottetti), sia a livello di singolo bit allinterno del generico ottetto. Lordina- mento di tipo big-endian prevede di considerare, allinterno di una sequenza di pi ottetti, lottetto di sinistra come il pi significativo. Solitamente, questultimo, viene indicato con il termine MSB (Most Significant Byte) e lottetto 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 allordine 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 dellindirizzo IP rappresentato in binario nellesempio prece- dente, il relativo formato DDN sar come lesempio mostrato nella tabella 5.1. Tabella 5.1: Indirizzo IP rappresentato in binario MSB (Most Significant Byte) LSB (Least Significant Byte) 11000000 10101000 00000001 11001000 192 168 1 200 Internet Protocol version 4 (IPv4) 65 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 65 In generale un indirizzo IP in notazione DDN rappresentato come a.b.c.d o x.y.w.z, dove ciascuna lettera rappresenta la codifica decimale di un ottetto. Esprimere un indirizzo IP in formato ottale ed esadecimale Anche se non comunemente utilizzata, esiste la convenzione che permette di espri- mere un indirizzo IP sempre in formato dot notation ma con numeri in ottale (Dotted Octal Notation, DON) o esadecimale (Dotted Exadecimal Notation, DEN). Al fine di distinguere gli indirizzi IP nei formati DON o DEN dalla classica DDN ob- bligatorio anteporre uno 0 (zero) davanti al numero convertito in notazione ottale con 3 cifre (8 3 255) oppure nel caso decimale anteporre davanti al numero espres- so in notazione esadecimale con 2 cifre (16 2 255) il suffisso 0x. IP DDN IP DON IP DEN 192.168.1.200 192.168.1.0310 192.168.1.0xc8 192.168.1.254 192.168.1.0x376 192.168.1.0xfe 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 allinterno 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 allappendice 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: I Indirizzi IP unicast (indirizzo al singolare) un indirizzo IP univoco assegnato ad una ben determinata interfaccia logi- ca di un nodo. Questo tipo di indirizzo pu comparire, indifferentemente, sia come sorgente sia come destinazione di un datagramma IP. Utilizzando un indirizzo IP di tipo unicast nel campo destinazione la comunicazione tra i nodi di tipo diretta o uno-a-uno. In definitiva si pu indicare un indirizzo IP di tipo unicast come un indirizzo al singolare, nel senso che identifica una ben determinata interfaccia logica di rete. Parte 3 66 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 66 I Indirizzi IP broadcast (indirizzo al plurale) un indirizzo IP che serve ad identificare collettivamente tutti i nodi di una rete. Questo tipo di indirizzo non pu mai apparire come sorgente di un data- gramma IP. Utilizzando un indirizzo IP di tipo broadcast la comunicazione di tipo uno-a-tutti. In definitiva, si pu indicare un indirizzo IP di tipo broad- cast come un indirizzo al plurale nel senso che mediante un unico indirizzo IP si identificano tutti gli host di una stessa rete. Come vedremo pi avanti nella sezione Indirizzi IP speciali e notazioni particolari per la loro rappre- sentazione (RFC 1700, RFC 3232), esistono diversi tipi indirizzi di broadcast. I Indirizzi IP multicast (indirizzo al plurale circoscritto) un indirizzo IP utilizzato per identificare uno o pi nodi (ma non tutti) allinterno di una rete. Questo tipo di indirizzo non pu mai apparire come sorgente di un datagramma IP. Utilizzando un indirizzo IP di tipo multicast la comunicazione di tipo uno-a-molti-ma-non-tutti. In definitiva si pu indi- care un indirizzo IP di tipo multicast come un indirizzo al plurale circoscrit- to nel senso che mediante un unico indirizzo IP si identifica, in tal caso, solo un sottoinsieme di tutti gli host di una rete. Indirizzi IP riservati: network, broadcast, multicast, loopback Alcuni valori assegnabili alle due componenti <netID> e <hostID> sono da escludere poich assumono un significato particolare per il protocollo IP. Nella tabella 5.2 sono riportati tali valori e il relativo significato attribuito dal protocollo IP. Tabella 5.2: Indirizzi riservati Indirizzi riservati per la parte <netID> Significato 0 Identifica la rete di appartenenza cio this network. Regola no-tutti-zero: considerando la porzione <netID> espressa in binario, vale la regola generale secondo la quale da escludere un <netID> composto da tutti zeri o all-zeros. 127 Riservato per uso diagnostico o di loopback. Viene utilizzato per testare la corretta installazione del software TCP/IP su un computer. 224 Indirizzo di multicast, compreso Multicast BackbONE (MBONE) (cf. RFC 2365). 255 Indirizzo di broadcast: identifica tutti gli host (all hosts) presenti allinterno di una determinata rete. Regola no-tutti-uno: considerando la porzione <netID> espressa in binario, vale la regola generale secondo la quale da escludere un <netID> composto da tutti uno o all-ones. Internet Protocol version 4 (IPv4) 67 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 67 Tabella 5.2: Continua Indirizzi riservati per la parte <hostID> Significato 0 Identifica un generico nodo su una determinata rete o this node. Regola no-tutti-zero: questa regola valida anche per la componente <hostID>. 255 Indirizzo di broadcast: identifica tutti gli host presenti allinterno di una rete o all hosts. Regola no-tutti-uno: questa regola valida anche per la componente <hostID>. Classi di indirizzamento (RFC 791, RFC 1166) Poich abbiamo a disposizione 32-bit il numero di indirizzi IP disponibili teoricamente pari a 2 32 cio 4.294.967.296. In realt, come accennato, viene introdotta una separa- zione tra <netID> e <hostID>. Come conseguenza di questo tipo di organizzazione ge- rarchica il numero di indirizzi IP che si possono utilizzare inferiore. Inoltre alcuni indi- rizzi, sia per la parte <netID> sia per la parte <hostID>, sono riservati per usi speciali. Secondo le RFC 791 e RFC 1166, gli indirizzi IP sono organizzati in cinque classi: A, B, C, D, E. La classe di appartenenza di un indirizzo IP determinata dai quattro bit pi si- gnificativi del primo ottetto (MSB). Essa determina quanti ottetti compongono la parte <netID> e quanti la parte <hostID>, secondo quanto descritto nella tabella 5.3. Parte 3 68 Tabella 5.3: Classi di indirizzi IP I II III IV V VI Classe Codifica Binaria nByN / nBiN / nN nByH / nBiH / nH Indirizzi <netID> Indirizzi <hostID> MSB Validi Validi IP Unicast A 0xxxxxxx 1 / 7 / 126 3 / 24 / 16.777.214 1.b.c.d 126.b.c.d a.0.0.1 a.255.255.254 B 10xxxxxx 2 / 14 / 16.382 2 / 16 / 65.534 128.0.c.d a.b.0.1 191.255.c.d a.b.255.254 C 110xxxxx 3 / 21 / 2.097.150 1 / 8 / 254 192.0.0.d a.b.c.1 223.255.255.d a.b.c.254 D 1110xxxx Classe riservata per applicazioni 224239 Multicast E 1111xxxx Classe riservata per uso sperimentale 240254 Legenda: nByN = Numero Byte componente <netID> nByH = Numero Byte componente <hostID> nBiN = Numero Bit componente <netID> nBiH = Numero Bit componente <hostID> nN = Numero di Network Valide nH = Numero di Hosts Validi 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 68 Internet Protocol version 4 (IPv4) 69 Di seguito viene data una descrizione dettagliata del significato delle varie colonne. I 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 lassegnamento di indirizzi IP di tipo unicast sono le rimanenti A, B e C. I Colonna II Sono indicati i bit dellottetto 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. I 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> allinterno 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 allinterno 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 = 2 7 2 = 126 Classe B: nN = 2 14 2 = 16.382 Classe C: nN = 2 21 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. I 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 allinterno 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: 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 69 Classe A: nH = 2 24 2 = 16.777.214 Classe B: nH = 2 16 2 = 65.534 Classe C: nH = 2 8 2 = 254 nelle quali i due potenziali host sottratti dal conteggio corrispondono alla regola no-tutti-zero e no-tutti-uno esposta in precedenza. I Colonne V e VI Indicano qual linsieme dei valori ammissibili per le due componenti <netID> e <hostID>, espressi sotto forma decimale (DDN): Classe A: 1.0.0.1 126.255.255.254 Classe B: 128.0.0.1 191.255.255.254 Classe C: 192.0.0.1 223.255.255.254 importante notare, che dal punto di vista matematico, gli indirizzi 0.0.0.0 e 127.0.0.0 rientrano nella classe A. Essi non sono stati indicati nellelenco pre- cedente in quanto indirizzi non assegnabili e quindi esclusi. Osservando il valore decimale del primo ottetto della componente <netID> di ciascun insieme si possono dedurre le seguenti regole per la determina- zione della classe di appartenenza di un indirizzo IP: 1. Ogni indirizzo IP, il cui primo valore decimale compreso fra 1 e 126 appartiene alla classe A. 2. Ogni indirizzo IP, il cui primo valore decimale compreso fra 128 e 191 appartiene alla classe B. 3. Ogni indirizzo IP, il cui primo valore decimale compreso fra 192 e 223 appartiene alla classe C. 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. Lidea iniziale della suddivisione in classi dello spazio di indirizzamento IP (IP Address Space) nasce dalla volont di ottimizzare lofferta 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 Come accennato in precedenza, lassegnazione di un indirizzo viene fatto diret- tamente da IANA (o da una autorit di registrazione delegata). Gli indirizzi di classe A sono concessi alle grandi organizzazioni o aziende, come ad esempio: General Elec- tric (3), BBN (4, 8), IBM (9), ATT (12), Xerox (13), HP (15), DEC (16), Apple (17), Ford (19). Gli indirizzi di classe C sono assegnate a piccole aziende e agli ISP che, a loro Parte 3 70 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 70 volta, provvedono a rivenderli, eventualmente suddividendoli mediante tecniche CIDR/VLSM esposte pi avanti in questo capitolo. Un altro indirizzo IP speciale: la network mask La network mask un particolare indirizzo IP che dovrebbe essere specificato unita- mente allindicazione di qualsiasi indirizzo IP associato ad una rete oppure ad un sin- golo host. In particolare esso spesso imposto in fase di configurazione del protocollo TCP/IP su un qualsiasi host con un qualsiasi sistema operativo di rete che implemen- ta il protocollo TCP/IP. In alcuni casi (per esempio: Microsoft Win9x/NT/2K/XP/2003) non possibile confermare linserimento dellindirizzo IP se non si compila anche il campo riservato alla subnet mask. In altri casi (per esempio: UNIX/Linux) possibile assegnare un indirizzo IP ad una interfaccia logica senza necessariamente specificare la relativa subnet mask. In tal caso viene applicata la subnet mask di default in base alla classe di appartenenza dellindirizzo IP. La network mask una maschera, o filtro, di bit utilizzata dal software che implementa le funzionalit dello stack TCP/IP, per determinare la rete di appartenen- za di un indirizzo IP. In altre parole, la subnet mask permette di identificare i confini tra le varie network allinterno di un insieme di reti TCP/IP. Nel caso di indirizzi IP conformi alle RFC 791 e RFC 1166 , detti anche di tipo ClassFull, la network mask da applicare ad un qualsiasi indirizzo IP pu essere auto- maticamente determinata dalla sua classe di appartenenza, secondo la seguente regola: una subnet mask un indirizzo IP costituito da tanti 255 contigui a partire dal MSB (Most Significant Byte), quanti sono gli ottetti della parte <netID>; il resto del- lindirizzo viene posto a zero: <Network Mask > ::= <netID-Tutti-1> <hostID-Tutti-0>. 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: Internet Protocol version 4 (IPv4) 71 Tabella 5.5: Subnet mask standard Classe Formato binario Formato decimale Formato esadecimale Network Prefix A 11111111.00000000.00000000.00000000 255.0.0.0 FF000000 /8 B 11111111.11111111.00000000.00000000 255.255.0.0 FFFF0000 /16 C 11111111.11111111.11111111.00000000 255.255.255.0 FFFFFF00 /24 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 71 I Direttamente, se il destinatario collocato sulla stessa rete. I Indirettamente attraverso il proprio default gateway se il destinatario non appartiene alla stessa rete. 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: 1. Confronto bit-a-bit (bit-wise logical AND) tra lindirizzo destinazione e la network mask locale per mezzo di unoperazione di AND. Il risultato di que- sta operazione prende il nome di RemoteNetID. 2. Confronto bit-a-bit (bit-wise logical AND) tra lindirizzo sorgente e la network mask locale per mezzo di unoperazione di AND. Il risultato di que- sta operazione prende il nome di LocalNetID. 3. Confronto tra i due risultati precedenti con unoperazione di XNOR (la quale verifica luguaglianza bit a bit). 4. Decisione di inoltro: a. Se il confronto d come risultato tutti i 32-bit ad 1 il pacchetto viene con- siderato locale ed inviato direttamente a destinazione (vedi tabella 5.7). b. Altrimenti il datagramma viene considerato remoto ed inoltrato al de- fault gateway che provveder alla consegna. 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 delloperatore logico AND possibile esprimere questultima 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 delloperazione di AND coincide sempre con il valore del secondo. Come si pu evidenziare dalla tavola di verit delloperatore 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"". Parte 3 72 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 72 Internet Protocol version 4 (IPv4) 73 Figura 5.3: Applicazione della subnet mask 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). Figura 5.4: Esempio di reti per applicazione network mask Nella tabella 5.7 esposto il processo nei due casi di destinazione locale e desti- nazione remota. Tabella 5.7: Due casi di destinazione locale e destinazione remota Caso con destinazione locale: IP Sorgente 192.168.1.1, IP Destinazione 192.168.1.2 IP Sorgente 11000000 10101000 00000001 00000001 Network mask 11111111 11111111 11111111 00000000 LocalNetID 11000000 10101000 00000001 00000000 IP Destinazione 11000000 10101000 00000001 00000010 Network mask 11111111 11111111 11111111 00000000 RemoteNetID 11000000 10101000 00000001 00000000 (LocalNetID) XNOR 11111111 11111111 11111111 11111111 (RemoteNetID) 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 73 Tabella 5.7: Continua Caso con destinazione remota: IP Sorgente 192.168.1.1, IP Destinazione 172.16.0.1 IP Sorgente 11000000 10101000 00000001 00000001 Network mask 11111111 11111111 11111111 00000000 LocalNetID 11000000 10101000 00000001 00000000 IP Destinazione 10101100 00010000 00000000 00000001 Network mask 11111111 11111111 00000000 00000000 RemoteNetID 10101100 00010000 00000000 00000000 (LocalNetID) XNOR 10010011 01000111 11111110 11111111 (RemoteNetID) Parte 3 74 Quali sono i vantaggi e gli svantaggi dellorganizzazione gerarchica degli indirizzi IP mediante lintroduzione delle classi? I Vantaggi: Riduzione delle dimensioni delle tabelle di routing. Infatti, lutilizzo di uno spazio di indirizzi piatto costituito da 2 32 = 4.294.967.296 avrebbe imposto linserimento in ciascuna tabella di routing di ogni router degli indirizzi sin- goli per ciascuna potenziale destinazione. Viceversa, lutilizzo delle classi (e soprattutto delle subnet, come vedremo pi avanti) consente il raggruppa- mento (summarize) degli indirizzi. Semplificazione nella assegnazione degli indirizzi. Semplificazione nella gestione degli indirizzi da parte del software dei router (oltre che di ogni singolo nodo) con evidenti risparmi di tempo di elaborazio- ne e quantit di memoria richiesta. Con levoluzione dellhardware queste ultime considerazioni perdono un po di importanza. I Svantaggi: Riduzione del numero effettivo di indirizzi IP. A tale proposito, come vedremo pi avanti parlando del subnetting VLSM/CIDR, esistono alcune tecniche per alleviare questa perdita di indirizzi. Indirizzi pubblici e privati (RFC 1918) Come accennato precedentemente, se si necessita di indirizzi pubblici necessario rivolgersi ad un Internet Registry o ISP (cf. Capitolo 2, Introduzione al TCP/IP, alla sco- perta di Internet. Al contrario, se si implementa una rete aziendale privata lo spazio di indirizzi potenzialmente utilizzabili non limitato o vincolato da alcuna organiz- zazione o normativa. Prevedendo tuttavia una futura interconnessione della rete privata alla rete pub- blica Internet, necessario garantire che non vi siano conflitti di indirizzi IP. Infatti, la duplicazione di indirizzi potrebbe causare la mancata consegna dei datagrammi IP. Al fine di evitare potenziali problemi di questo tipo, nel 1996 stata promulgata la RFC 1918, Address Allocation for Private Internets. Essa stabilisce alcune fasce di indirizzi IP riservati per un utilizzo su rete privata e garantisce il confinamento a livel- lo locale del traffico da esse generato. Ecco come recita questa RFC: 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 74 Because private addresses have no global meaning, routing information about private networks hall not be propagated on inter-enterprise links, and packets with private source or destination addresses should not be forwarded across such links. Routers in networks not using private address space, especially those of Internet service providers, are expected to be configured to reject (filter out) routing information about private networks. If such a router receives such information the rejection shall not be treated as a routing protocol error. demandato ai router degli ISP il compito di scartare il traffico proveniente da un indirizzo appartenente ad una rete privata. Le reti definite come private sono: I Classe A: lintera rete identificata da 10.0.0.0. I Classe B: le sedici reti contigue identificate da 172.16.0.0 172.31.0.0. I Classe C: le 256 reti contigue identificate da 192.168.0.0 192.168.255.0. A queste va aggiunta anche la subnet 169.254.0.0/16 (255.255.0.0) utilizzata per implementare lassegnazione automatica degli indirizzi per i client DHCP (identifica- to con il termine APIPA (Automatic Private IP Addressing)) come ratificato dalla RFC 3330 (Special-Use IPv4 Addresse, settembre 2002) ed indicato dal seguente estratto (pag. 2): 169.254.0.0/16 This is the link local block. It is allocated for communication between hosts on a single link. Hosts obtain these addresses by auto-configuration, such as when a DHCP server may not be found. Subnetting standard secondo la RFC 950 (Internet Standard Subnetting Procedure) Con subnetting si intende il processo di partizionamento di ununica rete in pi sot- toreti o subnet. La suddivisione di una rete logica in pi sottoreti pu essere dovuta a varie moti- vazioni, tra cui: I La necessit di circoscrivere il traffico broadcast. I La necessit di separare i diversi enti produttivi di unazienda. I La dislocazione geografica di unorganizzazione o azienda. Broadcast e traffico di rete Di per s i broadcast non determinano un aumento del traffico di rete, ma provoca- no un incremento di lavoro di elaborazione sia nei dispositivi di networking (bridge, router, switch, schede di rete) sia sugli host. Infatti tutti gli host di una stessa rete (o sottorete) ricevono il pacchetto di broadcast. Giunto a livello data-link questo viene passato al driver della scheda di rete il quale lo passa al modulo di livello networking corrispondente al protocollo indicato nel campo Type. Se il protocollo indicato non Internet Protocol version 4 (IPv4) 75 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 75 registrato su un determinato host, il driver scarta la relativa frame. Normalmente i router vengono configurati per non inoltrare il traffico di broadcast mentre i bridge, operando a livello data-link (livello 2 OSI), lo permettono. Pertanto, un buon disegno ed una corretta configurazione dei dispositivi di rete consentono di limitare gli effet- ti dei broadcast. In questa sezione verr presa in considerazione limplementazione del subnet- ting secondo le direttive della RFC 950, secondo la quale sono da non considerare vali- de le subnet che hanno come valore nel campo <netID> tutti-0 e tutti-1, come indica- to nel seguente estratto della suddetta RFC (pag. 5): In certain contexts, it is useful to have fixed addresses with functional significance rather than as identifiers of specific hosts. When such usage is called for, the address zero is to be interpreted as meaning this, as in this network. The address of all ones are to be interpreted as meaning all, as in all hosts. For example, the address 128.9.255.255 could be interpreted as meaning all hosts on the network 128.9. Or, the address 0.0.0.37 could be interpreted as meaning host 37 on this network. It is useful to preserve and extend the interpretation of these special addresses in subnetted networks. This means the values of all zeros and all ones in the subnet field should not be assigned to actual physical) subnets. Mediante questa tecnica possibile suddividere logicamente una rete in un insie- me contiguo di sottoreti di dimensioni ridotte, in modo da ottimizzare luso degli indi- rizzi IP. In pratica lindirizzo IP di partenza espresso come: <IP Address> ::= <netID> <hostID> assumer la nuova forma: <IP Address> ::= <netID> <subNetID> <hostId> nella quale la parte <hostId> viene suddivisa in due componenti: <subNetID> e <hostID>. Cos facendo il numero dei bit riservati alla sezione rete si espande a disca- pito di quelli dedicati ai singoli nodi. Analogamente anche la network mask verr estesa comprendendo la parte di subnet mask: <Network Mask > ::= <netID-Tutti-1> <subNetID-Tutti-1> <hostID-Tutti-0>. Comunemente, la network mask di un indirizzo derivato da subnetting prende il nome di subnet mask. Spesso i due termini vengono utilizzati come sinonimi. Il ripartizionamento dei bit della componente <hostID> obbliga a ricalcolare la subnet mask da associare agli indirizzi IP delle nuove subnet. A tale proposito da osservare che, a differenza di quanto visto riguardo agli indirizzi IP di tipo ClassFull per i quali la subnet mask pu essere anche non esplicitamente indicata insieme Parte 3 76 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 76 allindirizzo IP, per un indirizzo ottenuto mediante il procedimento di subnetting lin- dicazione della subnet mask associata di fondamentale importanza, al fine di con- ferire ad esso significato e consistenza. Infatti proprio per evidenziare questo aspetto, gli indirizzi IP derivati da un procedimento di subnetting vengono chiamati anche di tipo ClassLess e per essi non valgono tutte le considerazioni precedentemen- te fatte sulle classi in base alle RFC 791 e RFC 1166. Per convenzione, per estrapolare la parte <subNetID> dalloriginale <hostID> si selezionano i bit strettamente necessari e contigui di ordine superiore cio a partire da quello pi significativo. Questo tipo di operazione fattibile solamente se non tutti i bit della parte <hostID> sono strettamente necessari, ovvero solo se il numero dei nodi realmente presenti nella rete di partenza inferiore al numero massimo dei potenziali nodi con- sentiti dalla classe di appartenenza dellindirizzo IP. Per poter determinare con facilit gli indirizzi delle nuove subnet, dei rispettivi host e la nuova subnet mask, necessario rivedere alcuni concetti relativi allalgebra binaria e ricavare alcune relazioni formali che vediamo qui di seguito. Matematica degli indirizzi IP Definite le seguenti variabili: 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 valgono le seguenti relazioni: Numero di Bit rimanenti per la parte <hostID>: nBiH = 32 (nBiN + nBiS) Numero Host Per Subnet: nH = 2 nBiH 2 Numero di subnet secondo RFC 950: nS = 2 nBiS 2 Subnet mask in formato Network Prefix: nBiSM = (nBiN + nBiS) 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. Esempio di subnetting di un indirizzo di classe C Nellesempio della figura 5.5 assegnata una rete di classe C avente lindirizzo 192.168.1.0/24 nella quale si suppone non siano presenti pi di 100 nodi. Volendo suddividere questa rete in due sottoreti, necessario ricavare gli indirizzi IP delle due nuove subnet dei rispettivi host, nonch la nuova subnet mask. Internet Protocol version 4 (IPv4) 77 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 77 Parte 3 78 Figura 5.5: Subnetting di una rete di classe C, in due sottoreti secondo le direttive RFC 950. Ricavare gli indirizzi IP delle nS nuove subnet e la subnet mask Essendo nS = 2 il numero di subnet da creare possibile dedurre il numero di bit necessari da riservare alla parte <subNetID>, risolvendo la seguente disequazione: 2 nBiS 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: nBiSM = nBiN + nBiS = 24 + 2 = 26. Quindi, nella tabella 5.8 viene mostrata la rappresentazione binaria e decimale della nuova subnet mask, nella quale viene messo in evidenza lottetto interessato dal processo di subnetting: Tabella 5.8: Rappresentazione binaria e decimale della nuova subnet mask MSB (Most Significant Byte) LSB (Least Significant Byte) 11111111 11111111 11111111 11000000 255 255 255 192 A questo punto per ricavare gli indirizzi IP da assegnare alle due nuove subnet, necessario ragionare sui 2-bit di subnetting dellultimo ottetto evidenziando tutte le potenziali configurazioni (quattro, 2 2 ) 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. 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 78 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 = 2 posizione 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 Determinare il numero nH degli host ed i relativi indirizzi IP Per calcolare il numero nH di host di ciascuna nuova subnet ed i relativi indirizzi IP, necessario considerare la parte rimanente di bit relativa alla sezione <hostID>. In generale questo numero di bit dato da: nBiH = 32 (nBiN + nBiS). Nel nostro caso sar: nBiH = 32 (24 + 2) = 6. Per cui il numero di host sar: nH = 2 nBiH 2 = 2 6 2 = 62. A questo punto per dedurre gli indirizzi IP da assegnare ai 62 host di ciascuna subnet, necessario ragionare sui rimanenti nBiH = 6-bit della parte <hostID> evi- denziando tutte le potenziali 2 6 2 = 62 configurazioni che si possono ottenere asse- gnando ad essi i due valori possibili 0 ed 1, e scartando quelli che identificano un indi- rizzo <hostID> formato da tutti-0 o tutti-1 (tabella 5.10). Pertanto, per ciascuna delle due subnet la lista degli host la seguente: Subnet 192.168.1.64.0: Host: 192.168.1..65 192.168.1.126; Broadcast = 192.168.1.127. Subnet 192.168.1.128: Host: 192.168.1..129 192.168.1.190; Broadcast = 192.168.1.191. Prima di concludere largomento del subnettting standard, nel prossimo esempio verr presa in considerazione una rete di classe A; si utilizzeranno, inoltre, degli inte- ri ottetti per produrre le subnet. Internet Protocol version 4 (IPv4) 79 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 79 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 Parte 3 80 Esempio di subnetting in classe A con lutilizzo di un numero intero di ottetti Si supponga di dover preparare un piano per lindirizzamento IP ad uso interno, per unazienda avente 4 sedi sul territorio italiano (per esempio: Milano, Roma, Cagliari, Palermo). In ciascuna sede sono previste inizialmente 3 subnet contenenti al massi- mo 200 nodi. Al fine di poter implementare un tipo di indirizzamento gerarchico che sia fles- sibile, razionale, e che garantisca un certo margine di crescita in futuro, si utilizzer un indirizzo privato di classe A 10.0.0.0/8. A questo punto, ragionando sulla struttura di un tipico indirizzo di classe A (1 ottetto per la parte <netID> e tre ottetti per la componente <hostID>) da notare che la parte <hostID> effettivamente sovradimensionata per questo scenario, dovendo garantire un numero massimo di nodi per ciascuna sede pari a 200. Pertanto, anzich utilizzare 3 ottetti (24-bit) per lidentificazione dei 200 nodi, si riserver solamente uno (8-bit) alla parte <hostID>, tramite il quale si potranno identificare, comunque, fino ad un massimo di 2 8 2 = 254 nodi. I rimanenti due ottetti, e precisamente quel- li immediatamente dopo il MSB (Most Significant Byte), saranno fatti agire come una estensione ai bit della sezione <netID> utilizzati per evidenziare delle sottoreti o sub- net. In particolare, in questo esempio si dar un significato mnemonico ai suddetti due ottetti, nel seguente modo: 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. Avendo utilizzato i primi tre ottetti per identificare la parte <netID> + <subNetID> la subnet mask per i singoli host sar costituita da 24-bit. Viceversa, le reti intermedie avranno subnet mask pari a 16-bit e quella di partenza sar rimasta invariata. 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 80 Riepilogando, lo schema degli indirizzi IP appena ricavato, pu essere rappresen- to nella forma descritta nella tabella 5.11. Tabella 5.11: Schema degli indirizzi IP Spazio di indirizzamento iniziale: 10.0.0.0/8 10.1.0.0/16 10.1.1.0/24 Subnet 1 Milano 10.1.2.0/24 Subnet 2 Milano 10.1.3.0/24 Subnet 3 Milano 10.2.0.0/16 10.2.1.0/24 Subnet 1 Roma 10.2.2.0/24 Subnet 2 Roma 10.2.3.0/24 Subnet 3 Roma 10.3.0.0/16 10.3.1.0/24 Subnet 1 Cagliari 10.3.2.0/24 Subnet 2 Cagliari 10.3.3.0/24 Subnet 3 Cagliari 10.4.0.0/16 10.4.1.0/24 Subnet 1 Palermo 10.4.2.0/24 Subnet 2 Palermo 10.4.3.0/24 Subnet 3 Palermo Subnetting e protocolli di routing In questa sezione viene trattato laspetto matematico del subnetting e non vengono presi in conto, volutamente, considerazioni legate al tipo di protocolli di routing da selezionare. A tale proposito, come si vedr nella sezione dedicata ai protocolli di routing, necessario valutare attentamente quale protocollo implementare sui rou- ter in caso di subnetting soprattutto di tipo VLSM/CIDR, laddove la subnet mask per definizione variabile e quindi il protocollo di routing deve interpretare i singoli indirizzi estrapolandoli dalla classe di appartenenza standard (A, B, C). Infatti, se cos non fosse, un protocollo di routing in un contesto di subnetting in classe A come quello dellesempio precedente, valuterebbe tutte gli indirizzi del tipo 10.x.y.0 come appartenenti alla stessa network di classe A 10.0.0.0/8. I protocolli di rounting che ragionano in questo modo vengono definiti di tipo ClassFull (per esempio: RIPv1). Viceversa, i protocolli che applicano sempre e comunque la subnet mask al fine di stabilire la subnet di appartenenza di un indirizzo IP vengono definiti di tipo ClassLess. Alcuni esempi di protocolli di questo tipo sono: RIPv2 e OSPF. In tal caso si dice anche che essi applicano dei meccanismi di summarization al fine di sintetiz- zare lidentificazione di gruppi di host in base alla subnet mask specificata. Per con- tro, i protocolli di tipo ClassFull applicano dei criteri di auto-summarization ba- sandosi esclusivamente sulla valutazione della classe standard di appartenenza del- lindirizzo IP. Internet Protocol version 4 (IPv4) 81 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 81 Subnetting VLSM e CIDR (RFC 1518, RFC 1519, RFC 1520, RFC 1812, RFC 1878, RFC 2644) La procedura di subnetting vista nella sezione precedente obbliga a creare delle sub- net aventi tutte le stesse dimensioni e, soprattutto, a scartare le due subnet costituite dai bit tutti-0 e tutti-1, come riportato brevemente nel seguente estratto dalla RFC 1812 (pag. 48): 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. Con lormai cronica carenza di indirizzi IP ci potrebbe costituire un ulteriore problema. Ecco allora che se i router utilizzati allinterno di una infrastruttura di inter- networking, soddisfano le specifiche RFC 1812, RFC 1878, CIDR (Classless Inter- Domain Routing) e VLSM (Variable Length Subnet Mask), possibile rivedere le rego- le di subnetting precedentemente definite, riutilizzando anche le due subnet tutti-0 e tutti-1. Pertanto, per quanto esposto nella sezione del subnetting standard (RFC 950), possibile rivedere le formule relative alla Matematica degli indirizzi IP, nelle quali possibile modificare lequazione per la determinazione del numero nS di subnet che diventer: numero di subnet secondo RFC 1812, RFC 1878, CIDR/VLSM: nS = 2 nBiS Per spiegare il funzionamento di questa nuova modalit di subnetting ecco un esempio pratico. Esempio di subnetting VLSM di un indirizzo in classe C Si dispone della seguente subnet di classe C 192.192.192.0/24 contenente 205 nodi. Si suppone di avere a disposizione un router dotato di quattro porte LAN che supporta CIDR/VLSM. Si vuole suddividere lunica rete (fisica e logica) attuale in tre sottoreti: la prima rete (A) composta da 120 computer; la seconda (B) contenente 60 computer, e la terza (C) costituita da 25 computer. Inoltre si prevede di dover aggiungere altri computer in futuro e, pertanto, si vuole predisporre unaltra rete (D) per eventuali altri 25 nodi, in modo da non dover modificare successivamente il piano di indirizzamen- to stabilito. Per risolvere tale problema necessario iniziare a determinare il numero di bit (nBiH) da assegnare alla porzione <hostID> e tali da garantire limplementazione della subnet pi grossa (A con 120 nodi). A tale proposito sufficiente risolvere la seguente disequazione binaria: 2 nBiH 2 120 Parte 3 82 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 82 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 e di conseguenza, il numero di subnet possibili dato da: nS = 2 nBiS = 2 1 = 2 Infine, possibile ricavare anche la subnet mask in formato network prefix (come numero di bit) per queste due prime subnet: nBiSM = nBiN + nBiS = 24 + 1 = 25. Pertanto, le prime due subnet che si possono dedurre assegnando allunico 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. Tabella 5.12: Deduzione degli indirizzi IP per le due subnet iniziali 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 2 posizione 0 0 0 0 0 0 0 0 0 128 1 0 0 0 0 0 0 0 A questo punto, si sceglie la prima delle due subnet (192.192.192.0/25) come A e si prosegue con il ripartizionamento della seconda subnet 192.192.192.128/25 per ricavare le altre subnet B, C ed D. Tenendo conto che la subnet B deve contenere 60 nodi necessario ricavare come fatto in precedenza per la subnet A, il numero di bit (nBiH) tale per la nuova parte <hostID> per cui risulti: 2 nBiH 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 in tale caso, per, il numero di subnet utilizzabili non pari a: Internet Protocol version 4 (IPv4) 83 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 83 nS = 2 nBiS = 2 2 = 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 2 posizione 128 1 0 0 0 0 0 0 0 192 1 1 0 0 0 0 0 0 Per quanto riguarda la nuova subnet mask vale la seguente relazione: nBiSM = nBiN + nBiS = 24 + 2 = 26. Pertanto, le subnet ricavate in questa seconda fase di subnetting sono le seguen- ti: 192.192.192.128/26 e 192.192.192.192/26. A questo punto si sceglie la prima delle due subnet (192.192.192.128/26) come subnet B e si prosegue con il ripartizionamento della seconda subnet 192.192.192. 192/26 per ricavare le altre subnet D ed E. Tenendo conto che la subnet D deve contenere 25 nodi necessario ricavare il numero di bit (nBiH) tale per la nuova parte <hostID> per cui risulti: 2 nBiH 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 in tale caso, per, il numero di subnet da considerare non pari a: nS = 2 nBiS = 2 3 = 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) Parte 3 84 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 84 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 2 posizione 192 1 1 0 0 0 0 0 0 224 1 1 1 0 0 0 0 0 Per quanto riguarda la nuova subnet mask vale la seguente relazione: nBiSM = nBiN + nBiS = 24 + 3 = 27. Pertanto, le subnet ricavate in questa terza fase di subnetting sono le seguenti: 192.192.192.192/27 e 192.192.192.224/27. Lo schema degli indirizzi IP appena ricavato pu essere rappresentato nella for- ma descritta nella tabella 5.15. Internet Protocol version 4 (IPv4) 85 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 Perch si chiama VLSM (Variable Length Subnet Mask)? Come si pu notare dagli esempi visti finora, lidea alla base delle tecniche VLSM/CIDR, che spiega il perch di questo nome, quella di assegnare a ciascuna subnet il numero pi adatto di bit evitando inutili sprechi; in altre parole, consenti- re di creare subnet di dimensioni variabili. Supernetting o CIDR/VLSM (RFC 1518, RFC 1519, RFC 1520, RFC 1812, RFC 1878, RFC 2644) La tecnica di supernetting o CIDR/VLSM definisce una convenzione per aggregare (summarize) un insieme di indirizzi IP contigui in un singolo indirizzo al fine di sem- 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 85 plificarne il relativo trattamento. Il termine supernetting nasce in contrapposizione al subnetting; infatti, mentre questultimo permette di suddividere una rete in pi sub- net, con il supernetting possibile raggruppare pi subnet IP in una sola, mediante lapplicazione di una nuova subnet mask. Le nuove subnet create con la tecnica CIDR sono definite supernet in quanto permettono di ospitare pi indirizzi IP di una nor- male subnet standard di classe C (254) o B (65.534). A differenza del subnetting, che sottrae dei bit dalla parte <hostID>, il supernet- ting ne prende in prestito dalla parte <netID>. Inoltre, mentre il subnetting utilizza i primi nBiS (numero di bit della parte subnet) bit contigui della parte <hostID> a par- tire dal pi significativo, il supernetting utilizza gli ultimi nBiC bit (numero di bit CIDR) della parte <netID> a partire dal meno significativo. Questa strategia utilizzata soprattutto per: I Ridurre le dimensioni delle tabelle di routing attraverso laggregazione delle entry. I Gestire in maniera pi selettiva lassegnazione degli indirizzi IP da parte degli ISP (Internet Service Provider) agenti come Local Internet Registry. Indirizzi IP di tipo Provider Indipendent (PI) e Provider Aggregate (PA) (cf. Documento RIPE-127) Generalmente gli indirizzi IP unicast globali assegnabili da un ISP si possono classi- ficare in: I Provider Indipendent (PI): sono in genere rilasciati da un Internet Registry e non vincolano un utente ad un determinato ISP. I Provider Aggregate (PA): sono rilasciati direttamente da un ISP ed hanno validit fintanto che lutente rimane contrattualmente legato ad esso. Per spiegare il funzionamento del supernetting facciamo un esempio pratico: si supponga che unazienda richieda ad un ISP 2000 indirizzi IP. Non avendo a disposi- zione una classe B da assegnare al proprio cliente, lISP vuole assegnare un gruppo di 8 indirizzi di classe C contigui: 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 Notazione network prefix e notazione CIDR A volte la notazione network prefix attraverso la quale possibile indicare in forma abbreviata un indirizzo IP e la relativa subnet mask (per esempio: 192.192.192.0/24) viene anche indicata come notazione CIDR. Parte 3 86 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 86 Di seguito si analizzer come sia possibile determinare lindirizzo IP della super- net da utilizzare per aggregare le 8 subnet. Per risolvere tale problema possibile seguire due metodi. 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: 2 nBiC 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 dallultimo ottetto della parte <netID> a partire dal bit meno significativo. Pertanto, la subnet mask risulta essere: nBiSM = nBiN - nBiC = 24 - 3 = 21 oppure, in notazione decimale: 255.255.248.0. A questo punto il supernetting prevede di aggregare le 8 subnet specificando lin- dirizzo IP della prima subnet del gruppo unitamente alla subnet mask derivata, cio: 192.192.192.0/21 oppure, in notazione decimale: 192.192.192.0/255.255.248.0. Cos facendo lISP risparmia linserimento nel proprio router le 8 entry relative alle 8 subnet e pu specificare solo lindirizzo sopra indicato. Metodo 2 Si convertano in binario gli indirizzi delle 8 classi da aggregare: 11000000 11000000 11000000 00000000 11000000 11000000 11000001 00000000 11000000 11000000 11000010 00000000 11000000 11000000 11000011 00000000 11000000 11000000 11000100 00000000 11000000 11000000 11000101 00000000 11000000 11000000 11000110 00000000 11000000 11000000 11000111 00000000 A questo punto sufficiente considerare linsieme dei bit contigui a partire dal pi significativo condivisi da tutte le subnet appartenenti alla supernet: 11000000 11000000 11000 /21 Internet Protocol version 4 (IPv4) 87 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 87 In questo modo stata determinata la subnet mask in formato network prefix la quale associata allindirizzo IP della prima subnet del gruppo determina lindirizzo IP di supernet di aggregazione: 192.192.192.0/21. Rappresentazione delle classi di indirizzi IP riservati dalla RFC 1918 in notazione VSLM/CIDR Come ultimo esempio di utilizzo del subnetting, ecco un riepilogo delle tre fasce di indirizzi IP riservati per uso privato secondo la RFC 1918, utilizzando una notazio- ne VLSM/CIDR: Classe Notazione nBiH IP Disponibili secondo Network (Num. Bit <hostId>) la Notazione ClassFull Prefix VLSM /CIDR A 10.0.0.0/8 24 (24-bit-block) 10.0.0.0 10.255.255.255 B 172.16.0.0/12 20 (20-bit-block) 172.16.0.0 172.31.255.255 Attenzione: La notazione 172.16.0.0/12 esprime laggregazione CIDR delle 31 subnet di classe B. C 192.168.0.0/16 16 (16-bit-block) 192.168.0.0 192.168.255.255 Attenzione: La notazione 192.168.0.0/16 esprime laggregazione CIDR delle 256 subnet di classe C. Uno strumento di grande aiuto: la calcolatrice per le Subnet IP Fermo restando che la via migliore per imparare bene i procedimenti di subnetting e supernetting utilizzare i principi esposti nella sezione Matematica degli indirizzi IP, luso della calcolatrice di grande aiuto come strumento di verifica della corret- tezza dei risultati ottenuti manualmente. Una versione di calcolatrice molto utilizzata la IP Subnet Calculator scaricabile gratuitamente dal sito http://www.wildpackets.com/products/ipsubnetcalculator. Indirizzi IP speciali e notazioni particolari per la loro rappresentazione (RFC 1700, RFC 3232) Con la diffusione delle tecniche di subnetting VLSM e CIDR, sorge lesigenza di avere a disposizione una modalit pi concisa per riassumere alcuni indirizzi IP speciali. Note sulla RFC 1700 La RFC 1700 stata resa obsoleta dalla RFC 3232. In realt le informazioni prima indicate nella RFC 1700 adesso sono contenute direttamente sul sito www.iana.org. Parte 3 88 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 88 A tale proposito, con la RFC 1700 resa obsoleta dalla RFC 3232, sono state defini- te le seguenti convenzioni: a) Un indirizzo IP pu assumere una delle due seguenti forme: IP Address ClassFull ::= {<netID> <hostID>} IP Address ClassLess ::= {<netID> <subnetID> <hostID>} b) -1 Specificato al posto di <netID> o <subNetID> o <hostID> serve ad indicare che il relativo campo costituito interamente da bit di valore 1. c) 0 Specificato al posto di <netID> o <subNetID> o <hostID> serve ad indicare che il campo costituito interamente da bit di valore 0. d) Indirizzo IP tutti-0: {0, 0} Identifica questo nodo(this host) su questa rete (this network). Pu essere utilizzato solamente nel campo source address di un datagramma IP. Questo indirizzo speciale tipicamente utilizzato nel caso di un host confi- gurato per ottenere un indirizzo IP dinamicamente (DHCP, BOOTP). Infatti in fase di startup non possedendo ancora un indirizzo, il nodo invier una richiesta (per esempio: DHCPRequest) nel cui campo indirizzo IP sorgente ci sar il valore 0.0.0.0, ad indicare un generico nodo su questa generica rete. Alcuni usi speciali dellindirizzo tutti-0 a. In alcuni casi, come ad esempio quelli trattati nei punti seguenti, lindirizzo IP tutti-0 viene utilizzato anche come network mask. b. Nel caso di un computer predisposto per ricevere un indirizzo IP dinamico (per esempio: client DHCP), la configurazione IP iniziale (ottenuta per esempio mediante il comando ipconfig all in caso di computer Win2K/XP/2003 o ifconfig in caso di computer Linux) prevede: IP Address = 0.0.0.0, Subnet Mask = 0.0.0.0. c. Pu essere utilizzato anche nelle tabelle di routing per identificare lindirizzo di rete di destinazione (network entry) per il Default Route, utilizzato come percor- so di default verso una destinazione da raggiungere in assenza di altre percor- si pi specifiche. Infatti, inserendo i comandi netstat r o route print su un com- puter con sistema operativo Win2K/XP/2003 o netstat r o route n su un com- puter con sistema operativo Linux si ottiene: Network Destination Netmask/Genmask Gateway Interface Metric 0.0.0.0 0.0.0.0 192.168.1.254 192.168.1.200 20 Da cui si evince che 192.168.1.254 proprio il default gateway. Da notare che la entry 0.0.0.0 non appare se non stato specificato alcun default gateway. d. Sempre a proposito di gestione delle tabelle di routing nel caso di un computer con sistema operativo Win2K/XP/2003, per inserire la entry relativa al Default Internet Protocol version 4 (IPv4) 89 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 89 Route, per esempio con lindirizzo di default gateway 192.168.1.254, necessario inserire il seguente comando: route add 0.0.0.0 mask 0.0.0.0 192.168.1.200 nel quale viene specificata la network mask come 0.0.0.0. e. In ambito Cisco il Default Route viene spesso indicato anche con il nome Gate- way of Last Resort per la configurazione del quale viene utilizzato il seguente comando: ip route 0.0.0.0 0.0.0.0 <Default Gateway>. e) Indirizzo di una rete o This Network: {<netID>, 0} Come gi detto precedentemente il valore 0 per il campo <hostID> non ammesso. Infatti un indirizzo IP in cui il valore della porzione <hostID> 0 (tutti i bit a zero) identifica la rete <netID> nel suo complesso. Non pu esse- re utilizzato n come source address n come destination address. Per esempio, lindirizzo 192.168.1.0/24 indica la rete 192.168.1 mentre lindi- rizzo 172.26.0.0/16 indica la rete 172.26. f ) {0, <hostID>} Identifica il nodo <hostID> su questa rete (this network). Pu essere utiliz- zato solo come source address. Per esempio, lindirizzo 0.0.0.12/24 indica lhost 12 di una generica rete ca- ratterizzata dall'avere 24-bit dedicati alla parte <netID><subNetID> (consi- derando anche l'eventualit di subnetting). g) Limited o Local Broadcast: {-1, -1} Indica un indirizzo di broadcast limitato o limited broadcast del tipo 255.255.255.255. Spesso viene indicato anche come local broadcast. Pu essere utilizzato solo come destination address in ambito circoscritto (limi- ted) alla rete locale dorigine: infatti non richiede di specificare alcun indiriz- zo di <netID>. Un datagramma IP con questo indirizzo di destinazione non pu mai essere reinstradato allesterno della rete dorigine. h) Network Broadcast (ClassFull): {<netID>, -1} Indica un indirizzo di broadcast per una rete con indirizzi IP ClassFull. Pu essere utilizzato solo come destination address. ottenuto direttamente dallindirizzo IP della rete <netID> popolando con 1 il campo <hostID>. Per esempio per la rete 172.26.0.0/16 lindirizzo di broad- cast diretto 172.26.255.255. A differenza dellindirizzo di broadcast limitato richiede di specificare la <netID>. Un datagramma IP con un indirizzo IP di questo tipo rivolto a tutti i nodi appartenenti alla rete identificata da <netID>. Pertanto se ricevuto da un router lo costringe ad inoltrare il datagramma stesso a tutti i nodi della rete <netID>. I router possono essere configurati per non reinstradare questo tipo di data- grammi in modo da limitare il relativo traffico di broadcast. Parte 3 90 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 90 i) Subnet o Directed Broadcast (ClassLess): {<netID>, <subnetID>, -1} Indica un indirizzo di broadcast diretto per una subnet (subnet o directed broadcast) per una rete con indirizzi di tipo ClassLess. Pu essere utilizzato solo come destination address. ottenuto direttamente dallindirizzo IP indicato nel campo <netID> <subNetID>, popolando con 1 il campo <hostID>. Per esempio per le subnet 192.192.192.0/25: <netID> <hostID> Broadcast 192.192.192.0 192.192.192.1 192.192.192.126 192.192.192.127 192.192.192.128 192.192.192.129 192.192.192.254 192.192.192.255 Un datagramma con un indirizzo IP di questo tipo rivolto a tutti i nodi appartenenti alla rete identificata da <netID> + <subNetID>. Pertanto se ricevuto da un router lo costringe ad inoltrare lo stesso datagramma IP a tutti i nodi della rete <netID> <subNetID>. I router possono essere configurati per non reinstradare questo tipo di data- grammi per circoscrivere il relativo traffico di broadcast. j) All-Subnets-Directed Broadcast: {netID>, -1, -1} Indica un indirizzo di broadcast diretto a tutte le <subNetID> appartenenti alla stessa <netID>. Pu essere utilizzato solo come destination address. Per esempio nel caso si utilizzi la rete 10.0.0.0/24 lindirizzo di All-Subnets- Directed Broadcast 10.255.255.255 in contrapposizione al Directed Broadcast che risulterebbe 10.0.0.255. k) {127, <any>} Indica un generico indirizzo di loopback. Non viene mai proiettato al di fuori di un qualsiasi host poich non viene passato dal livello network al livel- lo fisico, ma restituito direttamente al livello applicativo per mezzo di uno- perazione di copia dalla coda di trasmissione (transmit buffer) alla coda di ricezione (receive buffer). Normalmente viene utilizzato per scopi diagnostici, in particolare per verifi- care la corretta installazione dello stack TCP/IP su un generico host. Lindirizzo di loopback pu anche essere utilizzato per connettersi ad un ser- vizio TCP/IP installato sullo stesso host da cui si esegue il client, per esempio: http://127.0.0.1 o analogamente http://loopback. Da notare che in alcuni ambienti la parola loopback. Da notare che in alcuni ambienti la parola loop- back non risolta (cio non viene riconosciuta) nell'indirizzo 127.0.0.1. In tal caso da utilizzare il termine localhost, con lo stesso significato. I potenziali indirizzi che si possono utilizzare per il loopback address sono pari a 2 24 2 = 16.777.214 (classe A), sebbene normalmente sia utilizzato sto- ricamente lindirizzo 127.0.0.1. Internet Protocol version 4 (IPv4) 91 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 91 Formato del datagramma IP Un datagramma IP formato da due parti chiamate rispettivamente IP Header e IP Payload ciascuna di lunghezza variabile, in modo da diversificare ed ottimizzare il traffico di rete in base alla tipologia dei pacchetti da inviare: <IP Datagramm> ::= <IP Header> <IP Payload> rappresentabili come mostrato nella figura 5.6. Parte 3 92 Figura 5.6: Incapsulamento di un protocollo di livello 4 in un datagramma IP 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. Figura 5.7: PDU IP Terminologia Il termine payload viene utilizzato in questo contesto per identificare allinterno 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 limplementazione 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). 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 92 Dove: I 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 dellaggiunta o meno del campo Options e Padding. Poich il minimo di un elemento dellIP Header ha una lunghezza pari a 32-bit o 4 ottetti, leventuale espansione dellIH deve essere eseguita per incrementi di 32-bit. Ci vale per esempio per lutilizzo del campo Options e Padding: in tal caso laggiunta 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 lallineamento dellIH. Il ruolo dellIP 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. I 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: I Version (VER) Dimensione campo: 4-bit Occupa i primi 4-bit della struttura e contiene il numero di versione che defi- nisce il formato dellIH. La versione utilizzata correntemente la 4 indicata con lacronimo IPv4. Laver aggiunto il campo Version nellIH consente di svi- luppare nuovi protocolli e nuovi formati di header, con la possibilit di inte- grarli in corso dopera. 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 laltro, lutilizzo di indirizzi IP a 128-bit. I 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 dellIH 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 dellIHL: a. Dimensioni minime dellIH: 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. Internet Protocol version 4 (IPv4) 93 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 93 b. Dimensioni massime dellIH: la massima estensione indirizzabile dal campo IHL di 2 4 1 = 15 (0x0F) parole da 32-bit cio 480-bit o 60 ottetti. I Type Of Service (TOS) Dimensione campo = 8-bit Il campo TOS costituito da 8-bit e consente di specificare il grado di qualit del servizio o Quality Of Service (QOS) con il quale si desidera che i data- grammi siano reinstradati dai router. Come specificato nelle RFC 1349 e RFC 2474 esso costituito da cinque sottocampi pi un sesto di valore riservato (MBZ: Must Be Zero) (tabella 5.16). Tabella 5.16: Type Of Service (TOS) 3-bit 1-bit 1-bit 1-bit 1-bit 1-bit Precedence Delay Throughput Reliability Cost MBZ 000 Routine (R) 0 Normal 0 Normal 0 Normal 0 Normal Must Be 001 Priority (P) 1 Low 1 Low 1 Low 1 Low Zero 010 Immediate (O) 011 Flash (Z) 100 Flash Override (X) 101 Critic/ECP (Critical and Emergency Call Processing) 110 Internetwork Control 111 Network Control Per default il valore del campo TOS 0 (0x0) ovvero Normal Service. I 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, dellintero datagramma considerando sia la parte header sia la parte payload. Da notare che la dimensione massima consentita per un datagramma IP di 2 16 = 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 dellMTU 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: Lunghezza IP Payload = TL 4 * IHL I Identification (ID) Dimensione campo = 16-bit Parte 3 94 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 94 Rappresenta un numero progressivo unico compreso tra 0 e 65.535 (2 16 ) assegnato ad ogni datagramma inviato da ciascun host. utilizzato soprattutto in caso di frammentazione per distinguere i fram- menti di un datagramma da quelli di altri datagrammi. Normalmente tale valore viene passato direttamente da un protocollo ULP tramite un apposito parametro (ci vuol dire che possibile avere valori duplicati relativamente a datagrammi consecutivamente generati uno da TCP ed uno da UDP; la gestione di questi casi particolari demandata alle varie implementazioni). In caso contrario viene automaticamente generato dal protocollo IP. Il suo valore deve essere comunque unico per ogni coppia IP Mittente-IP Destinazione e Protocollo per il tempo che sopravvive il datagramma in rete. Ci potenzialmente potrebbe portare ad una duplicazione di valori del campo Identification per due datagrammi generati uno dal protocollo TCP ed laltro dal protocollo UDP: queste evenienze sono ammesse e devono essere gestite dalla particolare implementazione dello stack TCP/IP. In caso di frammentazione di un datagramma permette di fissare il legame tra i singoli frammenti ed il datagramma originario: tutti devono avere lo stesso valore del campo Identification. Viceversa, consente allhost destina- zione (o pi tipicamente ad un router che interconnette reti con MTU diffe- renti) di ricomporre ciascun frammento associandolo al corrispondente datagramma distinguendo tra i diversi datagrammi in fase di ricostruzione. Ci in quanto il protocollo IP di tipo connection-less e quindi frammenti diversi di datagrammi possono inframmezzarsi. Questo campo viene utiliz- zato, congiuntamente ai campi Flags (DF, MF) e Fragment Offset, per il rias- semblaggio dei frammenti a destinazione. I Flags Dimensione campo = 3-bit Questo campo contiene 3-bit dei quali il primo (bit 0, pi significativo) riservato ed ha sempre valore 0 (MBZ, Must Be Zero), mentre gli altri due costituiscono dei flag di controllo per il processo di frammentazione e ricom- posizione dei frammenti di un datagramma IP (figura 5.8). Internet Protocol version 4 (IPv4) 95 Figura 5.8: Struttura del campo Flags In particolare il secondo bit implementa il flag Dont Fragment (DF) il quale se assume il valore 0 rende possibile la frammentazione del datagramma. Viceversa, un valore 1 del flag DF esclude tale possibilit. In questultimo caso se la dimensione del datagramma originale superiore al valore MTU 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 95 della rete il datagramma viene scartato (per esempio da un router) e viene riscontrato allhost mittente il seguente messaggio ICMP (Type = 3, Code = 4) Destination Unreachable-Fragmentation Needed And DF Set come specifica- to nella RFC 792. Il secondo flag viene indicato con il termine More Fragment (MF) ed assume il valore 1 per indicare al destinatario che sono previsti altri frammenti in arrivo. Viceversa, un valore 0 indica che si tratta dellultimo frammento di una serie oppure che il datagramma costituito da un unico pezzo chia- mato anche datagramma intero (in tal caso, per, anche il campo Fragment Offset deve valere 0). Tips and tricks 1. Per ricordarsi mnemonicamente lordine dei due flag (DF e MF) fare riferimento allordine alfabetico (prima DF e poi MF). 2. Normalmente, utilizzando il comando ping per testare la raggiungibilit di un host allinterno di una rete, viene inviato un datagramma IP di dimensioni pre- fissate: 32 byte in ambiente Microsoft Windows e 64 byte in ambiente Unix/Linux. Utilizzando apposite opzioni possibile modificare queste dimensioni e soprat- tutto si pu anche imporre di non produrre la deframmentazione dei datagram- mi qualora la loro dimensione ecceda il valore dellMTU della rete utilizzata. In questo modo possibile scoprire il valore di MTU di una rete. In particolare, a seconda del sistema operativo utilizzato e supponendo di operare su una rete Ethernet (con sistema di Encapsulation Ethernet II, valore MTU = 1500), il comando da utilizzare per provocare la frammentazione il seguente: WinNT/2K/XP/2003: ping f l 1473 192.168.1.200. Unix/Linux: ping M do s 1473 192.168.1.200. Viceversa, specificando una dimensione del buffer di trasmissione pari a 1472 non si produce alcun errore in quanto il datagramma viene inviato interamente. Attenzione: la dimensione indicata in bit corrisponde alla lunghezza della com- ponente payload. Viceversa, per determinare la reale dimensione del datagram- ma inviato dal comando ping necessario aggiungere i bit di overhead del pro- tocollo IP (20 ottetti) pi quelli del protocollo ICMP (8 ottetti). Pertanto, in defi- nitiva, la dimensione del pacchetto inviato (MTU) pari a: MTU Ethernet II = 1472 + 20 + 8 = 1500. 3. Nel caso di sistemi operativi *NIX/Linux il valore MTU pu essere determinato anche attraverso i comandi ifconfig a oppure netstat i. I Fragment Offset (FO) e il processo di frammentazione Dimensione campo = 13-bit Unit di misura = 8 gruppi di ottetti (64-bit) Range = 0 8191 (default = 0) Parte 3 96 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 96 Il campo Fragment Offset (FO) utilizzato insieme ad altri (per esempio: Identification, Flags, Protocol, Source e Destination Address, Flags, TTL) per implementare il processo di frammentazione. Esso indica la posizione occu- pata dal singolo frammento relativamente allinizio del datagramma origina- rio. La dimensione di ogni frammento (tranne lultimo) deve essere un mul- tiplo di 8 essendo riferita a gruppi di 8 ottetti. Inoltre, per ciascun frammen- to deve essere ricalcolato il valore del campo Total Length. Nel caso di un datagramma completo (ovvero non ulteriormente frammentato e quindi con il flag MF = 0) o per il primo frammento prodotto da un datagramma, il valo- re del campo Fragment Offset deve essere sempre 0. In particolare il primo frammento di una serie sar caratterizzato da MF = 1, FO = 0. I successivi avranno: MF = 1, FO 0. Lultimo frammento sar identificato da: MF = 0, FO 0. Da notare che ogni frammento pu essere a sua volta sottoposto a fram- mentazione (anche pi di una volta), qualora debba attraversare altre reti con un MTU ancora pi basso. 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 2 16 = 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 linoltro, 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). Vari tipi di frammentazione: chiarimenti sulla terminologia Spesso, parlando di frammentazione si utilizzano diversi termini. Di seguito vengo- no descritti alcuni fra quelli pi ricorrenti: I Frammentazione locale: la frammentazione locale si verifica al di sotto del livel- lo IP ed il riassemblaggio avviene prima che i frammenti vengono presentati allhost o router ricevente. I Frammentazione non-trasparente: il classico processo di frammentazione che si svolge host-to-host: a) Ogni frammento agisce come un qualsiasi datagramma. b) dotato di un proprio header (overhead). Internet Protocol version 4 (IPv4) 97 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 97 c) Segue una rotta indipendente da tutti gli altri frammenti, generati dallo stes- so datagramma, durante il tragitto dallhost mittente allhost destinazione. d) La frammentazione e il riassemblaggio avviene end-to-end. e) La perdita o danneggiamento anche di un solo frammento provoca lo scarto dellintero datagramma. I 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. I Frammentazione intranet o Network-Dependent: si riferisce al processo di frammentazione e relativo riassemblaggio che si verifica allinterno 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 allinoltro 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. I 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 nellin- 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 linvio dei dati. Daltro canto esso pu provocare un degrado delle presta- zioni dei router. Pertanto, da utilizzare solo allinterno di reti private. Per lim- 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 dellMTU dellinterfaccia di rete corrispondente allindirizzo 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- Parte 3 98 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 98 nare frammentazione in ciascun router attraversato il datagramma. In mancan- za di una conoscenza diretta di tale parametro consigliato utilizzare un valore EMTU_S 576 soprattutto in caso di diverse reti interconnesse. Considerazioni sullMTU I Il valore dellMTU di ogni interfaccia di rete deve essere configurabile. I Ogni implementazione del livello IP deve avere a disposizione un flag All- Subnets-MTU che consenta di specificare lutilizzo 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 lhost ad utilizzare la network mask anzich la subnet mask per la scelta del parametro EMTU_S. I Alcune implementazioni prevedono la determinazione dellMTU (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: we designate the largest datagram size that can be reassembled by EMTU_R (Effective MTU to receive); this is sometimes called the reassembly buffer size. EMTU_R MUST be greater than or equal to 576, SHOULD be either configurable or indefinite, and SHOULD be greater than or equal to the MTU of the connected network(s). DISCUSSION: A fixed EMTU_R limit should not be built into the code because some application layer protocols require EMTU_R values larger than 576. Pertanto, dovendo inviare datagrammi che hanno una dimensione superiore a 576 ottetti, necessario assicurarsi che tutti gli host destinatari siano preparati ad accogliere datagrammi di queste dimensioni. Il valore 576 stato scelto in modo tale da garantire linvio di una ragionevole quantit di informazioni (circa 512 ottetti) oltre agli ottetti obbligatori di overhead (da 20 a 60 ottetti per lheader IP e qualche margine per lheader dei protocolli ULP). Infatti, parecchi protocolli di livello superiore soprattutto basati su UDP (per esempio: TFTP, DNS, SNMP, ...) utilizzano come limite proprio 512 ottetti. Viceversa, TCP utiliz- za direttamente un meccanismo per determinare il valore di MTU, chiamato Path Maximum Transmission Unit Discovery (PMTUD), avente lobiettivo di dedurre il va- lore del parametro Maximum Segment Size (MSS). Come indicato nella RFC 1122 il valore della variabile EMTU_R dovrebbe essere maggiore o uguale allMTU della rete utilizzata. In definitiva, nel caso di un datagramma IP non contenente alcuna opzione, la lunghezza effettiva del payload deve essere compresa tra 576 e 65.515 [= 65.535 20 (IHL)]. Internet Protocol version 4 (IPv4) 99 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 99 Le operazioni che un host sorgente (o un router intermedio) deve intraprendere per implementare il processo di frammentazione possono essere sinteticamente rias- sunte nel modo seguente: 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 lheader di ogni frammento, e determinare la dimensio- ne di ciascun frammento (che deve essere multiplo di 8-ottetti, tranne lulti- 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 lultimo 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. Tips and tricks Per gli amanti (ed i puristi) del linguaggio C, il numero di frammenti (NF) lo si pu indicare in maniera molto pi sintetica utilizzando loperatore ternario?: NF = [(TL 4*IHL) MOD 8] ? [(TL 4*IHL) DIV LPF] + 1 : [(TL 4*IHL) DIV LPF]; Il meccanismo di funzionamento del suddetto operatore pu essere spiegato con il seguente esempio: x = Condizione? Esp1 : Esp2; Parte 3 100 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 100 Cio, si valuta il valore di condizione. Se Condizione vera (risultato diverso da 0) allora si passa a valutare lespressione Esp1, che diventa il valore dellintera espres- sione (valore assegnato a x). Viceversa, se Condizione falsa allora si passa a valuta- re Esp2, che a questo punto determina il valore dellintera espressione. Essa equiva- lente alla seguente pi classica espressione IF: IF Condizione x = Esp1 ELSE x = Esp2 IV. Per ogni frammento necessario riconfigurare i campi seguenti: a. Identification (uguale per tutti). b. Il Fragment Offset (FO) sar dato da: FO = N*NBF dove N = 0 (primo frammento), 1, 2, , NF - 1 (ultimo frammento). c. DF = 0 per tutti i frammenti. d. MF = 1 per tutti i frammenti tranne che per lultimo. e. Ricopiare eventuali opzioni. f. Ricalcolare il checksum. Da notare che le dimensioni dei frammenti (LPF) si riferiscono alla parte dati o payload e non considerano la parte di header. Pertanto, per ottenere la dimensione totale (Total Length) di ciascun nuovo datagramma generato occorre tenere conto dellheader da aggiungere (almeno 20 ottetti fino ad un massimo di 60) a seconda delle opzioni utilizzate. 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 dellMTU della rete B, il router AB deve procedere con la sua frammentazione. Essendo lMTU della rete B pari a 1500 applicando le relazioni viste in preceden- za si avr: I. NBF = (MTU 4*IHL) DIV 8 = 1480 DIV 8 = 185. II. LPF = MTU 4*IHL = 1480 ( un multiplo esatto di 8). III. NF = (TL 4*IHL) DIV LPF = 4462 1480 = 3 (cio tre frammenti ciascuno con un payload di 1480 ottetti). Internet Protocol version 4 (IPv4) 101 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 101 Parte 3 102 Figura 5.9: Esempio di frammentazione con reti caratterizzate da diversi valori di MTU 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. Nella figura 5.10 mostrato un riepilogo di quanto esposto: Figura 5.10: Determinazione dei parametri di frammentazione dei frammenti generati da un datagramma originato nella rete A e destinato alla rete B (cf. figura 5.9) Esempio 2 Consideriamo le reti raffigurate nella figura 5.9 dellesempio 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 dellMTU della rete C di destinazione. 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 102 Essendo lMTU della rete B pari a 525 applicando le relazioni viste in precedenza avremo: I. NBF = (MTU 4*IHL) DIV 8 = 505 DIV 8 = 63. II. LPF = MTU 4*IHL = 505. Non essendo un multiplo esatto di 8 si seleziona il numero inferiore pi prossimo divisibile per 8. Pertanto sar LPF = 504. III. NF = (TL 4*IHL) DIV LPF = 1480 504 = 2 (cio 2 frammenti ciascuno con un payload di 504 ottetti). IV. Un terzo frammento avente dimensioni pari a: lunghezza_ultimo_fram- mentto = (TL - 4*IHL) MOD LPF = 1480 MOD 504 = 472. V. FO = N*NBF = N*63, con N = 0, 1, 2. Nella figura 5.11 mostrato un riepilogo di quanto appena esposto: Internet Protocol version 4 (IPv4) 103 Figura 5.11: Determinazione dei parametri di frammentazione dei frammenti generati da un datagramma originato nella rete B e destinato alla rete C (cf. figura 5.9) Osservazione sugli esempi 1 e 2: frammentazione trasparente Supponendo che nellesempio 1 lhost sorgente anzich inviare il datagramma ad un host della rete B lo invii ad uno della rete C, si verificher in tal caso una frammen- tazione trasparente nel router BC in quanto ciascun frammento generato dal data- gramma originario deve essere riframmentato prima di essere inoltrato sulla rete C. Effetti negativi dovuti alla frammentazione e ripercussioni sulla sicurezza I Come si pu osservare dagli esempi precedenti, a seguito del processo di fram- mentazione non solo si impegnano risorse elaborative (CPU, Memoria) degli host o router coinvolti, ma aumenta anche la quantit di informazioni che devono essere trasmesse. In particolare la quantit di ottetti che costituiscono loverhead (cio lincremento fisiologico della quantit di dati da inviare) pari 4*IHL*(NF 1) dove NF il numero dei frammenti; in questo calcolo non si tiene conto di eventuali opzioni che, in base al valore del flag (Copy On Fragmentation), devo- no o meno essere copiate in ogni frammento o solamente nel primo. Gli effetti ne- gativi della frammentazione sono ancora pi pesanti per lhost destinatario a causa delle risorse e del tempo (TTL, Timer) necessario da dedicare al riassem- blaggio dei frammenti. Comunque questi effetti negativi influiscono in maniera 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 103 diversa su un host, che possiede le risorse ed il tempo necessario da dedicare, rispetto ad un router. Infatti, considerando il notevole carico di lavoro che questo deve normalmente svolgere ed i ristrettissimi tempi a disposizione da dedicare a ciascun datagramma, si pu intuire come la frammentazione sia un processo veramente penalizzante per i router. I Il mancato recapito o danneggiamento anche di un singolo frammento provoca la ritrasmissione dellintero datagramma, su richiesta di un protocollo di livello superiore (tipicamente TCP). I Datagrammi con valori elevati di TTL possono permanere a lungo nel buffer di ricostruzione. I La deframmentazione potrebbe avere conseguenze negative anche sul corretto funzionamento di alcuni sistemi di networking e di sicurezza come Firewall (per esempio: Non-Initial Fragment Attack), IDS (Intrusion Detection System) e Con- tent Switch Engines) in quanto in questultimo caso, se un pacchetto viene sud- diviso in tanti frammenti, risulta difficile lanalisi del suo effettivo contenuto e la relativa applicazione delle policy. I Un altro effetto collaterale si pu verificare, per esempio, nellutilizzo di client di posta elettronica che implementano la funzionalit Message Fragmentation and Reassembly della RFC 2046 Multipurpose Internet Mail Extensions (MIME) Part two: Media Types. questo il caso di Outlook Express, che opportunamente configurato (Tools Accounts Selezionare un account di e-mail Properties Advanced: nella sezione Sending, selezionare la voce Break apart messages larger than e specificare il valore desiderato (default = 60 KB) consente di spezzare messaggi lunghi in piccole parti. Cos facendo possibile, spezzando opportunamente un messaggio maligno, per un potenziale attaccante eludere il controllo di eventuali filtri SMTP (SMTP Filtering Engines), Gateway Virus Scanner, Content Filters, ecc., qualora questi non eseguano dei controlli pi effi- caci (per esempio: includere un Reassembly Agent sui server per bloccare linol- tro di messaggi frammentati) e non basati unicamente sullanalisi di un deter- minato pattern (per esempio: VIRUS SIGNATURE). In maniera completamente simmetrica ogni host destinazione (e mai un router intermedio, tranne in casi di frammentazione trasparente) deve procedere con le se- guenti operazioni per poter riassemblare i vari frammenti e ricostruire il datagramma cos come si presentava allorigine: I. Predisporre tutte le risorse necessarie per compiere il processo di riassem- blaggio: un buffer per i dati (potenzialmente grande fino a 65.515 ottetti), un buffer per lheader (potenzialmente grande fino a 60 ottetti), una tabella per tenere traccia dei frammenti elaborati (potenzialmente 8192 bit), una varia- bile che contenga il valore Total Length del datagramma ed un timer (cf. il riquadro Alcune note importanti sul dimensionamento del Reassembly Timer alla pagina successiva). II. Alla ricezione del primo frammento (caratterizzato da: MF = 1, FO = 0) copia- re il relativo header nel buffer di ricostruzione e far partire il timer. Parte 3 104 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 104 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. Alcune note importanti sulla procedura di riassemblaggio I Come gi anticipato precedentemente, ogni host deve essere predisposto per accettare datagrammi che abbiano una dimensione di almeno 576 ottetti (sia che arrivino in forma intera sia frammentata). Questo limite identificato mediante il valore EMTU_R (Effective MTU to Receive) definito nella RFC 1122. Inoltre, per consentire la ricezione di pacchetti di dimensioni anche pi elevate (richieste normalmente da alcuni protocolli di livello applicazione) consigliato che tale limite non sia imposto staticamente ma sia configurabile. I Lalgoritmo normalmente utilizzato per effettuare il riassemblaggio dei fram- menti deve prevedere di mantenere lheader del primo frammento in quanto in caso di errore o scadenza del timer esso deve essere restituito nelleventuale mes- saggio ICMP (Type = 11, Code = 1) Fragment reassembly time exceeded. I Per ottimizzare linterazione tra gli host e migliorare le performance degli appa- rati di routing consigliata limplementazione, su ciascun host, di un meccani- smo che consenta al livello di trasporto di determinare la dimensione massima di un messaggio in ricezione o Maximum Message Size that may be Received (MMS_R). Normalmente il suo valore deducibile dalla relazione seguente: MMS_R = EMTU_R IHL. Alcune note importanti sul dimensionamento del Reassembly Timer I Il timer viene azionato alla ricezione del primo frammento. Il suo valore massi- mo di 255 secondi (4,25 minuti). Alla ricezione di ogni frammento dello stesso datagramma il suo valore viene aggiornato, assumendo come valore il massimo tra il valore attuale e quello del TTL del frammento. I Secondo la RFC 791 il valore consigliato di 15 secondi. I Viceversa secondo la RFC 1122, il valore del timeout dovrebbe essere fisso e non dipendente dal campo TTL del frammento ricevuto, in quanto tutti i router or- mai trattano il parametro TTL come numero di hop e non come intervallo di tempo ancora a disposizione. Il valore raccomandato tra 60 e 120 secondi. In caso di scadenza del timer il datagramma ancora parzialmente assemblato deve essere scartato, ed allhost sorgente deve essere notificato un messaggio ICMP (Type = 11, Code = 1) Fragment reassembly time exceeded (se il frammento zero stato ricevuto). Internet Protocol version 4 (IPv4) 105 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 105 I 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 dellMSL 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. I Il messaggio ICMP (Type = 11, Code = 1) Fragment reassembly time exceeded (cf. RFC 792) che viene notificato dallhost 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. I Time To Live (TTL) Dimensione campo = 8-bit Unit di misura = secondi Range = 0 255 (4m15s o 4,25 minuti) Questo campo pu essere utilizzato sia come limite temporale (espresso in secondi) sia come numero di hop ovvero di attraversamenti di router con- cessi ad un datagramma prima di essere definitivamente rimosso da una rete (Internet/intranet/extranet) quando il suo valore raggiunge 0. Originaria- mente il ruolo del campo TTL era di svolgere le funzioni di intervallo di sopravvivenza concesso ad un datagramma. Il decremento del valore del TTL veniva effettuato da ciascun router in base al tempo di permanenza del data- gramma (tempo di forwarding tempo di arrivo del datagramma). A causa delle difficolt di tenere traccia dei vari tempi di transito dei datagrammi e per non incidere ulteriormente sul carico di lavoro dei router, stato stabili- to (dietro la spinta dei costruttori di router) tramite la RFC 1812 di lasciare la libert di utilizzare questo campo come hop count. In tal caso i router devo- no semplicemente decrementare di una unit il valore originario. Oltre a limitare il tempo di vita dei datagrammi IP il campo TTL evita lin- staurarsi dei cosiddetti routing loop. A proposito della gestione del campo TTL sono state fissate nelle RFC 791, RFC 1122 e RFC 1812, alcune regole comportamentali sia per i router sia per gli host: a. Un router non pu mai dare origine o reinstradare un datagramma aven- te un valore TTL = 0. b. Un router decrementa il valore del TTL prima di analizzare la propria tabella di routing. Nel caso in cui il campo TTL raggiunge il valore 0 il relativo datagramma viene scartato e viene riscontrato al mittente il messaggio ICMP (Type = 11, Code = 0) Time To Live Exceeded in Transit come specificato nella RFC 792. c. Qualsiasi host destinatario di un datagramma non ha necessit di verifi- care il valore del campo TTL. Parte 3 106 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 106 d. Il valore del campo TTL indipendente dalla metrica dei protocolli di routing. e. Il valore del campo TTL pu essere specificato o in sede di configurazio- ne del sistema operativo oppure direttamente da alcune applicazioni e/o utility (applicazioni multicast, ping, traceroute/tracert, ). f. Il valore raccomandato per il campo TTL pari al doppio del diametro di una internetwork. Dove per diametro si intende il numero di link (ovve- ro: di interfacce di rete da attraversare per giungere a destinazione) tra i due nodi pi distanti. Da notare che il numero di hop non coincide con il numero di link. Per esempio supponendo che due destinazioni siano separate da 4 router, in tal caso il numero di hop 4, ma il numero di link pari a 5 (numero di hop + 1). Infatti, impostando il parametro TTL = 4 un datagramma non sarebbe in grado di raggiungere la destinazione in quanto arrivato allultimo router (il quarto) il valore del TTL avrebbe gi raggiunto 0 e verrebbe scartato. Viceversa, impostando un valore di TTL pari a 5 o superiore pu giungere potenzialmente a destinazione. Il valore minimo consigliato da IANA per il campo TTL 64 (cf. il sito http://www.iana.org/assignments/ip-parameters). Tips and tricks possibile modificare il valore di default del parametro TTL utilizzato allinterno dello stack TCP/IP Per esempio, in ambiente Microsoft WinNT/2K/XP/2003 possibi- le agire mediante registry aggiungendo o variando la seguente chiave: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\ Parameters\TTLDefault:REG_DWORD:1-255:Default=128. Da notare che applicazioni di tipo WinSockets possono sovrascrivere questo valore. I 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 anchessi 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 allatto 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. Internet Protocol version 4 (IPv4) 107 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 107 Alcuni dei valori per i protocolli pi comuni descritti nella tabella 5.17. Tabella 5.17: I protocolli pi comuni Valore Campo PROT Protocollo 0 Riservato (IPv6 Hop-by-Hop Option) 1 ICMP 2 IGMP 4 IP in IP (encapsulation) 6 TCP 17 UDP 50 ESP Encap Security Payload for IPv6 51 AH Authentication Header for IPv6 89 OSPF Essendo definito in ogni sistema operativo nel quale implementato il pro- tocollo TCP/IP il file protocols (/etc/protocols in ambito Unix/Linux; %Sy- stemRoot%\System32\drivers\etc\protocols in ambiente Microsoft Win*), che contiene la risoluzione tra i valori del campo PROT ed i relativi protocol- li, possibile riferirsi a questi ultimi anche tramite il nome descrittivo anzi- ch per numero. I Header Checksum Dimensione campo = 16-bit Questo campo contiene un codice costituito da 16-bit (2 ottetti) utilizzato per rilevare eventuali errori in fase di trasmissione del datagramma. In caso di rilevazione di errore da parte di un nodo (per esempio: router) il relativo datagramma viene scartato senza linvio di alcun riscontro al mittente n richiesta di ritrasmissione. Il Checksum Header copre solamente la parte IP Header e non prende in considerazione la relativa componente payload. Lalgoritmo di generazione del checksum consiste nellapplicazione delle seguenti operazioni: a. Inizializzare a 0 il campo Checksum. b. Per ogni blocco di 16-bit dellHeader IP viene calcolato il complemento ad 1 (ovvero: vengono invertiti i bit: gli 1 diventano 0 e viceversa). c. Vengono sommati i singoli complementi ad 1 di ogni blocco (tenendo conto di eventuali riporti che devono essere risommati). d. Viene ricavato il complemento ad 1 della somma precedente. e. Il risultato viene copiato nel campo Checksum Header. Oppure si sommano i singoli blocchi da 16-bit (tenendo conto di eventuali riporti) e poi si calcola il complemento a 1 del risultato. Da notare che questo campo deve essere rigenerato ogni volta che il data- gramma subisce delle variazioni, ad esempio in conseguenza del suo rein- stradamento da parte di un router conseguente alla modifica del campo TTL. Parte 3 108 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 108 Esempio di calcolo del checksum Consideriamo la seguente porzione di cattura di una frame (cf. file \Catture\Esem- pioChecksum.cap, frame numero 10, sul CD-ROM allegato) riferita ad un comando ping, dallhost 10.1.1.1 allhost 192.168.1.201, come si pu evidenziare dal campo pro- tocollo (ICMP = 0x01): IP: ID = 0x14E5; Proto = ICMP; Len: 60 IP: Version = 4 (0x4) IP: Header Length = 20 (0x14) IP: Precedence = Routine IP: Type of Service = Normal Service IP: Total Length = 60 (0x3C) IP: Identification = 5349 (0x14E5) IP: Flags Summary = 0 (0x0) IP: .......0 = Last fragment in datagram IP: ......0. = May fragment datagram if necessary IP: Fragment Offset = 0 (0x0) bytes IP: Time to Live = 127 (0x7F) IP: Protocol = ICMP - Internet Control Message IP: Checksum = 0x5969 IP: Source Address = 10.1.1.1 IP: Destination Address = 192.168.1.201 IP: Data: Number of data bytes remaining = 40 (0x0028) Raccogliendo in forma tabellare i valori esadecimali relativi allheader avremo quanto mostrato nella figura 5.12. Internet Protocol version 4 (IPv4) 109 Figura 5.12: I valori esadecimali relativi allheader in forma tabellare I valori esadecimali relativi allheader corrispondono ai campi mostrati nella figu- ra 5.13. Figura 5.13: I campi corrispondenti ai valori esadecimali relativi allheader 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 109 A questo punto sommiamo tutti i campi dellheader a blocchi di 16-bit a partire dal campo Version (tabella 5.18). Tabella 5.18: Somma a blocchi di 16-bit a partire dal campo Version 45 00 + Primo blocco di 16 -bit (Version + IHL + TOS) 00 3C = Secondo blocco di 16-bit (Total Length) 45 3C + Risultato intermedio 14 E5 = Terzo blocco di 16-bit (Identification) 5A 21 + Risultato intermedio 00 00 = Quarto blocco di 16-bit (Flags + Fragment Offset) 5A 21 + Risultato intermedio 7F 01 = Quinto blocco di 16-bit (TTL + Protocol) D9 22 + Risultato intermedio 00 00 = Sesto blocco di 16-bit (Checksuminizializzato a 0) D9 22 + Risultato intermedio 0A 01 = Settimo blocco di 16-bit (primi due ottetti IP Source) E3 23 + Risultato Intermedio 01 01 = Ottavo blocco di 16-bit (ultimi due ottetti IP Source) E4 24 + Risultato intermedio C0 A8 = Nono blocco di 16-bit (primi due ottetti IP Dest) (1)A4 CC Essendoci un riporto si elimina la cifra pi a sinistra e la si somma al risultato A4 CD + Risultato intermedio 01 C9 = Decimo blocco di 16-bit (ultimi due ottetti IP Dest) A6 96 Risultato finale in esadecimale 1010 0110 1001 0110 Trasformazione in binario 0101 1001 0110 1001 Complemento a uno 59 69 Riconversione in esadecimale I Source Address (SOURCE), Destination Address (DEST) Dimensione campo = 32-bit Essendo il protocollo IP di tipo connection-less per ogni datagramma necessario specificare gli indirizzi IP mittente e destinatario al fine di identi- ficare univocamente le due 3-entit (ovvero: entit di livello 3 ISO/OSI) coin- volte nel processo di comunicazione (o IPC, InterProcess Communication). In caso di utilizzo di sistemi di interconnessione ad Internet di tipo Proxy o NAT i suddetti indirizzi saranno riferiti a questi ultimi e non ai nodi estremi. Lo stesso vale in caso di utilizzo di meccanismi di loose o strict routing (cf. Options e Padding quindi seguito). I Options e Padding (OPT) Dimensione campo = variabile a blocchi di 4 ottetti (0 10) Parte 3 110 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 110 La predisposizione di questo campo speciale, opzionale e di lunghezza varia- bile da 0 a 10 blocchi (dette anche parole o word) di 32-bit, consente di aggiungere informazioni addizionali anche non previste nella versione origi- naria del protocollo, da utilizzare per fini sperimentali o di test. Ci evita di sovraccaricare lheader di un datagramma con una quantit fissa di bit uti- lizzata solo raramente ed in casi particolari. Da notare che, come specificato nella RFC 791, ci che opzionale non limplementazione di questa funzionalit a livello di software o stack TCP/IP, che deve essere obbligatoriamente prevista, ma solamente la sua inclusione e trasmissione in un datagramma IP. Inoltre, affinch si possano utilizzare le informazioni contenute in questo campo necessario che tutti i nodi inte- ressati prevedano il loro trattamento. Come anticipato precedentemente, il quanto minimo che costituisce lHeader di un datagramma IP ha una lunghezza pari a 32-bit cio 4 ottetti. Pertanto, leventuale estensione dellheader attraverso laggiunta delle opzioni deve essere eseguita per incrementi di 32-bit, prevedendo di inserire dei caratteri null (operazione chiamata anche padding-zero) per riempire i buchi rimanenti per ottenere lallineamento a 32-bit dellHeader. 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. Esistono due formati per il campo Options: Formato 1: contiene un singolo ottetto di tipo Option-Type (figura 5.14). Internet Protocol version 4 (IPv4) 111 Figura 5.14: Un singolo ottetto di tipo Option-Type Formato 2: contiene un numero variabile di ottetti in modo tale che il loro numero dia luogo a multipli di 4 ottetti o 32-bit mediante linserimento di opportuni ottetti utilizzati con funzioni di padding. Il primo ottetto sempre di tipo Option-Type, il secondo ottetto di tipo Option-Length ed i successi- vi sono di tipo Option-Data. La lunghezza specificata dal campo Option- Length si riferisce a tutti e tre i campi (figura 5.15). 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 111 Parte 3 112 Figura 5.15: Lunghezza specificata dal campo Option-Length si riferisce a tutti e tre i campi Lottetto Option-Type strutturato in tre campi (figura 5.16). Figura 5.16: Struttura dellottetto Option-Type I tre campi assumono il significato seguente: I Copied Flag (CF) (1 bit): identificato dal bit pi significativo (MSB), cio quello pi a sinistra, e serve per indicare ad un router o allhost 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). I 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. Tabella 5.19: Valori del campo Option-Class Option-Class Descrizione 0 00 Network Control 1 01 Riservato per usi futuri 2 10 Debugging e misurazioni 3 11 Riservato per usi futuri I Option-Number (5-bit): questo campo costituito da 5-bit e consente di defi- nire fino a 2 5 = 32 opzioni differenti per ciascuna delle classi precedenti. Nella tabella 5.20 sono indicate alcune delle classi e opzioni pi utilizzate (RFC 791, RFC 1108) (per una lista completa consultare il sito http://www.iana. org/assignments/ip-parameters). 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 112 Tabella 5.20: Classi e opzioni maggiormente utilizzate CF Option-Class Option-Number Option-Length (Valore decimale ottetto Option-Type) (1-bit) (2-bit) (5-bit) Descrizione 0 0 0 (0) End Of Option List (EOOL) 0 0 1 (1) No Operation 1 0 2 11 (130) US DoD Basic Security (SEC), RFC 1108 1 0 3 Variabile (131) Loose Source Route (LSR) o Loose Source e Record Route (LSRR) 1 0 5 Variabile (133) US DoD Extended Security (E-SEC), RFC 1108 0 0 7 Variabile (7) Record Route (RR) 1 0 8 4 (136) Stream ID (SID) 1 0 9 Variabile (137) Strict Source Route (SSR) o Strict Source e Record Route (SSRR) 0 2 4 Variabile (68) Internet Timestamp (TS) Analizziamo brevemente lutilizzo di alcuni dei tipi di Option-Type indicati nella tabella 5.20: I End Of Option List (EOOL): valore decimale: 0; valore esadecimale: 0x00. Lopzione EOOL costituita da un solo ottetto nel quale tutti gli 8-bit hanno valore 0: 0 0 0 0 0 0 0 0 Viene utilizzata, come dice lo stesso nome, per indicare la fine della lista delle opzioni. Non sempre questo ottetto coincide anche con la fine dellheader IP. Infatti nel caso di un eventuale arrotondamento (o padding) a 32-bit (o 4- ottetti), e in accordo alla lunghezza specificata nel campo IHL, possono esse- re aggiunti degli ulteriori ottetti di tipo NOP (No Operation). I No Operation (NOP): valore decimale: 1; valore esadecimale: 0x01. Lopzione NOP costituita da un solo ottetto nel quale tutti gli 8-bit hanno valore 0 tranne quello meno significativo (LSB) che vale 1: 0 0 0 0 0 0 0 1 Essa viene utilizzata per realizzare funzioni di padding allo scopo di allinea- re a 32-bit (o 4 ottetti) le successive opzioni. I IP Security Option (IPSO) Queste opzioni sono utilizzate principalmente in ambito militare (US DoD) e consentono di definire livelli di sicurezza per la classificazione dei datagram- mi, per la compartimentalizzazione, per la gestione delle restrizioni e li- dentificazione dei cosiddetti Closed User Group (CUG) e Transmission Con- trol Code (TCC). Internet Protocol version 4 (IPv4) 113 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 113 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). Parte 3 114 Tabella 5.21: Opzioni Basic Security (SEC) Option-Type Option-Length IPSO Compartments Handling Restrictions Transmission Control Code (130) (11) (min. 3) 8-bit 8-bit 16-bit 16-bit 16-bit 24-bit 10000010 00001011 SSS...SSS CCC...CCC HHH...HHH TCC 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. Tabella 5.22: Opzioni Extended Security (E-SEC) Option-Type Option-Length Additional Security Additional Security (133 / 0x82) (min. 3) Info Format Code Information 8-bit 8-bit 8-bit Variabile 10000101 000LLLLL AAAAAAAA TCC Per una descrizione pi approfondita sulle IPSO consultare le RFC 791 e RFC 1108 ed il sito http://www.iana.org/assignments/protocol-numbers. I Record Route (RR): valore decimale: 7; valore esadecimale: 0x07. Lopzione RR caratterizzata dal valore decimale 7 del campo Option-Type e ha la struttura mostrata nella tabella 5.23. Tabella 5.23: Opzione Record Route (RR) Option-Type Option-Length Pointer-Offset Route Data (7 / 0x07) (max. 9 Indirizzi IP = 9 blocchi da 32-bit) 8-bit 8-bit 8-bit Variabile 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 allinterno dello stesso datagramma e identificato dal campo Pointer Offset o Next Slot Pointer. Lindirizzo IP che ogni router inserir nella lista quello pi lontano rispetto allhost 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 dallhost sorgente ed inizializzato a 0. 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 114 Da quanto detto finora ed osservando la struttura dellopzione RR, si pu dedur- re che: Essendo CF = 0 questa opzione deve essere copiata solamente sul primo frammento in caso di deframmentazione. Essendo: 40 = dimensione massima IP Options; 3 = overhead della opzione RR; sar: (40 3) / 4 = 9) da notare che si tratta di una divisione intera) dopo il numero 9 e prima del punto. Ci vuol dire il campo Route Data pu conte- nere fino ad un massimo di 9 indirizzi IP di router. Non essendo la dimensione complessiva della opzione RR un multiplo di 4 necessario aggiungere o una opzione EOOL (se non esistono altre opzioni) oppure una opzione NOP (nel caso in cui siano presenti altre opzioni) per allineare lheader IP a 32-bit. Il campo Pointer contiene lindirizzo (chiamato anche Offset o Next Slot Poin- ter) del campo IP Address nel quale ciascun router dovr inserire il proprio indirizzo. Da notare che loffset riferito allinizio della stessa opzione. Il suo valore iniziale (e comunque minimo) pari a 4. Laggiornamento, da parte di ogni router, deve avvenire per multipli di 4. Pertanto il suo valore pu essere specificato tramite la seguente espressione: Pointer = 4 * N, con 1 N 9. Nel caso in cui il valore iniziale del puntatore inferiore a 4 viene restituito un messaggio di errore tramite ICMP. Nel caso in cui non esista pi alcuno slot disponibile per registrare un ulte- riore indirizzo IP (o perch sono stati utilizzati tutti i 9 spazi a disposizione o perch il valore contenuto nel campo pointer superiore a 9) il router inoltra il datagramma senza tracciare la successiva attivit o ignorando completa- mente lopzione (valore iniziale pointer > 9). IP Record Route e Traceroute I Le stesse informazioni registrate utilizzando lopzione RR sono ottenibili anche tramite il comando traceroute. I A differenza del comando traceroute la lista prodotta da RR limitata a 9 indi- rizzi. I A differenza del comando traceroute che fornisce una lista asimmetrica della rotta (ovvero: solo in una direzione), lopzione RR consente di verificare il path di routing in entrambe le direzioni. Utilizzare lopzione RR mediante il comando ping Utilizzando il comando ping possibile configurare lutilizzo dellopzione RR: I Windows 9x/NT/2K/XP/2003: Ping r NumeroHop IPDestinatario dove NumeroHop 9. Cos facendo lhost mittente predispone allinterno del data- gramma un numero di slot pari a NumeroHop per ospitare gli indirizzi che i vari router aggiungeranno. Internet Protocol version 4 (IPv4) 115 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 115 Esempio: ping r 5 192.168.1.199 *nix/Linux: ping R IPDestinatario Esempio: ping R 192.168.1.200 I Source Routing (SR) Normalmente linoltro dei datagrammi IP allinterno di una infrastruttura di reti interconnesse determinata dalla configurazione dei router di collega- mento (intermediate system o gateway). Infatti su ciascun router definita una tabella o mappa delle rotte che un datagramma deve seguire per giun- gere, nel modo pi ottimale possibile, a destinazione. Attraverso lutilizzo delle opzioni di SR possibile predeterminare la rotta (ovvero: Routing) che un datagramma dovr seguire per giungere a destina- zione, direttamente alla sorgente (ovvero: Source) e ci indipendentemente dalla configurazione delle mappe di routing di ciascun router interessato dal processo di SR. Queste opzioni sono utili in fase di test per verificare delle tratte alternative o per dirottare alcuni datagrammi su dei percorsi pi convenienti (ovvero: pi affidabili, meno costosi) o fraudolenti cio dirottati forzatamente da terze persone (ovvero: hacker). Naturalmente lo svantaggio nellutilizzo delle opzioni di SR la conoscenza richiesta della topologia della rete utilizzata e la lista dei router interessati dal processo di inoltro o forwarding. In particolare esistono due variazioni di SR: Loose Source Route (LSR) o Loose Source e Record Route (LSRR): valore de- cimale: 131; valore esadecimale: 0x83. Nel caso di LSR lhost mittente predispone una lista di indirizzi IP di rou- ter i quali non necessariamente devono essere contigui (neighboring router), ma possono trovarsi anche su reti non adiacenti e quindi sepa- rati da pi di un salto (hop). Nel caso in cui due indirizzi IP non siano consecutivi un router pu liberamente scegliere un qualsiasi percorso per completare la tratta (path) mancante. Questa opzione viene indicata anche come Loose Source and Record Route (LSRR) in quanto consente, alla fine del processo di SR, di ricavare la traccia dei router attraversati dal datagramma come lopzione Record Route. Il formato dellopzione LSRR mostrato nella tabella 5.24. Tabella 5.24: Opzione Loose Source Route (LSR) Option-Type Option-Length Pointer-Offset Route Data (131 / 0x83) (max. 9 Indirizzi IP = 9 blocchi da 32-bit) 8-bit 8-bit 8-bit Variabile Parte 3 116 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 116 Strict Source Route (SSR) o Strict Source e Record Route (SSRR) valore decimale: 137; valore esadecimale: 0x89. Nel caso di SSR lhost mittente predispone la lista esatta degli indirizzi IP dei router che devono essere attraversati dal datagramma. A differenza dellLSR 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, linoltro 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 lopzione Record Route. Il formato dellopzione SSRR mostrato nella tabella 5.25. Tabella 5.25: Opzione Strict Source Route (SSR) Option-Type Option-Length Pointer-Offset Route Data (137 / 0x89) (max. 9 Indirizzi IP = 9 blocchi da 32-bit) 8-bit 8-bit 8-bit Variabile Lhost dal quale viene inviato il datagramma con lopzione 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 lindirizzo IP puntato dal campo Pointer. Dopodich registra nella lista degli indirizzi LSR o SSR lindirizzo IP dellinterfaccia 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 lindirizzo IP di un router non specificato nellelenco 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- lopzione (Option-Length) e lhost destinatario iniziale stato raggiunto (ovvero: lultimo indirizzo indicato nellheader 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 allhost 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 Internet Protocol version 4 (IPv4) 117 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 117 la lista SR pu essere manipolata essa pu essere costruita facendo in modo che il primo indirizzo della lista invertita punti ad un host presele- zionato (scanned host) di una seconda rete raggiungibile tramite router o host con doppia scheda di rete (per esempio: WinNT/2K/2003 multi- homed configurato come router). Infine, nel caso in cui allinterno di uno stesso datagramma si trovano due opzioni SR conflittuali secondo la RFC 1122 il comportamento dello stack pu dipendere dalla particolare implementazione. Utilizzare lopzione RR mediante il comando ping Utilizzando il comando ping possibile configurare lutilizzo delle opzioni LSR e SSR: I LSR: Windows 9x/NT/2K/XP/2003: Ping j <lista SR> <IPDestinatario> I SSR: Windows 9x/NT/2K/XP/2003: Ping k <lista SR> <IPDestinatario> Source Routing e potenziali risvolti sulla sicurezza Le opzioni di SR sono spesso utilizzate unitamente alle procedure di IP spoofing (let- teralmente truffa dellindirizzo IP) per ridirigere dei datagrammi verso un host fan- tasma transitando magari attraverso un host sicuro cio interno alla rete. Da notare che colui che attacca il sistema pu risiedere anche su una rete esterna (per esempio: Internet) rispetto allhost attaccato. Delle due tecniche quelle che risulta pi critica dal punto di vista della sicurezza la LSR per la quale sufficiente inserire allinterno della lista SR lindirizzo presso il quale si vogliono dirottare i datagram- mi, senza la necessit di conoscere lintera topologia di routing. Per questo motivo come misura preventiva consigliato disabilitare il meccanismo di SR direttamente tramite firewall, router (per esempio, nel caso di router Cisco, inserendo il comando no ip source-route) e server NAT. A tale proposito secondo la RFC 1122 occorre distinguere tra local source-routing nel caso in cui il reinoltro del datagramma avviene attraverso la stessa interfaccia fisica di rete e non-local source-routing nel caso in cui avvenga attraverso una diversa interfaccia (per esempio: sistemi multi-homed o router). In tal caso mentre il SR locale deve essere sempre permesso per quello non-locale deve essere consentita la disabilitazione. Disabilitare SR su un computer WinNT/2K/XP/2003 multi-homed configurato come router Aggiungendo la seguente chiave nei registry possibile disabilitare il processo di SR su computer WinNT/2K/XP/2003 multi-homed e configurati come router: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\ Parameters\DisableIPSourceRouting. Parte 3 118 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 118 Timestamp (TS): valore decimale: 68; valore esadecimale: 0x44. Lopzione TS caratterizzata dal valore decimale 68 del campo Option- Type e presenta la struttura mostrata in tabella 5.26. Tabella 5.26: Opzione Timestamp Option-Type Option-Length Pointer-Offset Overflow Flag (68 / 0x44) (4-bit) (4-bit) 8-bit 8-bit 8-bit Variabile Area Dati IP Address 1 (32-bit) Timestamp 1 (32-bit)
Il suo funzionamento molto simile a quello dellopzione RR.
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 ed il timestamp (ovvero: il tempo di rice- zione del datagramma espresso in millisecondi rispetto allora GMT (Greenwich Meridian Time, o UTC Universal Time Coordinate) e salvato in una variabile a 32-bit) in uno spazio apposito (nei sotto campi IP Address e Timestamp del campo variabile Area Dati) riservato allinterno dello stesso datagramma e identificato dal campo Pointer Offset o Next Slot Pointer. Questo spazio viene predisposto dallhost sorgente ed ini- zializzato a 0. La registrazione degli indirizzi IP e del timestamp da parte dei vari rou- ter attraversati dal datagramma, deve avvenire nel rispetto dei limiti dei 40 ottetti a disposizione per la parte Options e Padding. Pertanto la di- mensione del campo Area Dati data da 40 4 (ottetti di overhead) = 36 ottetti, ovvero 9 parole da 32-bit. La lunghezza dellopzione TS conte- nuta nel campo Option-Length. Il campo Pointer Offset o Next Slot Pointer un indice, relativo allinizio del campo Options, che punta al primo campo libero allinterno della sezione Area Dati. Il valore minimo che pu contenere questo campo pari a 5; esso viene inizializzato dallhost mittente ed aggiornato da ogni router. Il campo Overflow contiene il numero di router (fino ad un massimo di 2 4 1 = 15) che non hanno potuto registrare il proprio indirizzo IP ed il relativo timestamp, per mancanza di spazio nel settore Area Dati. Il campo Flag serve per controllare la tipologia di informazioni che cia- scun router pu inserire nel campo Area Dati. I valori possibili sono mostrati nella tabella 5.27. Internet Protocol version 4 (IPv4) 119 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 119 Tabella 5.27: Valori possibili del campo Flag dellopzione Timestamp Flag Descrizione 0 Solo Record Timestamp in parole di 32-bit. 1 Ogni router inserisce prima lindirizzo IP e poi (nella successiva parola di 32-bit) il Timestamp. 2 Riservato. 3 Lindirizzo IP pre-specificato dal mittente. Ogni router inserisce, nel campo relativo associato, il timestamp. 4 15 Riservati. Il valore del Timestamp pu essere di due tipi: right-justified: espresso in millisecondi rispetto allora GMT (Green- wich Meridian Time) o UTC (Universal Time Coordinate) rispetto alla mezzanotte, e salvato in una variabile a 32-bit. non-standard-time: non necessariamente espresso in millisecondi e non necessariamente aggiornato rispetto allora UTC. Per differen- ziarla dallora standard viene settato ad uno il bit di ordine superiore. Nel caso in cui larea dati risulta essere gi piena, il datagramma viene comunque inoltrato senza inserire il relativo timestamp ed incremen- tando di una unit il campo overflow. Viceversa, se lo spazio a disposizione insufficiente per inserire un Full- Timestamp oppure se il campo overflow gi arrivato al valore limite (15) il relativo datagramma viene considerato in uno stato di errore e viene scartato. In entrambi i casi viene inoltrato un messaggio ICMP allhost sorgente. Da notare infine che essendo il valore Option-Type pari a 68 ed essendo quindi il primo bit (MSB) uguale a zero, questa opzione non necessita di essere ricopiata in ogni frammento ma solamente nel primo. 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. Parte 3 120 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 120 2) Quali sono le classi comunemente utilizzabili per lassegnazione degli indi- rizzi IP pubblici? a. A b. B c. C d. D e. E f. F [R2]: a, b, c. 3) Quali sono i valori ammissibili per il primo ottetto per le classi comunemen- te utilizzate? a. Classe A: 0 127 b. Classe A: 1 126 c. Classe B: 127 192 d. Classe B: 128 191 e. Classe C: 191 223 f. Classe C: 192 223 [R3]: b, d, f. Da notare che anche se matematicamente gli indirizzi 0 e 127 fanno parte della classe A essi non sono indirizzi validi, bens riservati per uso speciale: 0 = this network only e 127 = loopback. 4) Qual lo scopo della classe D? a. Disporre indirizzi per host. b. Disporre indirizzi per network. c. Disporre indirizzi multicast. d. Non utilizzata. [R4]: c. 5) Identificare la classe di appartenenza dellindirizzo IP 10.255.255.254 con la subnet mask 255.255.255.240? a. D b. B c. C d. A e. E [R5] d. La classe di un indirizzo IP non alterata dal procedimento di subnet- ting. Pertanto, essendo il primo ottetto dellindirizzo compreso nella fascia 1 126, la classe di appartenenza sar sempre la A indipendente- mente dalla subnet mask associata. Internet Protocol version 4 (IPv4) 121 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 121 6) Indicare quali dei seguenti indirizzi IP non sono validi per lassegnazione 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 2 8 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 = 2 nBiS 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>. Parte 3 122 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 122 8) A che cosa serve la network (o subnet) mask? a. Per determinare la parte <hostID>. b. Per determinare la parte <netID>. c. Per identificare il default route. d. Per ricavare la subnet di appartenenza di un indirizzo IP attraverso una operazione di AND logico. e. Per stabilire se un indirizzo IP destinazione situato sulla stessa rete logica del mittente oppure se appartiene ad una rete remota. [R8]: b, d, e. 9) Quali sono i principali benefici del CIDR? a. Consentire lutilizzo di subnet mask ClassFull. b. Ridurre le dimensioni delle tabelle di routing tramite laggregazione delle entry (Route Aggregation). c. Evitare il supernetting. d. Consentire lassegnazione di frazioni di indirizzi IP di classe C. [R9]: b, d. 10) Qual la lunghezza di un indirizzo IP e dei suoi componenti <netID> e <hostID>? a. Tutte le risposte seguenti sono corrette in relazione alla classe di appar- tenenza dellindirizzo IP. b. 32-bit, 8-bit parte <netID>, 24-bit parte <hostID>. c. 32-bit, 16-bit parte <netID>, 16-bit parte <hostID>. d. 32-bit, 24-bit parte <netID>, 8-bit parte <hostID>. [R10]: a. 11) Rifacendosi alla RFC 1918 indicare quali dei seguenti indirizzi IP sono riser- vati per uso privato? a. 171.1.2.3 b. 172.16.1.1 c. 169.254.1.2 d. 10.20.30.40 e. 192.168.1.1 f. 192.169.0.1 g. 172.32.1.2 h. 172.15.0.1 [R11]: b, d, e. 12) corretto lindirizzo 192.168.0001.0376? a. Non un indirizzo valido in quanto non ammesso che un ottetto sia rappresentato da un numero superiore a 255. b. Si rappresenta un indirizzo espresso in forma DON (Dotted Octal No- tation) e si riferisce allindirizzo 192.168.1.254 espresso in forma DDN (Dotted Decimal Notation). Internet Protocol version 4 (IPv4) 123 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 123 c. un indirizzo espresso in esadecimale (Dotted Exadecimal Notation). [R12]: b. Appendice 5B: Esercizi 1) Dato lindirizzo 190.190.1.8 con la subnet mask 255.255.252.0 determinare la subnet di appartenenza e lindirizzo di directed broadcast secondo la RFC 950. a. Subnet = 190.190.0.0, Broadcast = 190.190.3.255 b. Subnet = 190.190.0.0, Broadcast = 190.190.7.255 c. Subnet = 190.190.1.0, Broadcast = 190.190.3.255 d. Configurazione non possibile. [R1]: d. Per determinare la subnet di appartenenza dellindirizzo IP assegnato suf- ficiente trasformare in binario sia lindirizzo sia la subnet mask e calcolare lAND logico. Per semplicit considerato solamente il terzo ottetto della subnet mask in quanto essendo i primi due composti da tutti-1 non alterano il corrispondente valore dellindirizzo IP (figura 5.17). Parte 3 124 Figura 5.17: Trasformazione in binario dell'indirizzo IP e della subnet mask dell'esercizio 1 e determinazione della subnet di appartenenza (AND logico) Pertanto la subnet di cui fa parte lindirizzo costituita da: 190.190.0.0/22. In particolare osservando la codifica binaria del terzo ottetto si pu notare che la parte <subNetID> costituita da nBiS = 6-bit tutti-0. Quindi in rispetto della RFC 950 questo indirizzo di subnet da escludere. 2) Dato lindirizzo 190.190.1.8 con la subnet mask 255.255.252.0 determinare la subnet di appartenenza e lindirizzo di directed broadcast secondo la RFC 1812 (VLSM/CIDR). a. Subnet = 190.190.0.0, Broadcast = 190.190.3.255 b. Subnet = 190.190.0.0, Broadcast = 190.190.7.255 c. Subnet = 190.190.1.0, Broadcast = 190.190.3.255 d. Configurazione non possibile. [R2]: a. Rifacendosi al conteggio effettuato nellesercizio precedente ed applicando le regole sul subnetting dettate dalla RFC 1812 ne consegue che lindirizzo 190.190.1.8/22 legale ed appartiene alla subnet 190.190.0.0. 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 124 A questo punto per determinare lindirizzo di broadcast sufficiente calcola- re le 2 6 = 64 subnet identificate dalla subnet mask 255.255.252.0 ed i rispetti- vi range di indirizzi IP riservati agli host, assegnando ai 6-bit della parte <subNetID> tutti i possibili valori 0 ed 1 (tabella 5.28). 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 = 2 posizione 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 Pertanto per la subnet identificata, lindirizzo di directed broadcast corri- sponde a 190.190.3.255, determinato assegnando il valore 1 a tutti i bit della parte <hostID>. In sostanza esso corrisponde allultimo indirizzo IP del range <hostID> corrispondente: 190.190.0.0 190.190.3.255. a) Regola pratica per la determinazione delle subnet nellipotesi RFC 1812 Per ricavare le subnet identificate da una determinata subnet mask sufficiente, dopo aver espresso in binario lottetto interessato dal procedimento di subnetting (nellesercizio precedente il terzo), iniziare dalla subnet tutti-0 (decimale 0) e prose- guire con il primo valore corrispondente al peso del bit di ordine inferiore della parte <subNetID> (nellesempio 4). Questo valore assumer le funzioni di passo nella determinazione delle successive subnet, per le quali si prosegue sommando ripetuta- mente questo peso fino al raggiungimento del valore identificato dalla cifra decima- le del relativo ottetto della subnet mask (nellesempio si tratta del terzo ottetto di valore 252) corrispondente alla configurazione tutti-uno per la parte <subNetID>. b) Regola pratica per la determinazione delle subnet nellipotesi RFC 950 Nel caso della RFC 950 vanno eliminate le subnet corrispondenti ai valori estremi dellintervallo di subnet dedotto secondo la regola a) cio le subnet tutti-0 e tutti-1. c) Regola pratica per la determinazione degli indirizzi directed (o subnet) broadcast Dopo aver determinato linsieme delle subnet secondo la regola a) o b), per la deter- minazione dellindirizzo da considerare come subnet broadcast bisogna considerare per ciascuna subnet il range dei valori di indirizzi da assegnare agli host e identifi- care lultimo valore di ciascun range (nellesempio 190.190.3.255). Internet Protocol version 4 (IPv4) 125 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 125 Parte 3 126 Per facilitare le operazioni di subnetting conviene riferirsi alla tabella mostrata qui di seguito: Subnet mask Passo nBiS_OS (Ottetto Subnetting) 128 128 1 192 64 2 224 32 3 240 16 4 248 8 5 252 4 6 254 2 7 255 1 8 Modalit duso: 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 dellottetto interessato dal subnetting (secondo, terzo o quarto). A tale proposito necessario verificare la classe di origine dellindirizzo 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 lesercizio 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 dellottetto 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 (nellesercizio 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 lindirizzo assegnato (nellesercizio precedente, il range 190.190.0.0 190.190.3.254). V. Identificare lindirizzo di broadcast per ogni subnet considerando lultimo indi- rizzo IP di ciascun range degli host (nellesercizio precedente, 190.190.3.255). 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 126 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. e) Regola matematica per la determinazione delle subnet VLSM data la loro dimensione D (numero di host) o passo Indicando con D la dimensione delle subnet da determinare (espressa in numero di host), linsieme delle subnet avr come indirizzo iniziale (riferito allottetto interes- sato dal subnetting) un valore dato da: IP Start Subnet = D * N (N = 0, 1, 2, ) Il cui limite superiore dato dal valore decimale dellultimo ottetto della subnet mask interessato dal subnetting. Esempio: avendo assegnato il seguente indirizzo di classe C 223.223.223.0/24, si sup- ponga di voler costruire delle subnet aventi ciascuna una capacit complessiva di 64 indirizzi (compreso tutti-0 e tutti-1). In tal caso le subnet avranno come ultimo ottet- to un valore compreso nella seguente serie: IP Start Subnet = 64 * N (N = 0, 1, 2, 3,...) Per determinare il limite massimo sufficiente dedurre la subnet mask necessaria per ottenere le subnet di dimensioni 64. Cio essendo 256 64 = 192 la subnet mask sar 255.255.255.192 oppure /26 in notazione CIDR. Pertanto le subnet effettive nel caso RFC 1812 saranno: 223.223.223.0/26, 223.223.223.64/26, 223.223.223.128/26, 223.223.223.192/26. 3) Dato lindirizzo 147.148.149.150 con 4-bit di subnet determinare la subnet di appartenenza. a. 147.148.0.0 b. 147.148.128.0 c. 147.148.144.0 d. 147.148.149.0 [R3]: c. Facendo riferimento alla tabella 5.29, si pu dedurre che il passo da utilizza- re per la determinazione delle subnet 16. Internet Protocol version 4 (IPv4) 127 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 127 Tabella 5.29: Tabella per la determinazione del passo delle subnet Subnet Mask 128 192 224 240 248 252 254 255 Passo 128 64 32 16 8 4 2 1 nBiS 1 2 3 4 5 6 7 8 Lo stesso risultato poteva essere conseguito anche trasformando la subnet mask dalla notazione CIDR a quella decimale. In particolare considerando solamente lottetto della subnet mask interessato dal subnetting (in questo caso il terzo) e trasformandolo in decimale si ricava quanto mostrato nella tabella 5.30. 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 = 2 posizione 128 64 32 16 8 4 2 1 nBiS = 4 1 1 1 1 0 0 0 0 Valore decimale 240 Pertanto il passo delle subnet prodotte dal subnetting dato da: passo = 256 - 240 = 16. A questo punto le 2 nBiS = 16 subnet prodotte dal subnetting saranno: 0, 16, 32, 48, 64, 80, 96, 112, 128, 144, 160, 176, 192, 208, 224, 240. Quindi lindirizzo 147.148.149.150 sar compreso nella subnet 147.148.144.0/20. 4) Dato lindirizzo 212.100.200.62 con la subnet mask 255.255.255.224 determi- nare la subnet di appartenenza ed il relativo indirizzo di directed broadcast. a. Subnet = 212.100.200.0, Broadcast = 212.100.200.63 b. Subnet = 212.100.200.32, Broadcast = 212.100.255.255 c. Subnet = 212.100.200.32, Broadcast = 212.100.200.255 d. Subnet = 212.100.200.32, Broadcast = 212.100.200.63 [R4]: d. Essendo la subnet mask espressa in forma decimale si ricava immediata- mente il passo delle subnet prodotte dal subnetting: passo = 256 224 = 32. Parte 3 128 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 128 Essendo nBiS = 3 [(224) 10 = (111) 2 ] le 2 nBiS = 8 subnet derivate saranno: 0, 32, 64, 96, 128, 160, 192, 224. Quindi lindirizzo 212.100.200.62 sar compreso nella subnet 212.100.200.32/27 alla quale corrisponde lindirizzo di broadca- st 212.100.200.63. 5) Dato il seguente indirizzo di subnetting 143.1.9.61/28 (12-bit di subnet) quale dei seguenti insiemi di indirizzi di host sono validi e quindi fanno parte della stessa subnet dellindirizzo assegnato? a. 143.1.0.1 143.1.255.254 b. 143.1.0.1 143.1.9.62 c. 143.1.9.48 143.1.9.62 d. 143.1.9.49 143.1.9.62 [R5]: d. Da notare che lindirizzo assegnato di classe B. Inoltre essendo il numero dei bit di subnet (nBiS) pari a 12 ci vuol dire che il subnetting si estende ai 4-bit del quarto ottetto. Pertanto trasformando il quarto ottetto della subnet mask in formato deci- male si ricava quanto mostrato nella tabella 5.31. 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 = 2 posizione 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 2 nBiS = 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 lindirizzo 143.1.9.61/28 sar compreso nella subnet 143.1.9.48/28 alla quale corrisponde lindirizzo 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 lindirizzo 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. Internet Protocol version 4 (IPv4) 129 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 129 Per determinare lindirizzo di summarization per le due subnet assegnate necessario convertirle in binario e calcolare il numero dei bit in comune a partire dal bit pi significativo del primo byte pi a sinistra (pi significativo). Questo numero determina la subnet mask in formato CIDR da specificare con lindirizzo della prima subnet del gruppo (tabella 5.32). Tabella 5.32: Trasformazione in binario dei due indirizzi IP e determinazione della parte comune a partire dal bit pi significativo del primo ottetto Subnet in Formato DDN I ottetto II ottetto III ottetto IV ottetto 172.26.136.0 10101100 00011010 10001000 00000000 172.26.143.0 10101100 00011010 10001111 00000000 Pertanto lindirizzo cercato : 172.26.136.0/21. 7) Quante subnet e quanti host possibile avere con il seguente indirizzo 172.26.42.0/11? a. 8 Subnet, 2.097.152 Host. b. 8 Subnet, 2.097.150 Host. c. 8 Subnet, 8.190 Host. d. 2046 Subnet con RFC 950 oppure 2048 Subnet con RFC 1812, 30 Host. [R7]: d. In questo esercizio occorre prestare attenzione alla convenzione CIDR utiliz- zata. Infatti solitamente con essa viene specificato il numero di bit che costi- tuiscono la network mask, che ricordiamo definita da: <Network Mask > ::= <netID-Tutti-1> <subNetID-Tutti-1> <hostID- Tutti-0>. A volte, anche se raramente, con la convezione CIDR viene indicato il nume- ro nBiS di bit che costituiscono la subnet mask ovvero la sola parte <subNetID>, come in questo caso. Pertanto i bit effettivi della network mask sono: (numero di bit netmask classe B) + nBiS = 16 + 11 = 27. Per cui risulta: nS (numero Subnet) secondo RFC 950 = 2 11 2 = 2046 nS (numero Subnet) secondo RFC 1812 = 2 11 = 2048 nH (numero Host) = 2 (32-27) 2 = 30. 8) Si dispone del seguente indirizzo di rete di classe B 172.26.0.0/16. Volendo creare delle sottoreti ognuna delle quali pu ospitare fino a 650 host, quale subnet mask necessario utilizzare? a. 255.255.255.0 b. 255.255.248.0 c. 255.255.254.0 d. 255.255.252.0 Parte 3 130 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 130 [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) = 2 nBiH 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. Nellipotesi 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: Internet Protocol version 4 (IPv4) 131 Figura 5.18: Esempio per lesercizio 9 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 131 a. Subnet1: 223.223.223.0/25; Subnet2: 223.223.223.128/26; Subnet3: 223.223.223.192/27 b. Subnet1: 223.223.223.0/26; Subnet2: 223.223.223.16/26; Subnet3: 223.223.223.32/26 c. Subnet1: 223.223.223.0/24; Subnet2: 223.223.223.128/25; Subnet3: 223.223.223.192/26 d. Impossibile. [R9]: a. Parte 3 132 Tabella 5.33: Processo di suddivisione della rete iniziale in 4 sottoreti LAN Subnet IP Subnet mask nH Range IP Host LAN1 223.223.223.0 /25 126 223.223.223.1 223.223.223.126 255.255.255.128 Subnet Broadcast: 223.223.223.127 LAN2 223.223.223.128 /26 62 223.223.223.129 223.223.223.190 255.255.255.192 Subnet Broadcast: 223.223.223.191 LAN3 223.223.223.192 /27 30 223.223.223.193 223.223.223.222 255.255.255.224 Subnet Broadcast: 223.223.223.223 Uso Futuro 223.223.223.224 /27 30 223.223.223.225 223.223.223.254 255.255.255.224 Subnet Broadcast: 223.223.223.255 Supponendo di assegnare alle interfacce dei router i seguenti indirizzi IP: Router1I, LAN1: 223.223.223.1 Router12, LAN1: 223.223.223.2 Router13, LAN1: 223.223.223.3 Router12, LAN2: 223.223.223.129 Router13, LAN3: 223.223.223.193 e vista la semplicit dellinfrastruttura di rete, in questo caso possibile im- postare staticamente le seguenti entry statiche, supponendo che i router siano dei Cisco (tabella 5.34). 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 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 132 E, per finire, affinch i router siano in grado di gestire gli indirizzamenti di tipo CIDR/VLSM ClassLess necessario dare i seguenti comandi di configu- razione: ip classless ip subnet-0. 10) Un Internet Service Provider (ISP) europeo ha ottenuto dal RIPE lindirizzo CIDR 223.223.223.0/20. Quante sono le subnet di classe C aggregate? a. 24 b. 32 c. 256 d. 16 [R10]: d. Il numero di subnet di classe C identificate dalla notazione CIDR assegnata pari a: 2 (20 mod 8) = 2 4 = 16. Internet Protocol version 4 (IPv4) 133 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 133 05 GUIDA TCP/IP XP 28-03-2003 14:07 Pagina 134