Lorsque j'essaie d'envoyer une requête ping à l'adresse IP, 10.10.208.57
je n'ai aucune réponse car il n'existe rien dans le réseau avec cette adresse IP.
Cependant, si j'essaie de cingler 10.10.208.
0 à la57
place, une autre adresse IP répond:
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
Étant donné qu'il 10.10.208.47
s'agit d'une imprimante Lexmark E120n, quelle pourrait être l'origine de cet étrange problème?
Réponses:
Ce comportement est en fait dû à une fonctionnalité normale de ping et n'a aucun rapport avec votre matériel réel.
En effet, le préfixe de l'adresse IP (ou d'une partie de celle-ci) par un zéro de tête entraînera l'interprétation du nombre comme octal .
Donc,
057
signifie57
en base 8 qui est 47. Ainsi, ping enverra la requête ICMP à la machine située à l'adresse10.10.208.47
et obtiendra donc une réponse de celle-ci.Notez que vous pouvez également envoyer une requête ping aux adresses en hexadécimal, en utilisant le préfixe 0x au lieu de seulement 0.
Modifier: comme le suggèrent de nombreux commentaires, cette fonctionnalité n'est en fait pas spécifique à
ping
et peut être trouvée dans de nombreux logiciels CLI manipulant des adresses IP.la source
Ping, comme de nombreux autres programmes Unix, utilise les bibliothèques C de votre système Unix pour la résolution de noms. L'une des fonctions utilisées est
inet_aton
.La page de manuel de
inet_aton
dit:Ainsi, lorsque vous utilisez un zéro non significatif, le nombre est interprété comme un octal. Ainsi, 57 = 047 = 0x39.
la source