Explication du calcul de la plage d’ip, le numIP

Alors là franchement ce n’est pas totalement clair pour nous aussi.
Mais on peut tout de même commencer à expliquer certaines choses et surtout vous donner le calcul qui vous permettra d’interroger la base de données IP.

Bon les adresses IP ce n’est pas notre spécialité, mais pour un début vous pouvez consulter Wikipédia pour commencer.

Sinon il faut retenir certaines choses :

  • Une adresse IP doit être unique (pour justement pouvoir la localiser)
  • Une adresse IP est assignée par des organismes comme l’InterNIC ou l’IANA suivant le type (mais ce n’est pas le sujet ici)
  • Un petit calcul nous permet de transfomer cette représentation numérique de 4 blocs en décimal (enfin ça nous intéresse !!!)

Le calcul de transformation d’une adresse IP vers un décimal :

ipnum = 16777216*w + 65536*x + 256*y + z
où l’adresse ip est représentée comme suit :
IP Address = w.x.y.z

Ou dans l’autre sens :

w = int ( ipnum / 16777216 ) % 256;
x = int ( ipnum / 65536 ) % 256;
y = int ( ipnum / 256 ) % 256;
z = int ( ipnum ) % 256;
Où % est l’opérateur Modulo

Je ne comprends pas moi même ce calcul, donc je ne pourrais plus vous l’expliquer …

Par contre voici son exemple en code PHP et en Perl :

en PHP :

function iptonum($ip){   $tab_ip = split("\.",$ip);   $numip = 16777216 * (int)$tab_ip[0];   $numip += 65536 * (int)$tab_ip[1];   $numip += 256 * (int)$tab_ip[2];   $numip += (int)$tab_ip[3];   return $numip; }

En Perl :

sub numToStr {   my ($ipnum) = @_;   my $z = $ipnum % 256;   $ipnum >>= 8;   my $y = $ipnum % 256;   $ipnum >>= 8;   my $x = $ipnum % 256;   $ipnum >>= 8;   my $w = $ipnum % 256;   return "$w.$x.$y.$z"; }

Voilà normalement vous pouvez transformer n’importe quelle adresse IP et donc y trouver une correspondance dans la base de données IP

4 réponses sur “Explication du calcul de la plage d’ip, le numIP”

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.