Tout le monde complique à l'excès avec les RFC, les classes IP, etc. Exécutez simplement quelques tests pour voir comment la ping
commande 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 ping
commande (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.D
et la ping
commande vous permet de laisser quelques - uns, remplissant un défaut de la 0
maniè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.com
l'adresse IP de ping ne fonctionnera pas pour l'un 0.74.125.226.4
ou 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 0x
pour 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.com
des 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.072
utilise 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 ping
commande 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 8
ou 9
lorsque vous utilisez octal, un g
en mode hexadécimal, etc.), alors vous êtes ping
suffisamment 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.040
ping sera 8.16.24.32
comme prévu, le passage 010.020.030.080
à ping
sera traité comme une URL plutôt que comme une adresse IP - comme foo.bar.baz.com
ce qui pourrait (mais n'existe malheureusement pas). En d'autres termes, il essaie d'envoyer une requête ping au sous-domaine 010
du sous 020
-domaine du domaine du domaine 030
de premier niveau 080
. Cependant, étant donné que ce 080
n’est pas un TLD valide (comme .com
, .net
et leurs copains), la connexion échoue dès la première étape.
La même chose se produit 090.010.010.010
lorsque le caractère non valide se trouve dans un octet différent. De même, 0xf.0xf.0xf.0xf
pings 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 !!!