bitlvl
IT

Indirizzo IP ⇄ intero

Inserisci un indirizzo IPv4 puntato o un numero a 32 bit in decimale, hex o binario. In ogni caso ottieni tutte le altre forme.

  

I risultati e i messaggi di questo strumento sono mostrati in inglese.

Un indirizzo IPv4 è un numero a 32 bit

La familiare forma puntata non è altro che quattro byte scritti in decimale. 192.168.1.1 sono i byte C0 A8 01 01, che letti come un unico numero big-endian a 32 bit danno 0xC0A80101 = 3.232.235.777. Ogni ottetto viene moltiplicato per una potenza di 256: 192×256³ + 168×256² + 1×256 + 1.

  1. Prendi ogni ottetto in ordine: a, b, c, d.
  2. Calcola a×16.777.216 + b×65.536 + c×256 + d.
  3. Per tornare indietro, dividi ripetutamente per 256 e tieni i resti (oppure scorri a destra di 8 e maschera con 255).

Dove si usa la forma intera

  • Database: INET_ATON() / INET_NTOA() di MySQL e il tipo inet di PostgreSQL memorizzano e indicizzano gli indirizzi come numeri perché le query per intervallo (ip BETWEEN start AND end) siano veloci. Le tabelle GeoIP usano lo stesso trucco.
  • Programmazione: inet_aton in C, ip2long in PHP, int(ipaddress.ip_address(x)) in Python, binary.BigEndian.Uint32(ip.To4()) in Go.
  • Access list e firewall, che confrontano il numero con una maschera.

Forme strane che i browser accettano

Poiché l’indirizzo è un numero, http://3232235777/ e http://0xC0A80101/ raggiungono entrambi 192.168.1.1 nella maggior parte dei browser, e 192.168.257 viene interpretato come 192.168.1.1 (l’ultima parte trabocca nell’ottetto precedente). È un modo classico di nascondere un indirizzo in un link di phishing, e una ragione per validare l’input in modo rigoroso, come fa questo strumento.

Domande

Quanto vale 192.168.1.1 come intero?

3.232.235.777 in decimale, 0xC0A80101 in esadecimale. Viene da 192×256³ + 168×256² + 1×256 + 1.

Perché memorizzare gli indirizzi IP come interi?

Un intero occupa 4 byte invece di fino a 15 caratteri, si ordina in ordine di rete e permette di verificare l’appartenenza a un intervallo con due confronti. La maggior parte dei dati GeoIP e dei firewall è memorizzata così.

Qual è il più grande intero IPv4?

4.294.967.295 (2³² − 1), cioè 255.255.255.255.

Funziona con IPv6?

Gli indirizzi IPv6 sono numeri a 128 bit e richiedono un altro strumento: usa il calcolatore IPv6, che mostra le forme espansa, compressa e binaria.

192.168.001.001 è uguale a 192.168.1.1?

Non in modo affidabile. Alcuni parser trattano un ottetto con zero iniziale come ottale (001 va bene, ma 010 varrebbe 8). Scrivi gli ottetti senza zeri iniziali per evitare l’ambiguità; questo strumento li rifiuta proprio per questo.