Caratteristiche di IP versione 6

Il nuovo protocollo IP prevede indirizzi a 128 bit (il "vecchio" ipv4 ne ha 32) e la sua rappresentazione è 3ffe:13e4:1234:1aef::1
Sono stati usati 8 gruppi di 16 bit l'uno ed ogni cifra è rappresentata in esadecimale, quindi abbiamo 4 bit per cifra.
Naturalmente quella di inizio pagina è la rappresentazione abbreviata, introdotta per limitare, quando possibile, l'eccessiva lunghezza.
Se lo zero è la cifra più significativa in un gruppo(in parole povere nei casi ...:0123:..., ...:0012:..., ...:0001:...) può venire omesso.
C'è di più. Questo indirizzo 3ffe:13e4:1234:1aef::1 in realtà è la rappresentazione di 3ffe:13e4:1234:1aef:0000:0000:0000:0001. Naturalmente non è che potete eliminare zeri a destra e a manca, vediamo come fare.
Mettiamo di avere questo indirizzo 3ffe:13e4:1234:1aef:0000:1965:0000:0001 non possiamo rappresentarlo come 3ffe:13e4:1234:1aef::1965::1---> ERRATO, ma nella forma 3ffe:13e4:1234:1aef:0:1965:0:1 Mentre 3ffe:13e4:1234:1aef:0000:0000:1234:0001 può essere rappresentato come 3ffe:13e4:1234:1aef::1234:1; quindi c'è da porre particolare attenzione sulla posizione assunta dagli zeri.
Come regola generale assumiamo che gruppi contigui che abbiano SOLO zeri (o in forma ..:0000:0000:0000:0000:... oppure ...:0:0:0:0:..), possono essere "fusi" in ..::.., ma SOLO UNA VOLTA in tutto l'indirizzo :
3ffe:13e4:0000:0000:34:0000:0000:0001 non potrà mai essere visualizzato come 3ffe:13e4::34::1, ma ad esempio 3ffe:13e4::34:0:0:1
In ipv4 per individuare nodi e reti si usava la cosiddetta netmask
Ad esempio 192.168.0.0/255.255.0.0 identifica la subnetwork, quindi 16 bit per identificarla, mentre i restanti 16 bit per identificare i nodi all'interno di essa. Una notazione più agevole è 192.168.0.0/16 dove /numero indica appunto i bit della subnet.
In ipv6 il concetto di netmask non c'è più ed è sostituito da quello di prefisso; il prefisso è il numero di bit che identificano la subnet.
Ad esempio 3ffe:13e4:1234:1aef::/64 indica che i primi 64 bit identificano la subnetwork, mentre i restanti 64 bit i vari nodi all'interno della subnetwork.
Così come 3ffe:13e4:1234:1aef:abcd::/80; in questo caso avremo a dispozione 48 bit per i nodi, dato che la rete è identificata da 80 bit (in forma estesa la rappresentazione sarebbe 3ffe:13e4:1234:1aef:abcd:0000:0000:0000/80)
Indirizzi di questa subnet sarebbero ad esempio 3ffe:13e4:1234:1aef:abcd:123:124:125, 3ffe:13e4:1234:1aef:abcd:124:0:125
Infine se ad esempio abbiamo una subnet di 127 bit 3ffe:13e4:1234:1aef:dead:dead:beef:aef1/127 e quindi è formata da 2 ip, 3ffe:13e4:1234:1aef:dead:dead:beef:aef0 e 3ffe:13e4:1234:1aef:dead:dead:beef:aef1
Come avvenuto a suo tempo per IPv4, anche gli indirizzi IPv6 sono stati suddivisi per scopi differenti, si parla infatti di tipo di indirizzo.
La distinzione viene fatta attraverso un prefisso binario stabilito, tra i bit più significativi; questo prefisso è chiamato Format Prefix
L'indirizzo IPv6 in forma binaria è una seguenza di 128 cifre che possono assumere il valore "0" o il valore "1"
Il FP è dato dalla prime cifre dell'indirizzo; i più comuni sono :


Osserviamo gli ultimi due che sono molto interessanti.
Il FP 001 è stato assegnato alla sperimentazione vera e propria su Internet.
Non entrando troppo nel dettaglio, basta sapere che 2000::/3 (in esadecimale) comprende TUTTO il traffico IPv6 in Internet.
I TLA (Top Level Aggregator) finora esistenti sono 3ffe::/16 (0011 1111 1111 1110), ovvero la rete 6Bone, 2001::/16 (0010 0000 0000 0001) per scopi commerciali ed infine 2002::/16 (0010 0000 0000 0010) ovvero TLA per i prefissi 6to4 (Attualmente solo US e JP). Per maggiori info potete consultare www.rfc.net e gli RFC 2373, 2374, 2471, 2921, 2928.
Mentre ::/32 è riservato per usi molteplici:

Vediamo in dettaglio quest'ultimi, ce ne sono di due "tipi" :
Il primo caso è la "rappresentazione" di IPv4 in una macchina dual-stack; quindi avrà una subnet di 96 bit (80+16), ecco perchè il vostro ifconfig vi darà come output, ad esempio, ::192.168.0.1/96.
L'altro è la "rappresentazione" in IPv6 dell'indirizzo di una macchina che non ha il dual-stack, ad esempio l'output di un netstat può essere ::ffff:192.168.0.254; 80 bit "0" + 16 ad "f".
Notare che l'indirizzo è sempre di 128 bit, 96+32 = 128, dove 32 sono i bit di IPv4.
Un altra rappresentazione di indirizzo IPv6 è la cosiddetta forma "nibble" usata per i ptr nelle reverse zone (consultare il DNS HOWTO www.linuxdoc.org).
Praticamente permette di risolvere il nome di un host, partendo dal suo indirizzo ipv6.
Per "calcolare" la forma nibble dobbiamo scrivere ogni gruppo di 4 cifre "alla rovescia", partendo dal fondo dell'indirizzo ipv6 e separando OGNI CIFRA con un punto, terminando l'indirizzo con ip6.int.
Fate attenzione che questa volta gli ZERI devo essere scritti tutti!!!
Prendiamo ad esempio l'indirizzo 3ffe:1234:5678:9abc::1, la sua forma nibble sarà:
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c.b.a.9.8.7.6.5.4.3.2.1.e.f.f.3.ip.int
Per controllare se avete scritto tutto giusto le cifre dovranno essere TASSATIVAMENTE 32 + ip6.int, perchè ogni cifra "vale" 4 bit e 4*32 = 128 :)