Conversión de una dirección IP en entero de 32 bits

Diciembre 2016

Haremos un ping a ccm.net, para obtener la dirección IP
$ ping -c1 ccm.net
PING ccm.net (194.169.240.130) 56(84) bytes of data.
64 bytes from www.ccm.org (194.169.240.130): icmp_seq=1 ttl=53 time=53.2 ms

--- ccm.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


Hacemos la conversión del IP utilizando los operadores de procesamiento de bits.
El número está en 32 bits. Por lo tanto, para obtener el total, desplazamos a la izquierda cada octeto. El operador | permite poner los bits en uno.

Esta es la representación en binario

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)



Y este es el comando que permite convertir el IP en entero de 32 bits.

$ echo 194.169.240.130 | perl -ne 's/(\d+)\.(\d+)\.(\d+)\.(\d+)/$1<<24|$2<<16|$3<<8|$4/e;print'
3265917058


Este es el resultado del ping utilizando el número entero en lugar del IP clásico

$ 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


Consulta también :
El documento «Conversión de una dirección IP en entero de 32 bits» de CCM (es.ccm.net) se encuentra disponible bajo una licencia Creative Commons. Puedes copiarlo o modificarlo siempre y cuando respetes las condiciones de dicha licencia y des crédito a CCM.