Todo mundo está complicando demais com RFCs, classes de IP e outras coisas. Simplesmente execute alguns testes para ver como o pingcomando analisa a entrada IP pelo usuário (remoção estranha de palha):
> 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 você pode ver, o pingcomando (no Windows) permite usar diferentes formatos de endereço IP. Um endereço IPv4 pode ser dividido em quatro partes (“dotted-quad”) da seguinte maneira: A.B.C.De o pingcomando permite que você deixe de fora alguns, preenchendo o padrão da 0seguinte maneira:
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
Se você fornecer apenas uma peça, se estiver abaixo de 255 (o máximo para um octeto), ela será tratada como um octeto como acima, mas se for maior que 255, será convertida e rolada para o próximo campo (ou seja mod 256).
Existem alguns casos extremos, como fornecer mais de quatro partes não parece funcionar (por exemplo, google.como IP do ping não funcionará para um 0.74.125.226.4ou outro 74.125.226.4.0).
Você também pode usar a notação hexadecimal na forma de quad-dotted e flat, mas deve formatá-la pré-pendente 0xpara cada octeto.
Portanto, existem várias maneiras de representar um endereço IP (IPv4). Você pode usar o formato plano ou quadriculado (ou pontilhado triplo, pontilhado duplo ou mesmo pontilhado único) e, para cada um, pode usar (ou até misturar e combinar) decimal, octal e hexadecimal. Por exemplo, você pode executar ping google.comdas seguintes maneiras:
google.com (nome do domínio)
74.125.226.4 (decimal pontilhado)
1249763844 (decimal simples)
0112.0175.0342.0004 (octal pontilhado)
011237361004 (octal plano)
0x4A.0x7D.0xE2.0x04 (hexadecimal pontilhado)
0x4A7DE204 (hexágono plano)
74.0175.0xe2.4 (ಠ_ಠ)
(Graças a Deus que o suporte à notação binária não foi adicionado!)
Aplicação :
No seu caso, o ping 192.168.072usa o terceiro formato na tabela acima ( A.B.0.C), então você está realmente pingando 192.168.0.072. Além disso, como você tem um zero à esquerda na última parte, ele é tratado como octal, que em decimal é 58.
Mistério resolvido.
Observe que, embora o pingcomando do Windows permita uma variedade tão grande de formatos para a entrada e interprete formatos fora do padrão da maneira vista, isso não significa necessariamente que você possa usar esses formatos em qualquer lugar. Alguns programas podem forçar você a fornecer todas as quatro partes de um quadriculado pontilhado, outros podem não permitir a mistura e correspondência de decimal e octal, e assim por diante.
Além disso, os endereços IPv6 complicam ainda mais a aceitabilidade da lógica de análise e do formato de entrada.
Adendo :
syss apontou que, se você usar um caractere inválido em um dos números (por exemplo, um 8ou 9ao usar octal, a gno modo hexadecimal etc.), então pingé inteligente o suficiente para reconhecer isso e interpretá-lo como uma string (-al? URL em vez de como um endereço IP numérico.
(Como alguém que teve vários aneurismas e ataques cardíacos tentando escrever código supostamente "simples" para acomodar o número exponencialmente explosivo de permutações de valores de dados, eu aprecio que ele parece processar corretamente todas as variações de entrada; caso, pelo menos 3 1 +3 2 +3 3 +3 4 = 120 variações.)
Portanto, ao especificar 010.020.030.040o ping 8.16.24.32como esperado, a passagem 010.020.030.080para pingserá tratada como uma URL em vez de um endereço IP - como o foo.bar.baz.comque poderia (mas infelizmente não existe). Em outras palavras, ele tenta executar ping no subdomínio 010no subdomínio 020no domínio 030no domínio de nível superior 080. No entanto, como 080não é um TLD válido (como .com, .nete seus amigos), a conexão falha logo na primeira etapa.
O mesmo acontece com 090.010.010.010o caractere inválido em um octeto diferente. Da mesma forma, 0xf.0xf.0xf.0xfpings 15.15.15.15, mas 0xh1.0x1.0xg0.0ffalha.
Bem, acho que é isso que você ganha por não ser fluente em várias bases de números.
Provavelmente é mais fácil e seguro garantir sempre o uso de endereços com quatro pontos pontilhados ("40q"? "Quaddy-quad"? "Cutie-q"?).
Então vá em frente e aprenda algumas bases numéricas . Você será capaz de se exibir e ser a vida das festas e, como se costuma dizer, existem 10 tipos de pessoas: quem conhece binário e quem não conhece.
Não vamos nem pensar em endereços IPv6; Eu acho que eles são um dos 111 selos !!!