Todo el mundo lo complica demasiado con RFC, clases de IP y demás. Simplemente ejecute algunas pruebas para ver cómo el pingcomando analiza la entrada de IP por parte del usuario (se eliminó el desperdicio extraño):
> ping 1
Pinging 0.0.0.1 with 32 bytes of data:
> ping 1.2
Pinging 1.0.0.2 with 32 bytes of data:
> ping 1.2.3
Pinging 1.2.0.3 with 32 bytes of data:
> ping 1.2.3.4
Pinging 1.2.3.4 with 32 bytes of data:
> ping 1.2.3.4.5
Ping request could not find host 1.2.3.4.5. Please check the name and try again.
> ping 255
Pinging 0.0.0.255 with 32 bytes of data:
> ping 256
Pinging 0.0.1.0 with 32 bytes of data:
Como puede ver, el pingcomando (en Windows) le permite usar diferentes formatos de dirección IP. Una dirección IPv4 se puede dividir en cuatro partes ("dotted-quad") de esta manera: A.B.C.Dy el pingcomando le permite omitir algunas, completando un valor predeterminado de la 0siguiente manera:
1 part (ping A) : 0.0.0.A
2 parts (ping A.B) : A.0.0.B
3 parts (ping A.B.C) : A.B.0.C
4 parts (ping A.B.C.D) : A.B.C.D
Si solo suministra una sola parte, entonces si está por debajo de 255 (el máximo para un octeto), se trata como un octeto como arriba, pero si es mayor que 255, entonces se convierte y se pasa al siguiente campo (es decir, mod 256).
Hay unos pocos casos extremos como proporcionar más de cuatro partes no parecen funcionar (por ejemplo, ping google.com's IP no funcionará para cualquiera 0.74.125.226.4o 74.125.226.4.0).
También puede usar la notación hexadecimal en forma cuadriculada y plana, pero debe formatearla antes de 0xcada octeto.
Por lo tanto, hay muchas formas de representar una dirección IP (IPv4). Puede usar el formato plano o punteado cuádruple (o punteado triple, punteado doble o incluso punteado simple), y para cada uno, puede usar (o incluso mezclar y combinar) decimal, octal y hexadecimal. Por ejemplo, puede hacer ping google.comde las siguientes maneras:
google.com (nombre de dominio)
74.125.226.4 (decimal punteado)
1249763844 (decimal plano)
0112.0175.0342.0004 (octal punteado)
011237361004 (octal plano)
0x4A.0x7D.0xE2.0x04 (hexágono punteado)
0x4A7DE204 (hexágono plano)
74.0175.0xe2.4 (ಠ_ಠ)
(¡Gracias a Dios que no se agregó soporte de notación binaria!)
Aplicación :
En su caso, el ping 192.168.072utiliza el tercer formato en la tabla anterior ( A.B.0.C), por lo que realmente está haciendo ping 192.168.0.072. Además, debido a que tiene un cero inicial en la última parte, se trata como octal, que en decimal es 58.
Misterio resuelto.
Tenga en cuenta que, si bien el pingcomando de Windows permite una variedad tan amplia de formatos para la entrada e interpreta formatos no estándar de la manera que se ve, eso no significa necesariamente que pueda usar dichos formatos en todas partes. Algunos programas pueden obligarlo a proporcionar las cuatro partes de un quad con puntos, otros pueden no permitir mezclar y combinar decimales y octales, y así sucesivamente.
Además, las direcciones IPv6 complican aún más la lógica de análisis y la aceptabilidad del formato de entrada.
Anexo :
syss señaló que si usa un carácter no válido en uno de los números (por ejemplo, an 8o 9cuando usa octal, a gen modo hexadecimal, etc.) pinges lo suficientemente inteligente como para reconocerlo e interpretarlo como una cadena (-al? -ic?) URL en lugar de como una dirección IP numérica.
(Como alguien que ha tenido numerosos aneurismas y ataques cardíacos tratando de escribir un código supuestamente "simple" para acomodar el número exponencialmente explosivo de permutaciones de valores de datos, aprecio que, al parecer, procesa correctamente todas las variaciones de entrada; en esto caso, al menos 3 1 +3 2 +3 3 +3 4 = 120 variaciones.)
Por lo tanto, mientras que la especificación 010.020.030.040hará ping 8.16.24.32como se esperaba, pasar 010.020.030.080a pingse tratará como una URL en lugar de una dirección IP, como la foo.bar.baz.comque podría (pero lamentablemente no existe). En otras palabras, intenta hacer ping al subdominio 010en el subdominio 020en el dominio 030en el dominio de nivel superior 080. Sin embargo, dado 080que no es un TLD válido (como .com, .nety sus amigos), la conexión falla en el primer paso.
Lo mismo sucede 090.010.010.010cuando el carácter no válido está en un octeto diferente. Del mismo modo, 0xf.0xf.0xf.0xfpings 15.15.15.15, pero 0xh1.0x1.0xg0.0ffalla.
Bueno, supongo que eso es lo que obtienes por no ser fluido en múltiples bases numéricas.
Probablemente sea más fácil y seguro asegurarse de usar siempre direcciones de 4 puntos con cuatro puntos ("40q"? "Cuádruple-cuádruple"?
Así que ve y aprende algunas bases numéricas . Podrá presumir y ser la vida de las fiestas, y como dicen, hay 10 tipos de personas: los que saben binario y los que no.
Ni siquiera pensemos en las direcciones IPv6; ¡Creo que son uno de los 111 sellos!