Cuando trato de hacer ping a la dirección IP 10.10.208.57
no tengo respuesta ya que no existe nada en la red con esa dirección IP.
Sin embargo, si trato de hacer ping 10.10.208.
0 en su57
lugar, otra dirección IP responde:
root@everest:/root# ping 10.10.208.057
PING 10.10.208.057 (10.10.208.47) 56(84) bytes of data.
64 bytes from 10.10.208.47: icmp_seq=1 ttl=253 time=0.732 ms
64 bytes from 10.10.208.47: icmp_seq=2 ttl=253 time=0.695 ms
64 bytes from 10.10.208.47: icmp_seq=3 ttl=253 time=0.659 ms
64 bytes from 10.10.208.47: icmp_seq=4 ttl=253 time=0.705 ms
Teniendo en cuenta que 10.10.208.47
es una impresora Lexmark E120n, ¿cuál podría ser el origen de este extraño problema?
Respuestas:
Ese comportamiento se debe realmente a una característica normal de ping y no tiene relación con su hardware real.
De hecho, el prefijo de la dirección IP (o parte de ella) con un cero inicial hará que el número se interprete como octal .
Entonces
057
significa57
en la base 8, que es 47. Por lo tanto, ping enviará la consulta ICMP a la máquina ubicada en la dirección10.10.208.47
y, por lo tanto, obtendrá una respuesta.Tenga en cuenta que también puede hacer ping a las direcciones en hexadecimal, utilizando el prefijo 0x en lugar de solo 0.
Editar: como sugieren muchos comentarios, esta característica no es específica
ping
y puede encontrarse en muchos softwares CLI que manipulan direcciones IP.fuente
Ping, como muchos otros programas de Unix, utiliza las bibliotecas C en su sistema Unix para la resolución de nombres. Una de las funciones utilizadas es
inet_aton
.La página del manual
inet_aton
dice:Entonces, cuando usa un cero inicial, el número se interpreta como un octal. Por lo tanto, 57 = 047 = 0x39.
fuente