Pourquoi "ping X" fonctionne-t-il, où "X" est un nombre entier arbtraire?
J'ai donc découvert une étrange bizarrerie de l'utilitaire ping Windows 10. Si vous effectuez un ping sur un nombre entier au lieu d'une adresse IP, il "convertira" ce nombre en une adresse IPv4. La conversion est telle que le premier octet est votre place 256 ^ 3, le deuxième octet est 256^ 2, le troisième est 256^ 1 et le dernier octet est la place "ceux" ou 256^ 0.
Par exemple, "ping 200" lancera 0.0.0.200, mais "ping 400" lancera 0.0.1.144, où le "1" dans le troisième octet représente 256 (256+ 144 = 400).
Une recherche rapide sur Google (même si je ne pouvais pas penser à un excellent terme de recherche) n'a rien apporté.
Mes deux seules théories sont les suivantes:
- Il se peut que dans une itération antérieure du schéma IP (c'est-à-dire les v1, v2 ou v3 inutilisés), le plan consistait simplement à utiliser des nombres entiers uniques. Microsoft, dans son obsession de la rétrocompatibilité, a écrit un algorithme de traduction dans l'utilitaire ping pour gérer de cette manière lorsque ping était le premier coder.
- Il se peut qu'en raison de la façon dont l'utilitaire ping est codé, il prenne normalement une adresse IPv4 valide et la traduit en un seul nombre entier avant de faire quelque chose avec ces données. Ainsi, en guise de vérification du code, s'il voit que l'utilisateur a entré un seul nombre entier, il ignore simplement cette étape de traduction initiale.
Des idées ? Cela a certainement intrigué mes collègues, mais ils étaient aussi désemparés que moi.
EDIT: Je viens de le tester sur mon Arch Linux machine, et je peux confirmer que le comportement existe également là-bas, ce qui discrédite probablement ma première théorie.