Conversion d'une adresse IP en entier 32 bits

Décembre 2016

Nous allons faire un ping sur commentcamarche.net, pour récupérer l'adresse IP (voir en gras)

$ ping -c1 commentcamarche.net
PING commentcamarche.net (194.169.240.130) 56(84) bytes of data.
64 bytes from www.commentcamarche.org (194.169.240.130): icmp_seq=1 ttl=53 time=53.2 ms

--- commentcamarche.net ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 53.230/53.230/53.230/0.000 ms


Nous faisons la conversion d'IP en utilisant les opérateurs de traitement de bits.
Le nombre est sur 32 bits. Donc pour obtenir l'entier, nous décalons à gauche chaque octet. L'opérateur | permet de mettre les bits à un.

Voici la représentation en binaire

11000010 00000000 00000000 00000000  - 3254779904 (194 << 24)
00000000 10101001 00000000 00000000  - 11075584   (169 << 16) |
00000000 00000000 11110000 00000000  - 61440      (240 <<  8) |
00000000 00000000 00000000 10000010  - 130
-----------------------------------
11000010 10101001 11110000 10000010   - 3265917058  (3254779904|11075584|61440|130)


Et voici la commande permettant de convertir l'IP en entier sur 32 bits.
$ echo 194.169.240.130 | perl -ne 's/(\d+)\.(\d+)\.(\d+)\.(\d+)/$1<<24|$2<<16|$3<<8|$4/e;print'
3265917058


Voici le résultat du ping utilisant le nombre entier au lieu de l'IP classique
$ ping -c1 3265917058
PING 3265917058 (194.169.240.130) 56(84) bytes of data.
64 bytes from 194.169.240.130: icmp_seq=1 ttl=53 time=53.0 ms

--- 3265917058 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 53.034/53.034/53.034/0.000 ms

A voir également :

Ce document intitulé «  Conversion d'une adresse IP en entier 32 bits  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.