O ping de um endereço IP responde com um IP diferente

O ping de um endereço IP responde com um IP diferente

Quando tento fazer ping no endereço IP, 10.10.208.57não recebo resposta, pois não existe nada na rede com esse endereço IP.

No entanto, se eu tentar fazer ping10.10.208.057em vez disso, outro endereço 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

Considerando que 10.10.208.47se trata de uma impressora Lexmark E120n, qual poderia ser a origem deste estranho problema?

Responder1

Na verdade, esse comportamento se deve a um recurso normal do ping e não tem relação com o seu hardware real.

Na verdade, prefixar o endereço IP (ou parte dele) com um zero à esquerda fará com que o número seja interpretado comooctal.

Então 057significa que 57na base 8 é 47. Assim, o ping enviará oICMPconsultar a máquina localizada no endereço 10.10.208.47e, portanto, obter uma resposta dela.

Observe que você também pode executar ping em endereços em hexadecimal, usando o prefixo 0x em vez de apenas 0.

Editar: como muitos comentários sugerem, esse recurso não é específico pinge pode ser encontrado em muitos softwares CLI que manipulam endereços IP.

Responder2

O Ping, como muitos outros programas Unix, usa as bibliotecas C do seu sistema Unix para resolução de nomes. Uma das funções utilizadas é inet_aton.

A página de manual inet_atondiz:

Todos os números fornecidos como ``partes'' em um `.' a notação pode ser decimal, octal ou hexadecimal, conforme especificado na linguagem C (ou seja, um 0x ou 0X inicial implica hexadecimal; caso contrário, um 0 inicial implica octal; caso contrário, o número é interpretado como decimal).

Portanto, quando você usa um zero à esquerda, o número é interpretado como um octal. Assim, 57 = 047 = 0x39.

informação relacionada