Tutti sanno che un classico indirizzo IP (IPv4) viene espresso utilizzando quattro gruppi di cifre decimali separate da un punto. Ad esempio 192.168.1.1 o 192.168.0.1 sono esempi di indirizzi IP locali che spesso corrispondono al router o all’access point.
Meno noto è il fatto che i quattro byte che compongono l’indirizzo IP vengono convertiti nel sistema numerico decimale soltanto per rendere più semplici l’identificazione e la lettura: vedere Il mio IP: come trovarlo e a che cosa serve.
Meno noto è il fatto che gli stack di rete dei principali sistemi operativi sono in grado di interpretare gli indirizzi IP scritti usando altri sistemi di rappresentazione.
Provate ad esempio ad aprire il prompt dei comandi e a digitare ping 0300.0250.01.01
oppure ping 0300.0250.0.01
.
Vedrete che nel primo caso l’utilità ping
(vedere Ping cos’è, come funziona e a cosa serve) proverà a inviare pacchetti ICMP all’indirizzo locale 192.168.1.1, nel secondo all’IP 192.168.0.1.
Un indirizzo IP può però essere convertito anche in esadecimale: provate a lanciare il comando ping
sugli indirizzi 0xc0.0xa8.0x01.0x01
e 0xc0.0xa8.0x00.0x01
. Otterrete lo stesso output visto in precedenza.
È possibile ripetere l’operazione per qualunque indirizzo IP, anche remoto, servendosi ad esempio questo e quest’altro convertitore che permettono di passare dal sistema decimale ai sistemi ottale ed esadecimale (anteporre sempre 0x
a ogni “blocco”).
Nell’articolo Codice binario, bit e byte: cosa c’è da sapere abbiamo parlato anche dei sistemi numeri più utilizzati in ambito informatico: l’ottale utilizza solo 8 simboli invece dei 10 del sistema numerico decimale usato comunemente mentre l’esadecimale, di contro, ne usa 16: a 0,1,2,…,9 si aggiungono anche A,B,…,F.
Dicevamo in apertura che un normale indirizzo IPv4 è formato da 32 bit perché suddiviso in 4 byte (8 bit ciascuno) separati da un punto. Il componente di rete che si occupa di gestire gli IP, tuttavia, è in grado di gestire gli indirizzi utilizzati come una sequenza di uno, due o tre numeri separati da punti.
Ad esempio 0xc0a80001
, 030052000001
e 3232235521
consentono per esempio di fare riferimento all’IP 192.168.0.1
rispettivamente in esadecimale, ottale e decimale.
Addirittura combinando notazioni in diversi sistemi di numerazione (ad esempio 0xc0.052000001
per esadecimale più ottale) l’indirizzo IP 192.168.0.1
sarà ancora una volta ugualmente gestito.
Provate in tutti i casi a usare gli indirizzi IP con il comando ping
e a inserirli nella barra degli indirizzi del browser: saranno sempre correttamente interpretati.
È bene quindi essere consapevoli delle modalità alternative con le quali gli indirizzi IP possono essere espressi perché tecniche di rappresentazione come quelle descritte spesso possono permettere di superare filtri impostati sulla rete e raggiungere comunque gli indirizzi remoti indicati.
Le ultime versioni dell’utilità curl (release 7.77.0 e successive) gestiscono correttamente tutte le varianti brevemente descritte in precedenza.