1 Indirizzamento IP: Caratteristiche, problemi e soluzioni.
Transcript
1 Indirizzamento IP: Caratteristiche, problemi e soluzioni.
Indirizzamento IP: Caratteristiche, problemi e soluzioni. INTRODUZIONE All’interno di una rete un problema di fondamentale importanza che bisogna studiare approfonditamente è quello dell’indirizzamento. Come fare a partire dall’host A a raggiungere l’host B? Come faccio a riconoscere l’host B? Un sistema di indirizzamento deve permettermi di identificare un host su una rete in maniera univoca. La scalabilità è un obiettivo che un sistema di indirizzamento ben progettato deve porsi. Vedremo come IPv4 quando fu progettato potesse sembrare altamente scalabile, e come invece col passare degli anni questo convinzione si sia rivelata sbagliata. Vedremo i vari meccanismi sorti per risolvere temporaneamente il problema e anche quella tecnologia che invece dovrebbe risolvere definitivamente il problema di indirizzamento su Internet, ossia IPv6. INDIRIZZAMENTO IN INTERNET Gli indirizzi utilizzati su Internet vengono chiamati indirizzi IP e sono rappresentati da 32 bits. La forma tipica per rappresentare un indirizzo IP è quella di usare la notazione decimale puntata, ossia numeri decimali di 8 bit separati da punti. In realtà la forma originale è quella binaria (facile da gestire per le macchine) e quella decimale è stata adottata per facilitare (noi esseri umani) la memorizzazione degli indirizzi. Esempio: L’indirizzo IP in forma decimale puntata: 192.45.2.3 corrisponde all’indirizzo IP in forma binaria puntata: 11000000.00101101.00000010.00000011 Ricordiamo che l’indirizzo IP è univoco e serve ad identificare una connessione alla rete. Questo significa che se un computer da una rete lo spostiamo ad un’altra, l’indirizzo IP cambierà. Viene assegnato infatti un indirizzo IP ad ogni interfaccia di rete. Come esempio chiarificatore, prendiamo in considerazione un normalissimo router. Poniamo che da una parte sia collegato ad una LAN e dall’altra parte abbia un collegamento che gli permette di raggiungere Internet. Per far questo ha bisogno di due interfaccie di rete. Quindi avremo un IP per la rete interna, ad esempio 10.0.0.1 e un altro indirizzo IP per essere visibile su Internet, ad esempio 192.0.3.4. All’epoca della progettazione di IPv4 si penso che il numero di indirizzi disponibili con un indirizzamento a 32 bits (più di 4 miliardi) fosse molto grande. Tuttavia si è arrivati ai giorni nostri in cui dobbiamo affrontare il problema della scarsità di indirizzi IP disponibili. FORMATO DEGLI INDIRIZZI IPv4 Abbiamo detto che gli indirizzi IP sono rappresentabili da 4 numeri decimali (di otto bit) separati da un punto. Questo ci porta ad avere degli indirizzi IP che hanno un range di valori possibili che va dal più piccolo 0.0.0.0 al più grande 255.255.255.255, dove per ogni ottetto di bit abbiamo un valore minimo di 0 e un valore massimo di 255. All’atto della progettazione, gli indirizzi furono suddivisi in 5 classi e fu introdotto il concetto di gerarchia a due livelli: il primo livello il net-id (indirizzo di rete) e il secondo l’host-id (indirizzo dell’host). Le varie classi si differenziano tra loro in base al differente numero di bit riservati all’indirizzo di rete e di host. Vediamo ora le varie classi: - CLASSE A: progettata per soddisfare le necessità di indirizzamento di reti molto vaste. In un indirizzo di classe A abbiamo che soltanto i primi 8 bit indicano il net-id, mentre i restanti indicano l’host-id. Altra caratteristica è il fatto che il primo bit di un indirizzo di classe A è sempre posto a 0. Al massimo possiamo quindi avere 127 reti di classe A. Gli indirizzi di classe A validi (che possono essere assegnati) va da 1.0.0.0 a 126.255.255.255. Il motivo di tutto ciò verrà illustrato quando si parlerà degli indirizzi speciali. Basandoci su quanto detto sopra notiamo che per ogni rete riusciamo a indirizzare più di 16 milioni di host. Il valore esatto degli host si ottiene mediante 2 24 − 2 perché 24 sono i bit disponibili per gli host, e 2 gli indirizzi da togliere perché IP riserva gli indirizzi tutti 0 per indicare la rete e tutti 1 per indicare il broadcasting sulla rete stessa. - CLASSE B: progettata per soddisfare le esigenze delle reti di dimensioni medio-grandi. Il range di indirizzi utilizzabili va da 128.1.0.0 a 191.255.255.255. Qui abbiamo che i primi due ottetti (16 bit) vengono utilizzati per il net-id e altri due per l’host-id. Inoltre i primi due bit di un indirizzo di classe B sono sempre “10”. Quindi è possibile avere più di 16mila reti che possono indirizzare più di 65mila host differenti (valore esatto è pari a 216 − 2 ). - CLASSE C: questo spazio di indirizzi è stato progettato per supportare un numero elevato di reti di piccole dimensioni. I bit riservati al net-id sono infatti 24, mentre solo 8 sono utilizzati per l’host-id. Ogni indirizzo di classe C ha i primi tre bit pari a “110”. Il range di indirizzi fruibili va da 192.0.0.0 a 223.255.255.255. Anche qui facendo un piccolo calcolo notiamo come sia possibile avere più di 2milioni di rete composte ciascuna da 254 host ( 2 8 − 2 ). - CLASSE D: questo gruppo di indirizzi è stato creato per consentire il multicasting in una rete IP. Con il termine multicasting si tende ad indicare la tecnologia che permette l’invio di messaggi ad un gruppo di destinatari. Essa è da differente da broadcasting, termine che indica l’invio di messaggi a tutti (ad esempio tutti i nodi di una rete). Gli indirizzi di classe D validi sono compresi tra 224.0.0.0 e 239.255.255.255. Questo 1 - significa che i primi 4 bit di ogni indirizzo saranno uguali a “1110”. Poiché gli indirizzi di classe D vengono utilizzati per l’invio di datagrammi a gruppi di destinatari che hanno già un loro indirizzo IP. Questo significa che non c’è la necessità di distinguere tra net-id e host-id, e quindi il range di indirizzi può essere usato interamente. CLASSE E: questi indirizzi che vanno da 240.0.0.0 a 247.255.255.255 sono riservati e sono stati riservati a scopi di ricerca da parte dell’IETF (Internet Engineering Task Force, il gruppo che fra le altre cose è stato responsabile della definizione dell’architettura di Internet e IP). NOTA: Come detto sopra è importante notare come le classi A, B e C abbiano la particolarità per cui gli indirizzi con tutti i bit dell’host-id posti a 0, indichino la rete stessa, mentre gli indirizzi con tutti i bit dell’host-id posti a 1, indichino il broadcasting sulla rete stessa. Riassunto delle varie classi IP. 32 bits Classi A 0 B 10 C 110 D 1110 E 11110 Rete Intervallo di indirizzi Da 1.0.0.0 a 127.255.255.255 Host Rete Da 128.0.0.0 a 191.255.255.255 Host Rete Host Indirizzo Multicast Riservati per uso futuro Da 192.0.0.0 a 223.255.255.255 Da 224.0.0.0 a 239.255.255.255 Da 240.0.0.0 a 247.255.255.255 INDIRIZZI IP SPECIALI Alcuni range di indirizzi IP sono stati riservati per usi particolari. Notazioni: { <net-id> , <host-id> } indica un indirizzo IP. “-1” il campo interessato contiene tutti i bit posti a 1. “0” il campo interessato contiene tutti i bit posti a 0. TIPO Rete corrente SIMBOLOGIA { <net-id> , 0 } Broadcast diretto { <net-id> , -1 } Broadcast limitato { -1 , -1 } Solo zero {0,0} Ip sulla rete corrente Software Loopback { 0 . <host-id> } { 127, <qualsiasi> } DESCRIZIONE Un host-id con tutti 0 non viene mai assegnato a nessun host. Viene utilizzato per indicare quella rete con quel particolare net-id. Questo particolare indirizzo IP può essere trovato come indirizzo di destinazione in un datagramma, ma mai come indirizzo sorgente. Indica l’operazione di broadcast sulla rete che ha quel particolare netid. Indica un tipo di broadcast che viene effettuato solo sulla rete corrente locale. Un indirizzo di questo tipo può essere presente solo sul campo destinazione di un datagramma. Questo broadcast non deve mai oltrepassare un router. Il net-id posto a 0 indica la rete corrente e l’host-id posto a 0 indica l’host corrente. Questo particolare indirizzo ip viene usato solitamente solo quando un nodo cerca di determinare il proprio indirizzo ip. Questo avviene nel caso del protocollo BOOTP. L’host manda una richiesta al server BOOTP con questo particolare ip. Il server gli risponderà assegnandogli un indirizzo ip, dopodiche’ l’indirizzo 0.0.0.0 non sarà più utilizzato. Questo indirizzo viene anche usato per indicare nelle tabelle di routing il default gateway (ossia l’indirizzo IP predefinito del gateway). Indica il nodo specifico all’interno della rete corrente. Qualsiasi pacchetto che un’applicazione invia ad un indirizzo del tipo 127.X.X.X. non raggiunge la rete, ma viene intercettato e reinviato all’applicazione stessa. Il pacchetto viene copiato dal buffer in uscita 2 in quello di ricezione. Questo set di indirizzi viene utilizzato spesso dal programatore per testare il software di rete (ad esempio un client che si collega ad un server sulla macchina stessa) e per verificare il corretto funzionamento dello stack TCP/IP sul sistema operativo corrente. PROBLEMI DI IPv4 Uno dei problemi fondamentali è il fatto che esiste troppa differenza tra il numero di host indirizzabili da una rete appartenente alle differenti classi (A, B e C) . Si passa da più di 16milioni a più di 65mila e infine a soli 254 host. E’ naturale che nel corso degli anni si sia presentata spesso la situazione in cui una azienda si trovasse a dovere aver bisogno di indirizzi IP di 300-400 o più host. Si nota subito come una rete di classe C non sia assolutamente sufficiente per risolvere questo problema. La soluzione avrebbe potuto essere quella di assegnare più indirizzi di classe C. Tuttavia questo comporta introduce dei problemi: - si vengono a creare più reti separate all’interno di una stessa azienda - incremento delle tabelle di routing perché bisogna tener traccia dei vari indirizzi di rete nonostante appartengano alla stessa organizzazione. Putroppo la soluzione alla quale troppo spesso si è ricorsi è stata quella di assegnare alle organizzazioni indirizzi di classi B, anche quando le reali necessità di host da indirizzare erano nettamente inferiori. Questo ha portato ad un rapido esaurimento degli indirizzi di classe B effettivamente disponibili ed un evidente spreco di numerosi indirizzi IP. Pensate ad esempio ad una azienda che ha bisogno di indirizza circa 600 host e alla quale viene assegnato un indirizzo di classe B. Lo spreco è enorme! Nel corso degli anni man mano che questo fenomeno diventava più evidente si è tentato di correre ai ripari, introducendo dei meccanismi che ponessero un freno al problema. Le tre estensioni più importanti a IPv4 sono: - Maschere di sottorete. - Maschere di sottorete a lunghezza variabile (definite anche VLSM o Variable Length Subnet Mask). - Instradamento CIDR (Classless InterDomain Routing). Questi meccanismi non sono tecnologie che si escludono a vicenda. Al contrario sono strettamente legati fra loro e spesso vengono utilizzati assieme. CONCETTO DI SOTTORETE O SUBNET Il concetto di sottorete fu introdotto per rimediare alla visione iniziale di Internet come una struttura gerarchica a due livelli. La struttura originaria di Internet prevedeva che tutti gli host di una stessa rete devono avere lo stesso net-id. Tuttavia questa soluzione è assai inefficiente, perché al crescere della LAN il numero di host cresce e quindi può essere necessario acquisire un altro indirizzo (di classe C per esempio). Inoltre nel caso di una rete di classe B la gestione diventerebbe molto complessa: pensate ad amministrare un rete singola con 600 nodi, invece che gestire separatamente più reti con un numero inferiore di host. Ultimo ma non per importanza anche un problema di degrado delle prestazioni. L’idea è stata quella quindi di permettere un partizionamento della rete interna in più sottoreti, lasciando tuttavia inalterata la visione complessiva della rete dall’esterno. Questo ha evitato un’esplosione delle tabelle di routing: i router di confine sono gli unici che si devono preoccupare di come è organizzata la LAN a cui sono collegati. Gli altri router sanno che quando devono instradare un pacchetto per un determinato IP appartenente a quella LAN, dovranno instradare il traffico verso quel router di confine, sarà poi lui a preoccuparsi di come indirizzarlo. Il partizionamento in sottoreti ha permesso come accennavamo prima una migliore gestione della rete interna delle varie aziende: ad esempio partizionare in più sottoreti una rete di classe B. Se prima ci trovavamo ad avere una gerarchia a due livelli (net e host) ora ci troviamo con una gerarchia a tre livelli: net, subnet e host. All’interno quindi di una LAN multirete, le varie sottoreti raggiungono Internet tramite il default gateway (router). Dall’esterno come già ricordato sopra l’unica informazione importante è come raggiungere quel particolare gateway. Questo permette all’interno della LAN di partizionare in maniera più opportuna lo spazio di indirizzi IP assegnato. Da notare, che gli host appartenenti a diversi sottoreti (all’interno di una LAN) saranno costretti a comunicare fra di loro attraverso un router. In base alla RFC 950 è possibile suddividere gli indirizzi di classe A, B e C in maniera da ottenere il numero voluto di subnet. Si individuano così: - net-id - subnet-id - host-id Subnet-id e host-id si ricavano a partire dall’host-id dell’indirizzo di partenza. Ad esempio nel caso di una rete di classe B avrò a disposizione 16 bit da distribuire tra subnet-id e host-id. 3 Una cosa importante da notare è che questa tecnica non risolve il problema della mancanza di indirizzi IP, infatti la tecnica del subnetting porta anche ad uno spreco di indirizzi IP disponibili per gli host. Tuttavia essa permette di organizzare in maniera logica la rete interna e permette una gestione più efficiente dello spazio di indirizzamento. Per identificare le sottoreti si ricorrere a quella che viene definita subnet mask (maschera di sottorete). Essa è un numero binario a 32 bit, espresso spesso per motivi di migliore leggibilità (come gli ip) in forma decimale che server per segnalare ai vari nodi presenti sulla rete (router e host) di quanti bit dell’indirizzo ip devano essere utilizzati per individuare il net-id e quanti per individuare il subnet-id. I bit rimanenti identificano il numero di host sulla sottorete. Alcune convenzioni: - i bit della subnet-mask che identificano la rete sono posti a 1, mentre quelli che identificano gli host sono posti a0 - indirizzi di subnet utili: o qui useremo la convenzione secondo cui, gli indirizzi di sottorete di tutti 1 o tutti 0 non sia utilizzabile (da ricordare per capire gli esempi) o in realtà l’RFC 1812 ha chiarito il fatto che anche gli indirizzi di sottorete di tutti 1 o 0 sono validi, questo perché già al tempo c’erano in commercio router che consentivano di considerarli come subnet valide. Esistano infatti comandi particolari nei router che permettono di abilitare/disabilitare l’uso di questi particolari indirizzi o in conclusione: (per noi) dati n bit disponibili per il subnet-id calcoleremo come subnet possibili un numero pari a 2 n − 2 , dove le due escluse sono proprio quelle con tutti 1 o tutti 0. Esercizio. Dato l’indirizzo IP 149.210.20.10 e la subnet-mask 255.255.248.0 ricavare la subnet corrispondente. Risoluzione: IP: 149.210.20.10 Æ 10010101.11010010.00010100.00001010 AND SUBNET-MASK: 255.255.248.0 Æ 11111111.11111111.11111000.00000000 SUBNET: 10010101.11010010.00010000.00000000 = 149.210.16.0 Esercizio. Una organizzazione, che ha una rete di indirizzo 147.128.0.0, vuole partizionarla in al più 24 subnet. - qual è la subnet mask - quante subnet e quanti host si possono così indirizzare - qual è l’indirizzo della prima e ultima subnet così definite - qual è lo spreco di indirizzi indotto dall’uso delle subnets Risoluzione: 147.128.0.0 è un indirizzo di classe B. Per poter ottenere 24 subnet ho bisogno di almeno 5 bit, perché 2 5 − 2 = 30 . Quindi al max potrò avere 30 subnet. Quindi la subnet-mask sarà: 11111111.11111111.11111000.00000000 oppure 255.255.248.0 Lo spazio di indirizzamento per gli host è di 11 bit (8+3); al max potrò indirizzare: 211 − 2 = 2046 host per ogni subnet. Il numero massimo di host che potrò indirizzare è quindi: 2046 x 30 = 61380. In linea teorica, per una classe B possiamo indirizzare: 216 − 2 = 65534 host. Quindi c’è uno spreco di: 65534 – 61380 = 4154 host. Vediamo come saranno le subnet: subnet 1: 147.128.8.0 10010011.10000000.00001000.00000000 … subnet 30: 147.128.240.0 10010011.10000000.11110000.00000000 CONCETTO DI MASCHERE VLSM E DI CIDR Problema legato ai concetti di subnet e subnet-mask così come li abbiamo visti sopra: una volta stabilita una subnetmask per una rete, siamo costretti ad avere un determinato numero di sottoreti con la stessa dimensione. Non possiamo cioè creare sottoreti di dimensioni diverse, e quando si renda necessario aggiungere host ad una determinata sottorete, bisogna intervenire modificando la subnet-mask per tutta la rete. Per ovviare a questo problema fu introdotto il concetto di VLSM (Variable Length Subnet Masks) o maschere di sottorete a lunghezza variabile: questo per indicare come fosse consentito in realtà all’interno di una stessa rete creare più subnet di dimensioni diverse. Per far questo si ricorse all’uso di maschere di sottorete che solo in apparenza sembrano diverse, ma che in realtà hanno lo stesso identico prefisso di rete. 4 L’uso di maschere VLSM permette un gestione ancora più efficace degli indirizzi IP all’interno di un’organizzazione, permettendo di personalizzare le varie subnet a seconda delle reali esigenze di host. Dopo quanto detto sopra è quindi importante introdurre la notazione seguente: { indirizzo di classe A, B, C } / {bit a 1 della mask } ossia prendendo come esempio un indirizzo di classe B: 156.23.0.0/24 In questo caso abbiamo una indirizzo di rete di classe C che utilizza una maschera di sottorete di 24 bit posti a 1. Questo significa che abbiamo la seguente subnet-mask 255.255.255.0 che mi indica che 24 sono i bit utilizzati per individuare il prefisso esteso di rete (net-id + subnet-id). Dunque nel caso specifico ci troviamo con 8 bit che possono essere usati per indirizzare gli host. Questa maniera diversa di scrivere quello che avevamo visto quando parlavamo di subnet e subnet-mask è importante perché ci rende più facile vedere all’atto pratico le novità introdotte dalle maschere VLSM. Usando maschere a lunghezze variabili un amministratore di rete può ad esempio decidere, partendo da indirizzo IP base di partizionare una rete in sottoreti aventi dimensioni diverse. Potrebbe partizionare ad esempio lo spazio di indirizzi di classe B visto sopra in maniera tale da creare delle sottoreti di dimensioni modeste che abbiano 254 host e quindi subnet-mask pari a 156.23.0.0/24, mentre creare delle sottoreti con un numero maggiore di host. Ad esempio creare una o più sottoreti che abbiano subnet-mask 156.23.0.0/22, quindi con al massimo 1022 host. Perché abbiamo introdotto il concetto di VLSM? Perché questo è stato ripreso in maniera più estesa anche dal CIDR e adesso vedremo come. Come già detto anche precedentemente col passare del tempo l’architettura dell’Internet originale stava diventando un po’ stretta e si andava verso il collasso: esaurimento degli indirizzi IP ancora disponibili e incremento delle tabelle di routing. Tutto questo ha portato l’IETF ad elaborare due soluzioni: - soluzione a lungo termine: la creazione di un nuovo protocollo IP. Questa soluzione doveva affrontare e risolvere i problemi legati all’architettura IPv4. Questo nuovo protocollo fu denominato IPpng (Internet Protocol Next Generation) o meglio IPv6. Tuttavia questo avrebbe richiesto molto tempo, sia dal punto di vista della progettazione e della sperimentazione. - soluzione a breve termine: bisognava a tutti i costi limitare lo spreco degli indirizzi IP che ancora restavano da assegnare. Si scelse quindi di eliminare quella che era l’attuale architettura di indirizzamento basata su classi, per passare ad una soluzione più efficiente e funzionale. Il risultato fu una nuova tecnica di instradamento, denominata appunto routing CIDR (Classless InterDomain Routing). Ecco le novità introdotte dal CIDR per evitare il collasso: - eliminazione del vecchio indirizzamento a classi: non si sono potuti recuperare gli indirizzi già assegnati e magari inutilizzati, però attraverso eliminazione del concetto di classi si è riusciti a gestire in maniera molto efficiente i numerosi indirizzi IP ancora disponibili, evitando ulteriori assegnamenti in blocco (ad esempio di classe B) e conseguenti sprechi. - miglioramento del routing: lo scambio di informazioni di routing avviene in maniera più efficiente. Le dimensioni delle varie tabelle di routing dimuiscono, perché con questo nuovo meccanismo (vedremo come) una singola entry nelle tabelle dei router può indicare uno spazio di indirizzi di diverse reti. - supernetting: questo termine in sostanza indica l’utilizzo di blocchi contigui di classe C per simulare un unico spazio di indirizzamento (un’unica rete logica). In questa maniera ad esempio ottenendo un numero sufficiente di indirizzi contigui è possibile simulare un indirizzo di classe B. Vediamo un po’ più in dettaglio il funzionamento del routing CIDR. Con questa nuova tecnica è stata abbandonata l’architettura IPv4. Come sappiamo le classi A, B e C prevedevano un numero di bit per il net-id pari rispettivamente a 8, 16 e 24. Grazie a CIDR queste categorie sono state sostituite dall’uso di un net-id generico che può avere una lunghezza qualsiasi. Di conseguenza ogni indirizzo compatibile con CIDR ha una maschera di bit specifica che identifica la lunghezza del prefisso di rete. Esempio: 192.3.24.6/20 identifica un indirizzo CIDR con un indirizzo di rete a 20 bit. I router CIDR compatibili per individuare il numero di rete analizzano il numero dopo il “/”. Così se prima 192.3.24.6 era un indirizzo di classe C che aveva come net-id 192.3.24 e host-id 6, adesso succede che: 192.3.24.6 Æ 11000000.00000011.00011000.00000110 net-id host-id Vediamo ora un esempio di supernetting. N.B: Gli indirizzi IP che devono essere combinati devono condividere gli stessi bit più significativi, la subnet “mask” viene calcolata di conseguenza. 5 ESEMPIO. Presi i 4 indirizzi di classe C 199.199.4.0, 199.199.5.0, 199.199.6.0 e 199.199.7.0 possono essere combinati come 199.199.4.0/22 utilizzando una subnet mask di 255.255.252.0 per ciascuno. NET 199.199.4 11000111.11000111.00000100.00000000 NET 199.199.5 11000111.11000111.00000101.00000000 NET 199.199.6 11000111.11000111.00000110.00000000 NET 199.199.7 11000111.11000111.00000111.00000000 MASK 255.255.252.0 11111111.11111111.11111100.00000000 INDIRIZZI IP PRIVATI Esistono dei particolari intervalli indirizzi ip che sono stati classificati come indirizzi ip privati, ossia non possono essere utilizzati per accedere a Internet. Queste tre serie di indirizzi possono essere unicamente utilizzati per l’internetworking interno (ossia all’interno della LAN). L’azienda o l’organizzazione che sceglie di numerare internamente i propri host utilizzando questi indirizzi, nel caso si trovi a dover permettere ai vari nodi di accedere ad Internet si trova a dover utilizzare un server proxy oppure un NAT (Network Address Translator) che fungono da intermediari tra la LAN e Internet. Questa soluzione può essere ottimali in diverse situazioni: - quando non c’è necessità che tutti gli host della LAN abbiano accesso a Internet - il numero di indirizzi IP assegnati sono nettamente inferiori rispetto al numero di host della propria rete interna - non si ha necessità di connessione esterna su Internet ma si vuole sfruttare ugualmente la suite TCP/IP per l’internetworking interno E’ importante far notare che per utilizzare questi indirizzi ip internamente, non c’è necessità di chiedere l’autorizzazione ad alcun ente centrale tipo lo IANA (Internet Assigned Numbers Authority), visto che questi ip non saranno mai visibili su Internet. NOTE AL DOCUMENTO Fonti bibliografiche: - Andrew S. Tanenbaum “RETI DI COMPUTER” - Appunti del corso di Protocolli di Rete. Anno Accademico 2002/2003 Autore del documento: sego Permessi sul documento: l’uso di questo documento è a puro scopo informativo e non a fini di lucro. Il contenuto del documento può essere usato liberamente. Nel caso utilizziate o pubblichiate sul vostro sito questo documento siete pregati di lasciarlo integro o di lasciare almeno un riferimento all’autore originale. Informazioni di carattere generale: qualsiasi suggerimento o critica costruttiva è ben accetto. Se avete idee per migliorare il documento inviatemi pure una mail. La segnalazione di errori o disattenzioni è altresì ben accetta. sego (owner/webmaster of the-skulls.com) indirizzo di posta elettronica: [email protected] sito web di riferimento: http://www.the-skulls.com 6