Tout le monde complique à l'excès avec les RFC, les classes IP, etc. Exécutez simplement quelques tests pour voir comment la pingcommande analyse l'adresse IP entrée par l'utilisateur (paillettes superflues supprimées):
> 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:
Comme vous pouvez le voir, la pingcommande (sous Windows) vous permet d'utiliser différents formats d'adresse IP. Une adresse IPv4 peut être décomposé en quatre parties ( « en pointillés-quad ») comme ceci: A.B.C.Det la pingcommande vous permet de laisser quelques - uns, remplissant un défaut de la 0manière suivante:
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 vous ne fournissez qu'une seule partie, si elle est inférieure à 255 (le maximum pour un octet), elle est traitée comme un octet comme ci-dessus, mais si elle est supérieure à 255, elle est convertie et transférée dans le champ suivant. (c.-à mod 256-d.)
Il existe quelques cas extrêmes tels que fournir plus de quatre parties ne semble pas fonctionner (par exemple, google.coml'adresse IP de ping ne fonctionnera pas pour l'un 0.74.125.226.4ou l' autre 74.125.226.4.0).
Vous pouvez également utiliser la notation hexadécimale à la fois en pointillé et quadruple, mais vous devez la formater en pré-en attente 0xpour chaque octet.
Il existe donc de nombreuses façons de représenter une adresse IP (IPv4). Vous pouvez utiliser le format plat ou quadruple pointillé (ou triple pointillé, double pointillé ou même simple pointé) et vous pouvez utiliser (ou même mélanger et assortir) décimal, octal et hexadécimal pour chaque format. Par exemple, vous pouvez faire un ping google.comdes manières suivantes:
google.com (nom de domaine)
74.125.226.4 (point décimal)
1249763844 (décimal plat)
0112.0175.0342.0004 (octal pointillé)
011237361004 (octal plat)
0x4A.0x7D.0xE2.0x04 (hex en pointillé)
0x4A7DE204 (hexagone plat)
74.0175.0xe2.4 (_ಠ)
(Dieu merci, le support de la notation binaire n'a pas été ajouté!)
Application :
Dans votre cas, le ping 192.168.072utilise le troisième format du tableau ci-dessus ( A.B.0.C), vous êtes donc en train de faire un ping 192.168.0.072. De plus, comme vous avez un zéro non significatif sur la dernière partie, elle est traitée comme une valeur octale, ce qui en décimal est 58.
Mystère résolu.
Notez que si la pingcommande Windows autorise une telle variété de formats pour l’entrée et interprète les formats non standard de la manière décrite, cela ne signifie pas nécessairement que vous pouvez utiliser ces formats partout. Certains programmes peuvent vous obliger à fournir les quatre parties d’un quad pointillé, d’autres ne permettent pas de mélanger et d’apparier décimal et octal, et ainsi de suite.
De plus, les adresses IPv6 compliquent davantage la logique d'analyse et l'acceptabilité du format d'entrée.
Addenda :
syss a souligné que si vous utilisez un caractère non valide dans l'un des nombres (par exemple, un 8ou 9lorsque vous utilisez octal, un gen mode hexadécimal, etc.), alors vous êtes pingsuffisamment intelligent pour le reconnaître et l'interpréter comme une chaîne (-al? -ic?) URL au lieu d’adresse IP numérique.
(En tant que personne qui a eu de nombreux anévrismes et crises cardiaques en essayant d’écrire du code soi-disant «simple» pour tenir compte du nombre en expansion exponentielle de permutations de valeurs de données, j’apprécie qu’il - semble sembler - traiter correctement toutes les variations d’entrée; cas, au moins 3 1 +3 2 +3 3 +3 4 = 120 variations)
Ainsi, tout en spécifiant que 010.020.030.040ping sera 8.16.24.32comme prévu, le passage 010.020.030.080à pingsera traité comme une URL plutôt que comme une adresse IP - comme foo.bar.baz.comce qui pourrait (mais n'existe malheureusement pas). En d'autres termes, il essaie d'envoyer une requête ping au sous-domaine 010du sous 020-domaine du domaine du domaine 030de premier niveau 080. Cependant, étant donné que ce 080n’est pas un TLD valide (comme .com, .netet leurs copains), la connexion échoue dès la première étape.
La même chose se produit 090.010.010.010lorsque le caractère non valide se trouve dans un octet différent. De même, 0xf.0xf.0xf.0xfpings 15.15.15.15, mais 0xh1.0x1.0xg0.0féchoue.
Oh bien, je suppose que c'est ce que vous obtenez parce que vous ne parlez pas couramment plusieurs bases de nombres.
Il est probablement plus facile et plus sûr de vous assurer de toujours utiliser des adresses à 4 points («40q»? «Quaddy-quad»? «Cutie-q»?).
Alors avancez et apprenez quelques bases numériques . Vous pourrez montrer et être la vie de fêtes, et comme on dit, il y a 10 types de personnes: celles qui connaissent le binaire et celles qui ne le connaissent pas.
Ne pensons même pas aux adresses IPv6; Je pense qu'ils sont l'un des 111 phoques !!!